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

问题描述 投票:5回答:3

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

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

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

谢谢 :)

.net build .net-core
3个回答
5
投票

如果有其他人出现并需要这个,请将其添加到您的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

1
投票

对于那些仍然想知道如何在不严重修改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


0
投票

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

编辑项目文件(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)。

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

© www.soinside.com 2019 - 2024. All rights reserved.