【问题标题】:Use Nuget with custom build configurations将 Nuget 与自定义构建配置一起使用
【发布时间】:2020-08-28 15:47:47
【问题描述】:

我有一个带有一些 nuget 包的 Visual Studio 2019 项目。该项目与构建配置 Release 和 Debug 配合得非常好。 现在我已经创建了自己的自定义构建配置。问题是现在项目没有链接到一些 nuget 包。 我也发现了原因。当我查看一些 nuget 包的 *.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 文件不是一个好的解决方案。因此,我寻找一种解决方案,即我的自定义构建配置继承了库形式的发布或调试。这可能吗?如果可以,怎么办?

【问题讨论】:

  • 我认为您为 c++ 项目安装了 nuget 包,如果您使用该自定义构建道具将库自动包含到项目中,您应该修改目标文件以将新配置添加到条件中,然后它可以识别新配置并自动导入。

标签: visual-studio hyperlink nuget visual-studio-2019 buildconfiguration


【解决方案1】:

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

其实,只能在xxx.targets文件中手动添加新自定义Configuration的判断条件来导入新配置下的lib库。而且没有这样的工具或方法可以让您的自定义构建配置继承库形式的发布或调试。

并且要定义一个新的配置,它本身被赋予一个新的值,并且在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>

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

【讨论】:

    猜你喜欢
    • 2013-10-17
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    相关资源
    最近更新 更多