2010-12-10 85 views
14

反正可以通過編程方式將引用添加到解決方案嗎?c#Visual Studio ...以編程方式添加引用

我有一個附加按鈕,當用戶按下它時,我想要添加一個引用。這可能嗎?

+1

什麼樣的應用,你發展需要呢? – Bernard 2010-12-10 15:18:52

+0

你有興趣知道這是可能的嗎? – Oded 2010-12-10 15:19:04

+0

這是可能的。我以前做過。我不記得我曾經這樣做的代碼,雖然 – scott 2010-12-10 15:19:12

回答

6

像這樣的事情我還沒有測試它

獲得環境

EnvDTE80.DTE2 pEnv = null; 
Type myType = Type.GetTypeFromProgID("VisualStudio.DTE.8.0");   
pEnv = (EnvDTE80.DTE2)Activator.CreateInstance(myType, true); 

得到解決。

Solution2 pSolution = (Solution2)pEnv.VS.Solution; 

拿到項目要

Project pProject = pSolution.Projects[0]; 

添加引用

pProject.References.Add(string referenceFilePath); 
1

System.Assembly.load允許您調用庫中未使用程序構建的函數。


如果要添加對項目的引用,以便在解決方案中使用以下內容。基本上和@Scots的答案一樣。

我做到了,在宏是VB,但我敢肯定,你可以得到的想法

DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate() 
    Dim objProject As EnvDTE.Project 
    Dim i As Long 
    i = DTE.Solution.Projects.Count 
    For Each objProject In DTE.Solution.Projects 
     If (objProject.Name() = "csCA") Then 
      Dim vsproj As VSLangProj.VSProject 
      vsproj = objProject.Object 
      vsproj.References.Add("C:\Users\test.dll") 
     End If 
    Next 
+0

爲什麼倒票?這正是***如何加載插件,而不使用第三方庫。 'Assembly.Load'然後'Activator.CreateInstance' – jgauffin 2010-12-10 15:22:31

+2

這不會添加對解決方案的引用,它只會爲正在運行的代碼加載一個'Assembly'。 – 2010-12-10 15:22:57

+0

有些人只是奇怪!我已經提高了 - 感謝回覆。 – 2010-12-10 15:23:38

2

有上CodeProject一個例子。

功能包含在一個類elRefManager中,調用的方法是CheckReferences。通過選擇左邊的elRefManager.cs文件可以查看代碼here

正如你可以做的文章中看到...

private void button1_Click(object sender, System.EventArgs e) 
{ 
    int ec; 
    ec=elRefManager.CheckReferences(null, new string[] {textBox1.Text}); 

    if (ec<0) 
     MessageBox.Show("An error occurred adding this reference"); 
    if (ec>0) 
     MessageBox.Show("Could not add " + textBox1.Text + 
        "\nCheck its spelling and try again"); 
} 
+0

這與Darren要求的東西直接相關。他問如何從一個*插件編程式地添加對項目的引用,這意味着他可以訪問DEV實例/解決方案/項目系統。他不*詢問如何在運行時動態加載程序集。 – casperOne 2010-12-10 15:34:09

+0

我會說你應該在文章中指出Darren可以看看代碼的位置,以弄清楚如何將它集成到他的加載項中(這是一個外部程序,它訪問運行的對象表,然後與相同的接口進行接口並添加-in會)。 – casperOne 2010-12-10 15:35:16

+0

@casperOne相應更新... – 2010-12-10 15:41:17

相關問題