在我的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>

09-06 04:11