Visual studio 重写.nuspec中的依赖项

Visual studio 重写.nuspec中的依赖项,visual-studio,nuget,nuget-spec,Visual Studio,Nuget,Nuget Spec,我想通过打包项目文件.csproj而不是.nuspec来打包我的项目。但是我还想显式地指定依赖项 问题是,在打包项目文件时(以便我可以使用项目中的道具),.nuspec文件中的没有被使用 我这样做是为了在一个地方(在AssemblyInfo.cs中)更改我的道具,而不必更改.nuspec,也可以更改每个版本。我知道我可以把.nuspec打包到我可以完全控制的地方,但这已经达不到目的了。(实际上我现在正在做这件事,直到我可以覆盖依赖项为止) 是否有办法在.nuspec中显式重写依赖项 编辑: 合并

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

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

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

是否有办法在
.nuspec
中显式重写依赖项

编辑:

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


变成这样:

<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>

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


已添加具有相同密钥的项。

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

  • 项目目录
    • MyProject.csproj
    • MyProject.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>

您可以在projects packages.config中使用此语法排除某些隐式依赖项

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

来源


那么您想同时使用csproj和nuspec来打包项目?还有这个问题。包装时,nuspec中的任何内容都将覆盖csproj/assemblyInfo,但您的问题到底是什么。您是否缺少依赖项?你想排斥其他人吗?@Kazuo我想使用csproj(我肯定它使用了nuspec的某些部分)。问题是,除非我直接使用nuspec,否则我在nuspec中指定的依赖项将不会被选取。因此,您正试图将其打包,然后在另一个项目中使用您的新包?@Kazuo是的,我只能这样处理它,因为我们有某些需要“依赖”仅当针对另一个项目(如net4)中的某个框架时,才能在多个包上使用。如果没有压扁,一切都很好,我真的不知道nuget为什么在这种情况下这么做。我很确定我尝试过类似的方法,但我会再试一次,看看结果。如果开发依赖有效,我将不得不接受它,尽管这将是一种痛苦。
<dependencies>
  <dependency id="RouteMagic" version="1.1.0" />
  <dependency id="RouteDebugger" version="1.0.0" />
</dependencies>