我有一个可以采用 3 种“风味”之一的应用程序,风味仅取决于项目中引用的 NuGet 包。为了简化构建,我想使用自定义属性来定义风味,然后在包引用上使用条件。应该可以使用 Visual Studio 或使用 MSBuild 命令行来构建应用程序。我将此添加到 PropertyGroup:
<Flavor Condition= "'$(Flavor)'==''">Flavor1</Flavor>
我可以看到自定义属性设置正确,只是忽略了条件这是我尝试过的:
- 如下所述设置 PackageReference 本身的条件:https ://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files#adding-a-packagereference-condition
- 将条件包放在单独的 ItemGroup 中并在那里设置条件
- 与 #2 相同,但使用 Choose+When
只有 #3 有效,并且仅在 Visual Studio 中我需要一个可以在 Visual Studio 和 MSBuild 命令行中工作的解决方案
#1 看起来像这样:
<PackageReference Include="Falvor1Package" Condition="'$(Flavor)'=='Flavor1'">
<Version>1.1.1.1</Version>
</PackageReference>
<PackageReference Include="Falvor2Package" Condition="'$(Flavor)'=='Flavor2'">
<Version>1.1.1.1</Version>
</PackageReference>
#2 看起来像这样:
<ItemGroup Condition="'$(Flavor)'=='Flavor1'">
<PackageReference Include="Falvor1Package">
<Version>1.1.1.1</Version>
</PackageReference>
</ItemGroup>
<ItemGroup Condition="'$(Flavor)'=='Flavor2'">
<PackageReference Include="Falvor2Package">
<Version>1.1.1.1</Version>
</PackageReference>
</ItemGroup>
#3 看起来像这样:
<Choose>
<When Condition="'$(Flavor)'=='Flavor1'">
<ItemGroup>
<PackageReference Include="Falvor1Package">
<Version>1.1.1.1</Version>
</PackageReference>
</ItemGroup>
</When>
</Choose>
<Choose>
<When Condition="'$(Flavor)'=='Flavor2'">
<ItemGroup>
<PackageReference Include="Falvor2Package">
<Version>1.1.1.1</Version>
</PackageReference>
</ItemGroup>
</When>
</Choose>
我正在使用 VS2019 和 MSBuild 16 我错过了什么?