Nuget打包如何通过命令行设置/更改依赖项版本

时间:2015-12-23 19:26:11

标签: dependencies set nuget version pack

如何在nuspec

期间动态更改nuget pack文件中的相关性版本的问题
<?xml version="1.0"?>
<package >
  <metadata>
    <id>MyPacked.Name</id>
    <version>1.1.1</version>
    <authors>Pawel Cioch</authors>
    <owners>Pawel Cioch</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Some Cool package</description>
    <releaseNotes>Initial Release</releaseNotes>
    <copyright>Copyright 2015</copyright>
    <tags>replace dependency version</tags>
    <dependencies>
      <dependency id="dep1" version="I want version here to be same as package version" />
      <dependency id="dep2" version="2.1.3" />
    </dependencies>
  </metadata>
</package>

请不要问&#34;为什么需要它&#34;

也很抱歉,如果这个问题不明确,但是因为我通过尝试/失败解决了所有问题,现在一切都很明显,所以&#34;我不知道怎么问&#34;

1 个答案:

答案 0 :(得分:3)

可以使用-Version开关

简单地更改<version>标记

nuget pack -Version 2.0.0

nuget文档很少提及替换代币 https://docs.nuget.org/create/nuspec-reference#replacement-tokens

我们可以做的是使用自定义令牌/标签

    ...
    <version>$myVersion$</version>
    ...
    <dependencies>
      <dependency id="dep1" version="$myVersion$" />

现在如何替换它,现在不需要切换-Version,但我们必须使用-Properties switch

nuget pack -Prop myVersion=3.0.0

一些更高级的命令

nuget pack My.ProjName\My.ProjName.csproj -Build -Prop Configuration=Release;myVersion=3.0.0 -OutputDirectory SomeDirHere

为了与powershell(示例)很好地配合,如果对多个属性使用分号,则必须将-Prop值换成双引号

$userVersion = Read-Host 'Enter a valid version you want to use'
nuget pack .\My.ProjName\My.ProjName.csproj -Build -Prop "Configuration=Release;myVersion=$userVersion" -OutputDirectory SomeDirHere

注意:使用nuget预定义的$version$令牌会产生依赖性,但版本将从 AssemblyInfo.cs 获得,上面的想法是每次通过命令行显式设置版本

我希望有人会发现它有用且节省时间