gpt4 book ai didi

Nuget 包不支持程序集版本上的位数

转载 作者:行者123 更新时间:2023-12-04 13:49:34 24 4
gpt4 key购买 nike

我需要nuget pack生成一个只有 3 位数字的包版本(我们想对其进行语义版本控制)但是当我在具有 AssemblyVersion 的 csproj 上调用它时属性设置为“1.0.0”,生成的 nupkg 文件在其元数据(和文件名)中以版本“1.0.0.0”结尾。为什么命令行工具不支持 AssemblyVersion 中指定的位数属性?

我从调用 nuget spec 开始。针对 csproj 文件,它会生成一个像这样的 stub nuspec 文件(它实际上包含更多带有占位符值的标签,但我已经删除了它们,因为我们不需要它们):

<?xml version="1.0"?>
<package >
<metadata>
<id>$id$</id>
<version>$version$</version>
<title>$title$</title>
<authors>$author$</authors>
<owners>$author$</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>$description$</description>
<releaseNotes>Release notes.</releaseNotes>
<copyright>Copyright 2015</copyright>
</metadata>
</package>

将此 nuspec 文件 checkin TFS 与 csproj 文件位于同一文件夹中后,我们现在可以像这样调用 pack:
nuget pack MyProject.csproj

项目的 AssemblyInfo.cs 文件包含明确设置版本的行:
[assembly: AssemblyVersion("1.0.0")]

一切都很好,除了该工具在检索程序集版本时使用 4 位数字。当我右键单击文件资源管理器上的 dll 并转到详细信息时,即使 Windows 也仅显示 3 位数的版本。为什么 NuGet 使用 4 位数字?我可能遗漏了一些明显的东西吗?

在 nuspec 中对版本进行硬编码显然并不理想,因为这样我们就必须在两个不同的地方维护版本号,而它们应该总是相同的。我的意思是,这应该是特殊占位符值 $version$ 背后的想法。 NuGet 本身知道如何从项目中提取。

最佳答案

遇到同样的问题并使用 nuget 的“-version”属性解决了它。它会覆盖 nuspec 文件中的版本。非常适合语义版本控制。

基于上述情况,我猜在开始讨论时它不可用。

关于Nuget 包不支持程序集版本上的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28194498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com