You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dotnet构建版本号报错:四段数值类型是否固定为UNSIGNED16?

问题描述

我有一款应用,使用以下命令可成功构建:

dotnet build /p:Version=1.2.3.65534 LicenseReporter.csproj

但使用如下稍有差异的命令构建时:

dotnet build /p:Version=1.2.3.65535 LicenseReporter.csproj

出现编译时错误:

T:\Development\License Reporter\obj\Debug\net6.0-windows\LicenseReporter.AssemblyInfo.cs(20,55): error CS7034: The specified version string does not conform to the required format - major[.minor[.build[.revision]]] [T:\Development\License Reporter\LicenseReporter.csproj]

请问版本号的四个数值字段类型是否固定为UNSIGNED16,还是可以修改?


解答

在.NET的程序集版本规范中,版本号的四个字段(主版本、次版本、构建版本、修订版本)确实固定为无符号16位整数(UInt16)的范围,但实际有效值是0到65534——这就是你使用65535触发编译错误的原因。

这个限制是.NET框架对程序集版本的硬性规范,无法直接修改。因为程序集版本是CLR识别程序集的核心标识之一,CLR内部用UInt16类型存储这四个字段,超出范围的数值会直接触发格式校验错误。

如果需要使用更大的版本号数值,你可以考虑两种替代方案:

  • 改用文件版本(FileVersion):文件版本的每个字段支持32位整数范围,数值上限远高于程序集版本;
  • 分离产品版本与程序集版本:使用语义化版本号(SemVer)作为对外展示的产品版本,而程序集版本保持在0-65534的规范范围内。

内容的提问来源于stack exchange,提问作者Brian THOMAS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:07:48