我正在try 从我的C#Class库项目创建NuGet包.它使用设置为AssemblyInfo.cs的自动版本控制:

[assembly: AssemblyVersion("0.5.*")] 

但包裹信息取自.csproj文件中的Version属性.

因此,我必须在两个文件中更新两次版本,或者从AssemblyInfo.cs中删除版本并停止使用自动版本控制(看起来.csproj中不支持它).

有没有方法可以设置包版本(在我的例子中为0.5)并在仅更新一个文件中的版本的同时保持文件的自动版本控制?

推荐答案

answer表明可以在仅.csproj的方法中自动增加AssemblyVersion.对我来说,只要包括下面一个就足够了.

<Deterministic>false</Deterministic>

为了避免必须多次调整版本号的固定部分(此处为:0.5),您可以设置一个变量并从其他版本标签中引用它.

.csproj文件的下面片段显示了变量_versionNumber, 在AssemblyVersion中使用,该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>

Csharp相关问答推荐

WeakHandle .NET核心与.NET框架

单元测试和MOQ,最佳解决方案

无法使用并行库并行化我的代码

List T.AddRange在传递ConcurrentDictionary作为参数时引发ArgumentExcellent

使用GeneratedComInterfaceProperty的.NET 8 COM类对于VB 6/SYS或ALEViewer不可见

System.Data.SQLite:判断SQLite数据库是否为空(任何表中至少有一行)

更改对象的旋转方向

EF Core. Income和. AsNoTracking正确用法

为什么总输出就像12.3没有一分一样?

AsNoTrackingWithIdentitySolutions()似乎不起作用?

C#XmlSerializer-输出控制新行的多个XML片段

什么时候接受(等待)信号灯?尽可能的本地化?

.NET并发词典交换值

什么类型的对象存储在大对象堆(LOH)中

基于C#和ANGING的SignalR实时聊天流媒体应用

CRL已过期,但ChainStatus告诉我RevocationStatus未知

EF Core:如何对关系属性进行建模?

Linq SELECT的多条指令

使用LibraryImport在多个dll中导入相同的函数

HttpClient,上传文件时实现进度