我正在尝试从我的 C# 类库项目创建 NuGet 包。它使用
AssemblyInfo.cs
: 中设置的自动版本控制
[assembly: AssemblyVersion("0.5.*")]
但是包信息是从
Version
文件的 .csproj
属性中获取的。
因此,我必须在两个文件中更新版本两次,或者从
AssemblyInfo.cs
中删除版本并停止使用自动版本控制(看起来 .csproj
中不支持它)。
有没有办法设置包版本(在我的示例中为
0.5
)并保持文件的自动版本控制,同时仅更新一个文件中的版本?
这个答案表明,可以通过仅
.csproj
的方法实现自动版本增量。<Deterministic>false</Deterministic>
为了避免多次调整版本号的固定部分 - 这里:
0.5
- 可以设置一个变量并从其他版本标签中引用它。
下面的
.csproj
文件片段显示了一个变量 _versionNumber
,
用于 AssemblyVersion
,添加了 *
通配符,并按原样用于 Version
等。
<Project>
<PropertyGroup>
<Deterministic>false</Deterministic>
<_versionNumber>0.5</_versionNumber>
<AssemblyVersion>$(_versionNumber).*</AssemblyVersion>
<Version>$(_versionNumber)</Version>
<-- Any other version attributes of interest-->
<FileVersion>$(_versionNumber)</FileVersion>
<InformationalVersion>$(_versionNumber)</InformationalVersion>
<-- More tags -->
</PropertyGroup>
</Project>