[ভিজ্যুয়াল স্টুডিও 2017, .csproj বৈশিষ্ট্য]
আপনার প্যাকেজ ভার্শন / সংস্করণ / সংসদীয় সংস্করণ (বা অন্য কোনও সম্পত্তি) স্বয়ংক্রিয়ভাবে আপডেট করার জন্য, প্রথমে একটি নতুন Microsoft.Build.Utilities.Task
শ্রেণি তৈরি করুন যা আপনার বর্তমান বিল্ড নম্বরটি পেতে এবং আপডেট নম্বরটি প্রেরণ করবে (আমি কেবল class শ্রেণীর জন্য একটি পৃথক প্রকল্প তৈরি করার পরামর্শ দিই)।
আমি নিজেই মেজর.মিনার নম্বরগুলি আপডেট করি তবে এমএসবিল্ডকে বিল্ড নম্বরটি স্বয়ংক্রিয়ভাবে আপডেট করতে দিন (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;
}
}
তারপরে আপনার .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>
..
ভিজ্যুয়াল স্টুডিও প্যাক প্রকল্প বিকল্পটি বাছাই করার সময় ( BeforeTargets="Build"
বিল্ড করার আগে টাস্কটি কার্যকর করার জন্য কেবল পরিবর্তন করুন ) নতুন সংস্করণ নম্বর গণনা করার জন্য রিফ্রেশভিশন কোডটি ট্রিগার করা XmlPoke
হবে , এবং টাস্কটি আপনার .csproj সম্পত্তি অনুসারে আপডেট করবে (হ্যাঁ, এটি ফাইলটি পরিবর্তন করবে)।
নুগেট লাইব্রেরিগুলির সাথে কাজ করার সময়, আমি পূর্বের উদাহরণটিতে কেবল পরবর্তী বিল্ড টাস্ক যুক্ত করে প্যাকেজটি নুগেট সংগ্রহস্থলে প্রেরণ করি।
<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 SetApiKey <my-api-key>
বা নিউগেট পুশ কলটিতে কীটি অন্তর্ভুক্ত করার জন্য মনে রাখবেন )।
কেবল যদি এটি কাউকে helps _ ^ সহায়তা করে ^