2014-09-01 188 views
1

当我使用nuget打包新包时,我遇到了一个问题,那就是当我通过命令行指定版本时,它将它应用于包而不是依赖关系。 I.E.带有版本参数和依赖关系的nuget打包

NuGet.exe包myproject.csproj -Version 3.0.4.3373

与nuspec文件

<?xml version="1.0"?> 
<package> 
<metadata> 
    <id>MyProject</id> 
    <version>$version$</version> 
    <authors>Me</authors> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>A description.</description> 
    <copyright>Copyright 2014</copyright> 
    <dependencies> 
     <dependency id="My.First.Dependency" version="[$version$]" /> 
     <dependency id="My.Second.Dependency" version="[$version$]" /> 
    </dependencies> 
</metadata> 
</package> 

导致包的版本3.0.4.3373,但依赖都写成1.0.0.0,这不是我想要的。我希望他们成为相同的版本。

我在这里弄错了什么。我确信我之前有过这个工作。我想我已经使用了2.5和2.8的nuget.exe。

+0

看起来像重复http://stackoverflow.com/questions/37884587/nuget-pack-does-not-recognize-version-in-dependencies但没有足够的权限来标记它..所以我在那里添加了答案以及 – 2017-01-30 13:55:50

回答

0

似乎是一个非常老的bug,同时使用的csproj与nuspec(这仍然是那里的NuGet 3.5)相结合......让这个工作的

一种方式是通过添加额外的属性

<?xml version="1.0"?> 
<package> 
<metadata> 
    <id>MyProject</id> 
    <version>$version$</version> 
    <authors>Me</authors> 
    <requireLicenseAcceptance>false</requireLicenseAcceptance> 
    <description>A description.</description> 
    <copyright>Copyright 2014</copyright> 
    <dependencies> 
     <dependency id="My.First.Dependency" version="[$PackageVersion$]" /> 
     <dependency id="My.Second.Dependency" version="[$PackageVersion$]" /> 
    </dependencies> 
</metadata> 
</package> 

,然后更新您的命令

NuGet.exe pack myproject.csproj -Version 3.0.4.3373 -Properties "PackageVersion=3.0.4.3373" 

这不是干净的,但它的作品。