gpt4 book ai didi

visual-studio - 覆盖 .nuspec 中的依赖项

转载 作者:行者123 更新时间:2023-12-03 12:18:23 24 4
gpt4 key购买 nike

我想通过打包项目文件来打包我的项目.csproj而不是 .nuspec .但我也想明确指定依赖项。

问题是打包项目文件时(这样我就可以使用项目中的 Prop )<dependencies>.nuspec文件未被使用。

我这样做是为了可以在一个地方(在 AssemblyInfo.cs 中)更改我的 Prop ,而不必更改 .nuspec也与每个版本。我知道我可以打包 .nuspec我可以完全控制的地方,但这已经违背了目的。 (在我可以覆盖依赖项之前,我实际上正在这样做)

有没有办法显式覆盖 .nuspec 中的依赖项? ?

编辑:

合并 developmentDependency几乎奏效了。我在 nuspec 中使用依赖组,出于某种原因 nuget 在打包后将其展平(当然只有在打包 csproj 时)。所以这个:(只是为了演示)

<dependencies>
<group>
<dependency id="Some.Core" version="0.1.0" />
</group>
<group targetFramework="net4">
<dependency id="Microsoft.Bcl.Async" version="1.0.168" />
</group>
<group targetFramework="net45">
<dependency id="Some" version="0.1.0" />
</group>
</dependencies>

变成这样:

<dependencies>
<dependency id="Some.Core" version="0.1.0" />
<dependency id="Microsoft.Bcl.Async" version="1.0.168" />
<dependency id="Some" version="0.1.0" />
</dependencies>

因此,当在不同的组中使用相同的包作为依赖项时,打包时会出现错误:

An item with the same key has already been added.

最佳答案

如果您的 csproj 和 nuspec 文件具有完全相同的名称并且位于同一目录中,则它们在打包时应该可以一起使用,例如

  • 项目目录
    • 我的项目.csproj
    • 我的项目.nuspec

如此呼唤

nuget pack MyProject.csproj

应该从您的 csproj/assemblyInfo/packages.config 等中获取所有隐式数据,然后将该元数据与您的 nuspec 中指定的内容结合起来。当涉及到依赖项时,您可以使用 nuspec 文件中的正常语法包含非隐式依赖项,如下所示

<dependencies>
<dependency id="RouteMagic" version="1.1.0" />
<dependency id="RouteDebugger" version="1.0.0" />
</dependencies>

并且您可以在项目 packages.config 中使用此语法排除一些隐式依赖

“通过向 packages.config 中的包添加 developmentDependency="true"属性,nuget.exe 包将不再将该包作为依赖项包含在内。”

来源

关于visual-studio - 覆盖 .nuspec 中的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30284964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com