2

実行時にアプリケーションのバージョン (基本的<ReleaseVersion>にはソリューション ファイルのプロパティ) を取得しようとしています。コードを介してこれにアクセスするにはどうすればよいですか?

4

3 に答える 3

6

.NET (したがっておそらく MONO) でアプリケーションのバージョンを設定する標準的な方法は、AssemblyVersion属性を使用することです。これは通常、AssemblyInfo.cs ファイルで指定されますが、次に示すように、他のファイルで指定することもできます。

実行時にバージョンを取得するには、AssemblyName.Version プロパティを使用できます。以下は、指定されたリンクからのコードのわずかに変更されたバージョンです。

using System;
using System.Reflection;

[assembly:AssemblyVersion("1.1.0.0")]

class Example
{
    static void Main()
    {
        Console.WriteLine("The version of the currently executing assembly is: {0}",
          Assembly.GetExecutingAssembly().GetName().Version);
    }
}

コンパイルして実行すると、次のようになります。

現在実行中のアセンブリのバージョン: 1.1.0.0

上記は、.NET (Visual Studio 2010) と Mono 3.0 ( mcsMono 開発ではなく、コマンド ラインからコンパイル) の両方でテストされています。

于 2013-08-05T00:37:18.123 に答える
0

これは醜いハックですが、ターゲットを利用BeforeBuildしてそのプロパティをファイルに書き込み、それをすぐに埋め込みリソースとして含めることができます。*.csproj ファイル内:

<ItemGroup>
    <EmbeddedResource Include="release-version.txt" />
</ItemGroup>

<!-- .... -->

<Target Name="BeforeBuild">
    <Exec WorkingDirectory="$(ProjectDir)" Command="echo $(ReleaseVersion) &gt;release-version.txt" />
</Target>

....次に、C♯ コードで、次のようなプロパティを作成できます。

public static string Version {
    get {
        using (StreamReader resourceReader = new StreamReader(Assembly.GetExecutingAssembly().GetManifestResourceStream("SBRL.GlidingSquirrel.release-version.txt")))
        {
            return resourceReader.ReadToEnd().Trim();
        }
    }
}

これは、すべての主要なオペレーティング システムで動作するはずです。忘れないで:

  • using System.Reflection;まだ行っていない場合にファイルの先頭に追加するには
  • release-version.txtファイルをバージョン管理の無視リストに追加するには(例:.gitignoreなど)
于 2018-06-21T14:01:11.177 に答える
0

このフォーラムの提案を使用してみましたか -->現在のバージョンを取得

于 2013-08-02T14:32:50.470 に答える