目前我的项目支持2个版本,现在它假设支持3个版本。
目前正在通过x86
& x64
当我在它们之间切换时,在我的项目文件中我有条件加载不同的程序集,例如:
<Reference Include="SExtension" Condition="'$(Platform)' == 'x64'">
<HintPath>..\..\_libBinary\ver1\SExtension.dll</HintPath>
</Reference>
<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
我考虑在here中创建一个名为Configuration
的{{1}}新描述,
然后在项目文件中使用:
ver3
但我想这不是为了那个,所以我正在寻找其他解决方案。
我如何支持第3版?
答案 0 :(得分:0)
如果功能并不真正依赖于平台,那么基于平台的不同功能之间的切换毫无意义,这只是令人困惑。相反,只需使用具有适当默认值的任意属性,并将其传递给命令行。如果您将该属性设置为需要从中提取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