繁体   English   中英

在构建时设置.net核心库程序集/文件/ nuget包版本

[英]Setting .net core library assembly/file/nuget package version at build time

我是在构建时设置我的.net核心库的汇编版本(以及文件版本和nuget包版本)的方法。 我的库是使用最新的Visual Studio 2017 RC编写的,所以没有更多的projects.json文件,并且由TeamCity构建,使用标准的powershell buildscript调用dotnet restore dotnet build dotnet test ,当然还有dotnet pack

一直在扫描网络寻找一个优雅的解决方案,但没有发现任何接近它的东西。 我在interweb上找到的只是现在过时的xprojprojects.json格式。

我很惊讶dotnet builddotnet pack命令不支持开箱即用。

谢谢 :)

如果有其他人出现并需要这个,请将其添加到您的csproj:

<PropertyGroup>
    <Version>1.2.3.4</Version>
    <PackageId>$(AssemblyName)</PackageId>
    <Title>My Super Library</Title>
    <AssemblyTitle>$(AssemblyName)</AssemblyTitle>
    <Company>AwesomeCo, Inc.</Company>
    <Product>My Super Library</Product>
    <Copyright>Copyright © AwesomeCo, Inc. 2016-2017</Copyright>
    <Description>There can be only one.</Description>

    <GenerateAssemblyInfo>true</GenerateAssemblyInfo>
    <GenerateAssemblyTitleAttribute>true</GenerateAssemblyTitleAttribute>
    <GenerateAssemblyConfigurationAttribute>true</GenerateAssemblyConfigurationAttribute>
    <GenerateAssemblyCompanyAttribute>true</GenerateAssemblyCompanyAttribute>
    <GenerateAssemblyProductAttribute>true</GenerateAssemblyProductAttribute>
    <GenerateAssemblyCopyrightAttribute>true</GenerateAssemblyCopyrightAttribute>
    <GenerateAssemblyVersionAttribute>true</GenerateAssemblyVersionAttribute>
    <GenerateAssemblyInformationalVersionAttribute>true</GenerateAssemblyInformationalVersionAttribute>
</PropertyGroup>

我们的PackageId显然与我们的项目名称相同,但您可以更改它。

您可以在csproj中硬编码$(版本),或者在发布/打包时将其发送到:

dotnet publish /property:Version=1.2.3.4

对于那些仍然想知道如何在不大量修改csproj文件的情况下执行此操作的人,您可以将msbuild params与您的dotnet命令一起传递,在这种情况下,我们可以简单地执行

dotnet build /p:Version=1.2.3
dotnet publish /p:Version=1.2.3

这会将程序集和文件版本都设置为1.2.3 我已经验证了.Net Core 2 SDK

我知道这已经得到了回答,但是有一种不同的方法使用环境变量并且不需要所有标签

编辑项目文件(csproj)并包含以下基于条件的版本标记

<Version Condition=" '$(BUILD_NUMBER)' == '' ">0.0.0</Version>
<Version Condition=" '$(BUILD_NUMBER)' != '' ">$(BUILD_NUMBER)</Version>

这里BUILD_NUMBER是TeamCity公开的环境变量。 如果内部版本号为30,则上面的版本将为30.0.0.0

请注意,如果BUILD_NUMBER变量不存在,则版本号将全为零(0.0.0)。

希望这能为上面提供一种替代方法

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM