Ссылка на разные сборки в разных конфигурациях

Прежде чем спросить, я прочитал это и это темы. Никакой помощи.

Я использую Visual Studio 2003 (это требует мой работодатель), но я думаю, что ответы на более поздние версии VS также могут быть полезны.

Итак, представьте, что у меня есть два проекта .Net: A - это библиотека классов и B - это приложение. В BI нажмите Добавить ссылку, перейдите на вкладку Проекты и выберите A. В этом сценарии отладочная версия B будет ссылаться на отладочную версию A, а версия выпуска B будет использовать релизную версию A. Теперь представьте, что вместо проекта AI просто две сборки - aD.dll и a.dll. У меня нет ни одного проекта, который бы их создавал. Я хочу, чтобы отладочная версия B ссылалась на aD.dll, а версия выпуска B ссылалась на a.dll
Вопрос 1: Как мне это сделать? < / сильный>

Когда я хочу сослаться на какую-то dll, я перехожу к добавить ссылку -> Обзор и просматриваю свою dll. Но мне нужно указать не полный, а относительный путь.
Вопрос 2: Как это сделать?

Это ЧП, заранее спасибо :)


person Armen Tsirunyan    schedule 05.11.2010    source источник


Ответы (1)


Вы не можете сделать это через IDE, но вы можете сделать это, взломав файл .csproj вручную:

Если у вас уже есть ссылка, скажем, на a.dll:

<Reference Include="a">...</Reference>

... затем попробуйте выполнить пару условий следующим образом:

<Reference Condition="'$(Configuration)' == 'Release'" Include="a">...</Reference>
<Reference Condition="'$(Configuration)' == 'Debug'" Include="aD">...</Reference>

Изменить: Вот объяснение того, что можно поместить в элемент <Reference>: http://msdn.microsoft.com/en-us/library/bb629388.aspx

person Tim Robinson    schedule 05.11.2010
comment
Большое спасибо. И в этом случае я могу указать относительный путь, например Include = ../../Assemblies/Debug/aD.dll? - person Armen Tsirunyan; 05.11.2010
comment
Include= - это имя библиотеки DLL (без расширения), но вы можете поместить то, что вам нравится, внутри элемента <HintPath>. IDE уже должна была предоставить <HintPath>. - person Tim Robinson; 05.11.2010