Поддержка более 2-х версий проекта

В настоящее время мой проект поддерживает 2 версии, и теперь предполагается поддержка 3 версий.

В настоящее время это делается через x86 и x64, когда я переключаюсь между ними, в моем файле проекта у меня есть условия для загрузки разных сборок, например:

Вер1

<Reference Include="SExtension" Condition="'$(Platform)' == 'x64'">
   <HintPath>..\..\_libBinary\ver1\SExtension.dll</HintPath>
</Reference>

Вер2

<Reference Include="SExtension" Condition="'$(Platform)' == 'x86'">
   <HintPath>..\..\_libBinary\ver2\SExtension.dll</HintPath>
</Reference>

Таким образом, в зависимости от платформы x86 ИЛИ x64 загружается другая сборка.

Согласно новому требованию, мне нужно добавить поддержку 3-й версии. (в ближайшее время будет еще один)

Я использую TeamCity для создания артефактов различных версий, которые получает конечный пользователь.

TeamCity использует шаги сборки, которые запускают процесс msbuild,

поэтому msbuild /p:Platform=x86 создайте другой артефакт, чем msbuild /p:Platform=x64

Я подумал о создании нового Configuration с именем ver3, как описано в здесь, а затем в файле проекта используйте:

<Reference Include="SExtension" Condition="'$(Configuration)' == 'ver3'">
    <HintPath>..\..\_libBinary\ver3\SExtension.dll</HintPath>
</Reference>

Но я думаю, что это не предназначено для этого, поэтому я ищу другое решение.

Как я могу поддержать 3-ю версию?


person E.Meir    schedule 23.11.2016    source источник


Ответы (1)


Нет смысла переключаться между различными функциями в зависимости от платформы, если функции на самом деле не зависят от платформы, это просто сбивает с толку. Вместо этого просто используйте произвольное свойство с подходящим значением по умолчанию и передайте его в командной строке. Здесь вам даже не нужны условия, если вы установите для этого свойства имя каталога, из которого необходимо извлечь SExtension:

<!-- Put this at the Project Tag level, before the location where it's used -->
<PropertyGroup>
  <!-- Defaults to ver1 if not specified at all -->
  <ExtensionVersion Condition="'$(ExtensionVersion)'==''">ver1</ExtensionVersion>
</PropertyGroup
...
<Reference Include="SExtension">
  <HintPath>..\..\_libBinary\$(ExtensionVersion)\SExtension.dll</HintPath>
</Reference>

Измените свойство как обычно:

msbuild  /p:ExtensionVersion=ver3
person stijn    schedule 23.11.2016