Visual Studio 2010 DTE: Как сделать добавленную ссылку на DLL абсолютной, а не копируемой

Сводка:

Нам нужно продублировать поведение диалогового окна «Добавить ссылку», используя DTE, когда вы добавляете конкретную DLL (он добавляет запись пути подсказки к ссылке в CSProj файл).

** Примечание: есть еще одно связанное, но не дублированное сообщение от меня здесь: https://stackoverflow.com/questions/6690655/visual-studio-2010-add-in- как-получить-ссылки-подсказки-путь-свойство Пожалуйста, прочтите также эту статью для получения дополнительной информации об этой проблеме. Я добавил приличную награду, чтобы получить ответ на этот вопрос, и с радостью распределю голоса за любые достойные ответы :) *

История на данный момент:

Я программно конвертирую ссылку на проект в прямую ссылку на DLL. используя DTE.

Предполагая, что у меня есть простое решение с Project2 (родительский проект ), который ссылается на Project1 (дочерний проект ) , Я вношу следующие изменения:

project1Reference = FindProjectReference(project2.References, project1);
project1Reference.Remove();
Reference dllReference = project2.References.Add(project1DllPath);

где project1DllPath относится к файлу «c: \where \ Project1 \ Bin \ Debug \ Project1.dll» .

Проблема, которую я пока не могу решить, это что новая ссылка не для "c: \ where \ Project1 \ Bin \ Debug \ Project1.dll" , но вместо этого указывает на "c: \ where \ Project2 \ Bin \ Debug \ Project1.dll" (и файл копируется туда).

Если я добавляю DLL напрямую / вручную с помощью меню «Добавить ссылку», он делает не делайте это копирование.

Как мне добавить ссылку на DLL в существующую библиотеку DLL проекта, не делая копию и ссылаясь на нее вместо этого?

Я попытался добавить dllReference.CopyLocal = false; после добавления, но кроме установки флага это не имело никакого значения. Похоже, что нет возможности изменить путь после создания.

Обновление: я также пытался программно удалить любую зависимость сборки от Project1 из Project2, но это не дало результата.

Ниже приведена разница между файлами csproj:

В качестве проекта:

  
    
      {86B3E118-2CD1-49E7-A180-C1346EC223B9}
      ClassLibrary1
    
  

В качестве ссылки на DLL (путь был полностью утерян):

 
    
      False
    
    ...
  

В качестве ссылки на DLL вручную:

  
    
      ..\ClassLibrary1\bin\Debug\ClassLibrary1.dll
    
    ...
  

Похоже, что возможность указать путь подсказки для ссылки на DLL является ключом . Как задать путь подсказки для ссылки на DLL (при условии, что у вас есть только дескриптор свойства Reference)?

Дополнительная информация (20 июля 2011 г.):

Предложение от Muse VSExtensions ниже не влияет на рассматриваемые библиотеки DLL, поскольку уже была сделана копия из BIN проекта библиотеки DLL в папку BIN родительского проекта. Родительский проект не беспокоится об использовании ссылочного пути, поскольку он уже имеет дочернюю DLL в своей выходной папке.

Также Ссылочные пути проекта сохраняются в проекте .csproj.user файл, а не файл проекта .csproj.

8
задан Community 23 May 2017 в 11:58
поделиться