Nuget pack 如何通过命令行 set/change 依赖版本

Nuget pack how to set/change dependency version via command line

如何在 nuget pack

期间动态更改 nuspec 文件中的依赖版本的问题
<?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>

请不要问"why do you need it"

如果问题不明确,我也很抱歉,但由于我通过 try/fail 解决了它,现在一切似乎都很明显所以 "I don't know how to ask"

只需使用 -Version 开关即可更改 <version> 标签:

nuget pack -Version 2.0.0

您也可以使用 Replacement Tokens。我们可以做的是像这样使用自定义 token/tag:

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

现在要替换此标记,-Version 开关不会执行。我们必须改用 -Properties 开关:

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 获得,而上面的想法是设置通过命令行明确显示版本。

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