将 Nuget 与自定义构建配置结合使用

Use Nuget with custom build configurations

我有一个 Visual Studio 2019 项目,其中包含一些 nuget 包。该项目与构建配置发布和调试配合得很好。 现在我已经创建了自己的自定义构建配置。问题是现在项目不 link 一些 nuget-packages。 我也发现了原因。当我查看一些 nuget-packages 的 *.targets 文件时,我看到类似这样的内容:

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
    <Link>
      …
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
    <Link>
      …
    </Link>
  </ItemDefinitionGroup>
  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
    <Link>
      …
    </Link>

我认为操作*.targets 文件不是很好的解决方案。所以我寻找一个解决方案,我的自定义构建配置继承库形式发布或调试。这可能吗?如果可能的话如何?

I think it’s no good solution to manipulate the *.targets file. So I look for a solution, that my custom build configurations inherits the Libraries form Release or Debug. Is this possible and if so how?

其实,只能在xxx.targets文件中手动添加新自定义Configuration的判断条件,才能导入新配置下的lib库。并且没有这样的工具或方法可以让您的自定义构建配置从 Release 或 Debug 继承 Libraries。

定义一个新的配置,它本身被赋予了一个新的值并且在proj文件中,不可能继承DebugRelease 除非被覆盖,否则为新值。

因此,在XML中,单个值不能在不改变其值的情况下继承某个值的特性。

作者在自己创建包的时候,就已经确定了默认的Debug或者Release模式并进行操作,并不是你新建的自定义配置。

所以要手动修改xxx.targets文件

解决方案

1) 手动将新的配置条件添加到 xxx.targets 文件中。

如果你想让它和Debug一样,你可以试试这个:

  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32' or $(Configuration)|$(Platform)'=='xxx(New Configuration)|Win32 ">
    <Link>
      …
    </Link>
  </ItemDefinitionGroup>

<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32' or $(Configuration)|$(Platform)'=='xxx(New Configuration)|x64 ">
    <Link>
      …
    </Link>
  </ItemDefinitionGroup>

我认为这很容易,完成后,您应该在新的自定义配置下构建项目以将这些库路径包含在其中。