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包将不再将该包作为依赖项包含
来源
<dependencies>
<dependency id="RouteMagic" version="1.1.0" />
<dependency id="RouteDebugger" version="1.0.0" />
</dependencies>