簡體   English   中英

用C#代碼遞增版本號

[英]Increment Version Number in C# Code

我正在維護數據庫中的文檔版本。 可以說我要更新或增加版本號。 我已經嘗試過了,但是它顯示了屬性是只讀的?

string _versionDB = "1.0.0.0"

var version = new Version(_versionDB);
version.MajorRevision = version.Minor + 1; //error it says read only

請誰能詳細說明增量版本號的正確方法?

我知道這有點老了,但是對於任何尋求該方法的人來說,這可能會有所幫助:

string _versionDB = "1.0.0.0"

var version = new Version(_versionDB);

// Increment Major version
var newMajorVersion = new Version(version.Major+1,version.Minor,version.Build,version.Revision);
// Increment Minor version
var newMinorVersion = new Version(version.Major,version.Minor+1,version.Build,version.Revision);
// Increment Build version
var newBuildVersion = new Version(version.Major,version.Minor,version.Build+1,version.Revision);
// Increment Revision
var newRevisionVersion = new Version(version.Major,version.Minor,version.Build,version.Revision+1);

要將字符串返回以保存回數據庫(基於變量名的假設):

_versionDB = newMajorVersion.ToString();

您可以創建擴展方法來為您執行添加。 仍然需要自定義代碼; 但是如果您在很多地方都這樣做,那么使用這種輔助方法可能會很有用。 以下是一些可能有用的功能。

public static class VersionExtension {

    public static Version IncrementRevision(this Version version) {
        return AddVersion(version, 0, 0, 0, 1);
    }
    public static Version IncrementBuild(this Version version) {
        return IncrementBuild(version, true);
    }
    public static Version IncrementBuild(this Version version, bool resetLowerNumbers) {
        return AddVersion(version, 0, 0, 1, resetLowerNumbers ? -version.Revision : 0);
    }
    public static Version IncrementMinor(this Version version) {
        return IncrementMinor(version, true);
    }
    public static Version IncrementMinor(this Version version, bool resetLowerNumbers) {
        return AddVersion(version, 0, 1, resetLowerNumbers ? -version.Build : 0, resetLowerNumbers ? -version.Revision : 0);
    }
    public static Version IncrementMajor(this Version version) {
        return IncrementMajor(version, true);
    }
    public static Version IncrementMajor(this Version version, bool resetLowerNumbers) {
        return AddVersion(version, 1, resetLowerNumbers ? -version.Minor : 0, resetLowerNumbers ? -version.Build : 0, resetLowerNumbers ? -version.Revision : 0);
    }

    public static Version AddVersion(this Version version, string addVersion) {
        return AddVersion(version, new Version(addVersion));
    }
    public static Version AddVersion(this Version version, Version addVersion) {
        return AddVersion(version, addVersion.Major, addVersion.Minor, addVersion.Build, addVersion.Revision);
    }
    public static Version AddVersion(this Version version, int major, int minor, int build, int revision) {
        return SetVersion(version, version.Major + major, version.Minor + minor, version.Build + build, version.Revision + revision);
    }
    public static Version SetVersion(this Version version, int major, int minor, int build, int revision) {
        return new Version(major, minor, build, revision); 
    }

    /*
    //one day we may even be able to do something like this...
    //https://github.com/dotnet/csharplang/issues/192
    public static Version operator +(Version version, int revision) {
        return AddVersion(version, 0, 0, 0, revision);
    }
    public static Version operator ++(Version version) {
        return IncrementVersion(version);
    }   
    */

}

用法示例

void Main()
{
    Version myVersion = new Version ("1.2.3.4");
    myVersion = myVersion.IncrementRevision();
    Console.WriteLine(myVersion); //1.2.3.5
    myVersion = myVersion.IncrementMinor();
    Console.WriteLine(myVersion); //1.3.0.0
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM