我有一个包含多个项目的解决方案。每个项目都有自己的nuspec文件,有些项目互相引用
当我通过调用
创建一个新包时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
答案 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;