2013-06-18 63 views
4

我有一个解决方案,其中包含几个项目。每个项目都有它自己的nuspec文件和一些项目的相互引用使用IncludeReferencedProjects时设置Nuget包依赖项的确切版本

当我通过调用

nuget pack MyLibrary.csproj -IncludeReferencedProject 

的NuGet创建一个新的包是足够聪明添加任何引用的项目作为依赖,而不是引进所生成的二进制文件,但它始终将依赖版本

version="1.2.3.4" 

这被解释为1.2.3.4或更高

我希望能够告诉的NuGet的版本设置为

version="[1.2.3.4]" 

,那样依赖总是精确

有什么办法,我可以做到这一点,而不必手动更新和维护的依赖每个项目的nuspec文件?

+0

你有没有找到办法做到这一点的运气? –

回答

0

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

+0

我试图找到一种方法来做到这一点与nuget命令,即。而无需编写额外的工具/脚本。我也没有试图设置一个上限,我试图设置一个确切的版本 –

0

在为您的项目packages.config文件,指定版本是这样的:如果你使用-Version指定

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

这提供了软件包安装,软件包更新等功能,但似乎并不影响“nuget pack” 。 –

+0

@MarkMelville你测试过哪个版本的nuget?我刚刚重新测试了最新版本的nuget,这会影响pack命令。 –

+0

确认这可以与'nuget pack'配合使用 –

0

Nuget说我们应该用这个语法来设置确切的版本。 例子:

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

完整描述可以在这里找到: https://docs.nuget.org/ndocs/create-packages/dependency-versions

更新:我测试了它,但我得到了如下的错误:读取文件'发生

错误C:\ Repo \ MyProject \ MyProj.V1 \ MyProj.V1.Loads \ packages.config':包ID为'Newtonsoft.Json'的无效包版本:'[9.0.1]'

相关问题