Подтвердить что ты не робот

Есть ли способ указать ссылки на сборку на основе конфигурации сборки в Visual Studio?

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

Однако для каждой версии приложения требуется ссылка на соответствующую сборку для этой версии программного обеспечения. Они загружают свои сборки в GAC, поэтому, даже если бы я мог указать версию сборки для использования на основе конфигурации сборки, все будет в порядке. Есть ли способ сделать это изнутри VS или мне нужен внешний инструмент сборки?

4b9b3361

Ответ 1

Есть способ сделать это, но вам придется вручную редактировать файлы проектов. Файлы проекта могут иметь атрибут Condition, применяемый к ним во многих элементах, в том числе для ссылок.

Вы можете добавить их в свои ссылки, чтобы указать, когда нужно использовать ссылку:

<Reference Include="Product, Version=1.0.0.0" Condition="'$(Configuration)'=='V1'">
</Reference>
<Reference Include="Product, Version=2.0.0.0" Condition="'$(Configuration)'=='V2'">
</Reference>
<Reference Include="Product, Version=3.0.0.0" Condition="'$(Configuration)'=='V3'">
</Reference>

Затем вы определяете несколько конфигураций сборки (V1, V2, V3), и каждая ссылка будет включена только в соответствующую выбранную конфигурацию сборки.

Объедините это с условными символами компиляции и операторами #if в вашем коде, и вы сможете делать то, что хотите.

Следует быть осторожным, если вы это сделаете, так это то, что Visual Studio легко удалить условные атрибуты из файла проекта.

Ответ 2

<Reference Include="log4net, Version=1.2.11.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\SharedLibs\log4net\$(Platform)\$(Configuration)\log4net.dll</HintPath>
</Reference>

Вы можете заменить путь подсказки на свойства:

$(Конфигурация) эквивалентна Release/Debug или любой другой конфигурации, которую вы имеете. $ (Платформа) эквивалентна x86/x64/Any CPU

Если ваша конфигурация включает Any CPU, вам нужно будет поместить одиночные кавычки вокруг $(Конфигурация)

Также обратитесь к параметрам условия, на которые ссылаются adrianbanks