首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重写.nuspec中的依赖项

重写.nuspec中的依赖项
EN

Stack Overflow用户
提问于 2015-05-17 08:36:30
回答 1查看 1.4K关注 0票数 3

我想通过打包项目文件.csproj而不是.nuspec来打包我的项目。但我也希望显式地指定依赖项。

问题是,在打包项目文件(以便我可以使用项目中的道具)时,没有使用.nuspec文件中的.nuspec

我这样做是为了能够在一个地方(在AssemblyInfo.cs中)更改我的道具,而不必在每个版本中更改.nuspec。我知道我可以在我完全控制的地方打包.nuspec,但这已经违背了我的目的。(我现在实际上就是这样做的,直到我可以覆盖依赖项为止)

是否有方法显式地覆盖.nuspec中的依赖项?

编辑:

developmentDependency结合在一起,几乎可以使用。我在nuspec中使用依赖组,由于某种原因,nuget在打包后(当然只有在打包csproj时)才会将它压平。所以这个:(只是为了演示)

代码语言:javascript
复制
<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>

变成这样:

代码语言:javascript
复制
<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.

EN

回答 1

Stack Overflow用户

发布于 2015-05-18 10:01:56

您的csproj和nuspec文件在打包时应该一起工作,如果它们的名称完全相同,并且生活在同一个目录中。

  • ProjectDirectory
    • MyProject.csproj
    • MyProject.nuspec

所以打电话

代码语言:javascript
复制
nuget pack MyProject.csproj

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

代码语言:javascript
复制
<dependencies>
  <dependency id="RouteMagic" version="1.1.0" />
  <dependency id="RouteDebugger" version="1.0.0" />
</dependencies>

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

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

资料来源

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30284964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档