Dan*_*ars 10 .net msbuild .net-core
我正在尝试使用.net Core工具RC4 dotnet pack命令创建带后缀的nuget包.
我可以成功创建"MyProject.1.2.3.nupkg",但我想要"MyProject.1.2.3-beta.nupkg".
根据这里的文档--version-suffix"使用指定的字符串更新 - *包版本后缀中的星号."
我已经设法找到了dotnet pack从哪里获得它的版本--netnet pack使用msbuild在使用<version/> csproj文件中的元素的封面下.例如,<version>1.2.3</version>创建一个名为"MyProject.1.2.3.nupkg"的文件.
如果我将<version/>csproj 设置为1.2.3并指定--version-suffix beta,那么它不会附加-beta但它会构建.
如果我设置版本<version>1.2.3-*</version>然后dotnet恢复休息说'1.2.3-*'不是有效的版本字符串.
我想我很亲密; 我错了什么?
Ric*_*ana 23
根据文档,该Version属性覆盖包装上的版本,而不是使用VersionPrefix.
<PropertyGroup>
<VersionPrefix>1.0.0</VersionPrefix>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
并使用命令打包解决方案:
dotnet pack --version-suffix beta
Run Code Online (Sandbox Code Playgroud)
您也可以选择设置VersionPrefix,并VersionSuffix在.csproj文件中.
<PropertyGroup>
<VersionPrefix>1.0.0</VersionPrefix>
<VersionSuffix>alpha</VersionSuffix>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
该--version-suffix参数仅设置$(VersionSuffix)msbuild 参数。从dotnet pack 文档:
在 .csproj 文件中将项目的版本后缀配置为 $(VersionSuffix) 后,打包当前项目并使用给定的后缀更新生成的包版本:
Run Code Online (Sandbox Code Playgroud)dotnet pack --version-suffix "ci-1234"
现在,我想的是,--version-suffix只适用于该<VersionPrefix>在的csproj价值,也没有设置版本前缀的机制。
您可以使用语法通过调用覆盖任何msbuild 参数。如果您从 shell 终端调用它,例如 git bash,则需要将其输入为.dotnet/p:Parameter=Value//p:Parameter=Value
现在,我实际上发现避免整个前缀/后缀恶作剧要容易得多,因为它对我来说总是很脆弱。我只是简单地使用<Version>我的 csproj 中定义的属性,如下所示:
dotnet pack --version-suffix "ci-1234"
Run Code Online (Sandbox Code Playgroud)
编辑:我不确定此行为是否已更改或是否
dotnet始终支持此行为,但似乎不需要上述 csproj 更改即可在dotnet pack操作期间正确设置版本。这实际上很有意义,因为 csproj 文件中的 xml 标记只是设置 msbuild 属性,而/p:Property=Value语法也设置了这些属性。
然后对于您的自动构建,您可以根据需要解析前缀/后缀,然后将它们与 a 组合-以生成完整的版本字符串。另一个未记录的要求是版本后缀必须以符合 semver 的字符开头。一个常见的后缀是这样的ci-<unix-timestamp>。
<Version>$(Version)</Version>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7430 次 |
| 最近记录: |