簡體   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