[Visual Studio 2017, .csproj 속성]
PackageVersion / Version / AssemblyVersion 속성 (또는 기타 속성)을 자동으로 업데이트하려면 먼저 새 Microsoft.Build.Utilities.Task
현재 빌드 번호를 가져올 클래스를 업데이트 된 번호를 다시 보냅니다 (해당 클래스에 대해서만 별도의 프로젝트를 만드는 것이 좋습니다).
수동으로 major.minor 번호를 업데이트하지만 MSBuild가 빌드 번호 (1.1. 1 , 1.1. 2 , 1.1. 3 등) 를 자동으로 업데이트하도록합니다 . :)
using Microsoft.Build.Framework;
using System;
using System.Collections.Generic;
using System.Text;
public class RefreshVersion : Microsoft.Build.Utilities.Task
{
[Output]
public string NewVersionString { get; set; }
public string CurrentVersionString { get; set; }
public override bool Execute()
{
Version currentVersion = new Version(CurrentVersionString ?? "1.0.0");
DateTime d = DateTime.Now;
NewVersionString = new Version(currentVersion.Major,
currentVersion.Minor, currentVersion.Build+1).ToString();
return true;
}
}
그런 다음 MSBuild 프로세스에서 최근에 만든 Task를 호출하여 .csproj 파일에 다음 코드를 추가합니다.
<Project Sdk="Microsoft.NET.Sdk">
...
<UsingTask TaskName="RefreshVersion" AssemblyFile="$(MSBuildThisFileFullPath)\..\..\<dll path>\BuildTasks.dll" />
<Target Name="RefreshVersionBuildTask" BeforeTargets="Pack" Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<RefreshVersion CurrentVersionString="$(PackageVersion)">
<Output TaskParameter="NewVersionString" PropertyName="NewVersionString" />
</RefreshVersion>
<Message Text="Updating package version number to $(NewVersionString)..." Importance="high" />
<XmlPoke XmlInputPath="$(MSBuildProjectDirectory)\mustache.website.sdk.dotNET.csproj" Query="/Project/PropertyGroup/PackageVersion" Value="$(NewVersionString)" />
</Target>
...
<PropertyGroup>
..
<PackageVersion>1.1.4</PackageVersion>
..
Visual Studio Pack 프로젝트 옵션을 선택하면 ( BeforeTargets="Build"
빌드 전에 작업을 실행 하기 위해로 변경 ) RefreshVersion 코드가 트리거되어 새 버전 번호를 계산하고 XmlPoke
그에 따라 작업이 .csproj 속성을 업데이트합니다 (예, 파일을 수정합니다).
NuGet 라이브러리로 작업 할 때 이전 예제에 다음 빌드 작업을 추가하기 만하면 패키지를 NuGet 리포지토리로 보냅니다.
<Message Text="Uploading package to NuGet..." Importance="high" />
<Exec WorkingDirectory="$(MSBuildProjectDirectory)\bin\release" Command="c:\nuget\nuget push *.nupkg -Source https://www.nuget.org/api/v2/package" IgnoreExitCode="true" />
c:\nuget\nuget
NuGet 클라이언트가있는 곳입니다 ( nuget SetApiKey <my-api-key>
NuGet 푸시 호출에 키를 포함하거나 호출하여 NuGet API 키를 저장해야 함 ).
누군가에게 도움이된다면 ^ _ ^.