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

Paw*_*och 3 dependencies version set pack nuget

期间如何动态更改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>
Run Code Online (Sandbox Code Playgroud)

请不要问“你为什么需要它”

如果问题很模糊,我也很抱歉,但由于我通过尝试/失败解决了它,现在一切似乎都很明显,所以“我不知道如何提问”

Paw*_*och 5

所述<version>标签可以通过使用-Version开关来简单地改变

nuget 包 - 版本 2.0.0

nuget 文档几乎没有提到替换令牌 https://docs.nuget.org/create/nuspec-reference#replacement-tokens

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

    ...
    <version>$myVersion$</version>
    ...
    <dependencies>
      <dependency id="dep1" version="$myVersion$" />
Run Code Online (Sandbox Code Playgroud)

现在如何替换这个,现在不需要开关 -Version,但我们必须使用 -Properties 开关

nuget pack -Prop myVersion=3.0.0
Run Code Online (Sandbox Code Playgroud)

一些更高级的命令

nuget pack My.ProjName\My.ProjName.csproj -Build -Prop Configuration=Release;myVersion=3.0.0 -OutputDirectory SomeDirHere
Run Code Online (Sandbox Code Playgroud)

并且要很好地使用 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
Run Code Online (Sandbox Code Playgroud)

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

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