使用IncludeReferencedProject时为Nuget包依赖项设置精确版本

使用IncludeReferencedProject时为Nuget包依赖项设置精确版本,nuget,nuget-package,Nuget,Nuget Package,我有一个包含几个项目的解决方案。每个项目都有自己的nuspec文件,一些项目相互引用 当我通过调用 nuget pack MyLibrary.csproj -IncludeReferencedProject nuget非常聪明,可以将任何引用的项目添加为依赖项,而不是引入生成的二进制文件,但它总是将依赖项版本设置为 version="1.2.3.4" 解释为1.2.3.4或更高 我希望能够告诉nuget将版本设置为 version="[1.2.3.4]" 所以依赖关系总是精确的 是否有任何

我有一个包含几个项目的解决方案。每个项目都有自己的nuspec文件,一些项目相互引用

当我通过调用

nuget pack MyLibrary.csproj -IncludeReferencedProject
nuget非常聪明,可以将任何引用的项目添加为依赖项,而不是引入生成的二进制文件,但它总是将依赖项版本设置为

version="1.2.3.4"
解释为1.2.3.4或更高

我希望能够告诉nuget将版本设置为

version="[1.2.3.4]"
所以依赖关系总是精确的


是否有任何方法可以做到这一点,而不必手动更新和维护每个项目的nuspec文件中的依赖项?

您需要做的是编写一个工具,打开生成的包,更改依赖项约束,然后保存包。请注意,除非有很好的理由,否则不应该设置上限。请参见项目的packages.config文件中的,指定如下版本:

<packages>
  <package id="example.dll" version="1.3" targetFramework="net451" allowedVersions="[1.3]" />
</packages>


使用此处所述的-Properties,或者如果使用-version指定软件包版本,则只使用-version$,并且它与依赖项版本相同。

我试图找到一种使用nuget命令的方法,即不必编写额外的工具/脚本。我也没有试图设置上限,我只是试图设置一个精确的版本。这在软件包安装、软件包更新等过程中提供了功能。。但似乎根本不会影响“nuget pack”。@MarkMelville你用什么版本的nuget进行了测试?我刚刚用最新版本的nuget重新测试过,这确实会影响pack命令。你有没有找到一种方法来做到这一点?