Проект Visual Studio: как включить ссылку только для одной конфигурации?
Env.: VS2008 С# project
Мне нужно создать приложение для использования в двух разных средах. В одной из этих сред мне нужно использовать стороннюю сборку DLL.
Я мог бы выделить код, который использует эту DLL, используя блоки #if. Но как я могу условно включить ссылку на DLL в файл проекта CS?
Изменить: womp имеет хороший момент в своем комментарии. Я превратился в отдельный вопрос: будет ли загруженная ссылка на DLL вообще, если она никогда не вызывается?
ТИА,
Ответы
Ответ 1
Разгрузите проект и откройте его как .XML
Найдите тег ссылочного элемента и добавьте атрибут Condition.
Например:
<ItemGroup>
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Xml" />
<Reference Include="MyUtilities.Debug"
Condition="'$(Configuration)'=='Debug'"/>
</ItemGroup>
Обратите внимание, что последняя ссылка теперь имеет условие.
Ответ 2
Я знаю, что это старый пост, но если кто-то еще найдет его, прежде чем они найдут ответ, как и я, это: вам нужно использовать элемент "Выбрать" в файле проекта:
ссылка
Вы можете определить как условные ссылки, так и условную компиляцию в одном месте, поэтому вам не нужно использовать #if в своем коде.
Он работает в SharpDevelop, и, поскольку он содержит документацию по MS, я предполагаю, что он работает в Visual Studio.
Ответ 3
В файле csproj ссылки itemgroup работают в vs 2008 для меня: -
<Reference Include="DRLClasses, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" Condition=" '$(Configuration)' == 'Debug' ">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\Visual Studio User Library\Debug\DRLClasses.dll</HintPath>
</Reference>
<Reference Include="DRLClasses, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" Condition=" '$(Configuration)' == 'Release' ">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\Visual Studio User Library\Release\DRLClasses.dll</HintPath>
</Reference>