Reference3.SourceProject Property


Gets a Project object if the reference is a project. Otherwise, it returns Nothing (a null object).

 property EnvDTE::Project ^ SourceProject { EnvDTE::Project ^ get(); };
 property EnvDTE::Project ^ SourceProject { EnvDTE::Project ^ get(); };
public EnvDTE.Project SourceProject { [System.Runtime.InteropServices.DispId(16)] get; }
[<get: System.Runtime.InteropServices.DispId(16)>]
member this.SourceProject : EnvDTE.Project
Public ReadOnly Property SourceProject As Project

Property Value


Returns a Project object.




This example iterates through all the references and displays the name of the SourceProject, if there is one. To run this example as an add-in, see How to: Compile and Run the Automation Object Model Code Examples. Open a Visual Basic or Visual C# project before running this example.

Imports VSLangProj  
Imports VSLangProj2  
Imports VSLangProj80  
Public Sub OnConnection(ByVal application As Object,_  
 ByVal connectMode As ext_ConnectMode, ByVal addInInst As Object, _  
 ByRef custom As Array) Implements IDTExtensibility2.OnConnection  
    applicationObject = CType(application, DTE2)  
    addInInstance = CType(addInInst, AddIn)  
End Sub  
Public Sub DisplaySourceProjectName(ByVal dte As DTE2)  
    ' The first project is a Visual Basic or C# project.  
    Dim vsProject As VSProject2 =_  
    CType(applicationObject.Solution.Projects.Item(1).Object, _  
    Dim aRef As Reference3  
    Dim refStr As String  
    refStr = ""  
    Dim project As EnvDTE.Project  
    For Each aRef In vsProject.References  
        project = aRef.SourceProject  
        If project Is Nothing Then  
            refStr += (aRef.Name & " has no source project." & vbCr _  
            & vbCr)  
            refStr += (aRef.Name & " has a source project named " _  
            & project.Name & vbCr & vbCr)  
        End If  
End Sub  
using System.Windows.Forms;  
using VSLangProj;  
using VSLangProj2;  
using VSLangProj80;  
public void OnConnection(object application,  
 ext_ConnectMode connectMode, object addInInst, ref Array custom)  
    applicationObject = (DTE2)application;  
    addInInstance = (AddIn)addInInst;  
public void DisplaySourceProjectName(DTE2 dte)  
    // The first project is a Visual Basic or C# project.  
    VSProject2 aProject =   
    Reference3 aRef = null;  
    string refStr = null;  
    refStr = "";  
    EnvDTE.Project project = null;  
    foreach (VSLangProj80.Reference3 temp in aProject.References)  
        aRef = temp;   
        project = aRef.SourceProject;  
        if (project == null)  
            refStr += (aRef.Name + " has no source project." + "\n"   
+ "\n");  
            refStr += (aRef.Name + " has a source project named "   
+ project.Name + "\n" + "\n");  


For one project to use objects built by a second project, the first project must contain a reference to the second project. In such a case, the SourceProject property can return a Project object for the second project.

Applies to