使用IncludeReferencedProjects时,为Nuget包依赖项设置确切的版本

时间:2013-06-18 15:37:10

标签: 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文件中的依赖项的情况下执行此操作?

4 个答案:

答案 0 :(得分:0)

您需要做的是编写一个工具来打开生成的包,更改依赖关系限制以及保存包。请注意,除非您有充分的理由这样做,否则不应设置上限。见http://blog.davidebbo.com/2011/01/nuget-versioning-part-2-core-algorithm.html

答案 1 :(得分:0)

在项目的packages.config文件中,指定如下版本:

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

答案 2 :(得分:0)

如果使用-Version指定包版本且与依赖版本相同,则使用此处所述的-Properties https://nuget.codeplex.com/discussions/336207 $ version $

答案 3 :(得分:0)

Nuget说我们应该使用这个语法[version]来设置确切的版本。 示例:

<package id="Newtonsoft.Json" version="[9.0.1]" targetFramework="net45" />

完整说明可在此处找到: https://docs.nuget.org/ndocs/create-packages/dependency-versions

更新:我测试了它,但是我收到了这样的错误:

  

读取文件&#39; C:\ Repo \ MyProject \ MyProj.V1 \ MyProj.V1.Loads \ packages.config&#39;:包ID无效的包版本&#39; Newtonsoft.Json& #39;:&#39; [9.0.1]&#39;