2010-12-10 3 views
14

Есть ли в любом случае ссылка может быть добавлена ​​в решение программно?C# Visual Studio ... добавление ссылок программно

У меня есть кнопка надстройки, когда пользователь нажимает ее, я хочу, чтобы ссылка была добавлена. Это возможно?

+1

Какие приложения вы развивается, что требует этого? – Bernard 2010-12-10 15:18:52

+0

Вам интересно узнать, возможно ли это, или в _how_, чтобы достичь этого? – 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 
2

Существует пример на CodeProject.

Функциональность содержится в пределах одного класса elRefManager, а метод для вызова - CheckReferences. Код можно посмотреть на here, выбрав файл elRefManager.cs с левой стороны.

Как видно из статьи, которую вы могли бы сделать ...

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"); 
} 
Смежные вопросы