在我的VS 2017项目中,我引用了docfx.console包,我希望仅在满足特定条件时使用它。但是该软件包可用于所有构建。
这是我的项目的一部分。我希望在配置为Installer/AnyCPU并且VS正在构建net40风格时使用docfx.console。
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net40;netstandard1.3;netstandard2.0</TargetFrameworks>
<!-- ... -->
<Configurations>Debug;Release;Installer</Configurations>
</PropertyGroup>
<ItemGroup Condition=" '$(TargetFramework)'=='net40' ">
<!-- ... -->
<PackageReference Include="docfx.console" Version="2.30.0" Condition="'$(Configuration)|$(Platform)'=='Installer|AnyCPU'" />
</ItemGroup>
<!-- ... -->
</Project>
有没有办法仅在net40的Installer构建中使用docfx.console?
最佳答案
甚至我都在寻找基于条件的nuget包(仅当在DefineConstants中设置了预期常数时才加载)。尽管@Luke Schoen Solution为我工作,但我可以使它在没有外部目标文件的情况下工作。
解决方案是使用包含您的PackageReference选择> 时
确保在具有DefineConstants的PropertyGroup之后具有此块。
<Choose>
<When Condition="$(DefineConstants.Contains('My_CONST'))">
<ItemGroup>
<PackageReference Include="MyPackage">
<Version>1.0.6</Version>
</PackageReference>
</ItemGroup>
</When> </Choose>