Проект 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>