VB.Net - MSBuild配置 - 有选择地包含要构建的文件

时间:2014-10-28 23:46:57

标签: .net msbuild

我正在寻找一种方法来根据指定的配置选择性地包含一组第三方DLL。版本1和版本2的引用不需要更改,只需要更改构建中包含的DLL。

更具体地说,Version1和Version2都包含相同的DLL,只是不同的版本。所以他们都有例如库:

  • Library.Common.dll
  • Library.Orange.dll
  • Library.Red.dll

我的代码然后引用这些DLL中定义的接口/类/命令。我希望能够轻松地将这些DLL的Version1版本用作内容,并将这些DLL的Version2版本用作内容。

理想情况下,我可以做类似的事情:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_Version1|AnyCPU'">
    <OutputPath>bin\Release_Version1\</OutputPath>
    <!-- Looking for the correct way to do the line below -->
    <IncludeItemGroup name="Version1"/>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release_Version2|AnyCPU'">
    <OutputPath>bin\Release_Version2\</OutputPath>
    <!-- Looking for the correct way to do the line below -->
    <IncludeItemGroup name="Version2"/>
</PropertyGroup>

<ItemGroup Label="Version1">
    <Content Include="lib\Version1\*.dll" />
</ItemGroup>
<ItemGroup Label="Version2">
    <Content Include="lib\Version2\*.dll" />
</ItemGroup>

有人对此提出了很好的建议吗?

1 个答案:

答案 0 :(得分:1)

根据您的代码,您似乎希望为每个ItemGroup元素添加与$(Configuration)的值相关的条件。

<ItemGroup Label="Version1" Condition=" '$(Configuration)' == 'Release_Version1' ">
    <Content Include="lib\Version1\*.dll" />
</ItemGroup>
<ItemGroup Label="Version2" Condition=" '$(Configuration)' == 'Release_Version2' ">
    <Content Include="lib\Version2\*.dll" />
</ItemGroup>