0

AssemblyInfo.csファイルに次のようなバージョン番号があります。

[assembly: AssemblyInformationalVersion("0.0.0.2")]

通常、 FileVersionInfoを使用てこの情報にアクセスでき、System.dll(このクラスが通常定義されている場所)への参照がありますが、System.Diagnostics名前空間が使用できないようです。

VSが言うパスは、私が参照しているシステムアセンブリです。

C:\ Program Files(x86)\ Microsoft.NET \ SDK \ CompactFramework \ v3.5 \ WindowsCE \ System.dll

つまり、アプリケーションのバージョン文字列(AssemblyInformationalVersion)アプリケーション表示するにはどうすればよいですか?

編集:使用

Assembly.GetExecutingAssembly().GetName().Version.ToString()

その属性がAssemblyInfo.csファイルで定義されていないため、「0.0.0.0」を返します。

4

2 に答える 2

2

それで、あなたはあなた自身のアプリのバージョンを手に入れようとしています:

Debug.WriteLine(string.Format("My App Version: {0}",
    Assembly.GetExecutingAssembly().GetName().Version.ToString()));

またはCFアセンブリのバージョン:

Debug.WriteLine(string.Format("System.dll Version: {0}",
    typeof(int).Assembly.GetName().Version.ToString()));

編集1

または実際のネイティブFileInfoバージョン(これはあなたが求めているものだと思います)。

EDIT2

または、管理されたアセンブリに対してこれを行うことができます。

var a = Assembly.GetExecutingAssembly().GetCustomAttributes(
    typeof(AssemblyInformationalVersionAttribute), true)
    .FirstOrDefault() as AssemblyInformationalVersionAttribute;
Debug.WriteLine(string.Format("AssemblyInformationalVersion: {0}",
a.InformationalVersion));
于 2012-06-25T15:51:19.957 に答える
-1

解決策は、AssemblyInfo.csに次のように手動で入力することでした。

[assembly: AssemblyVersion("1.2.3.4")]

Visual Studioがそれを省略した理由はわかりませんが、追加することで、

Assembly.GetExecutingAssembly().GetName().Version

期待値を返します。

要約すると、正しいコードを使用していましたが、AssemblyInfo.csファイルに間違った情報がありました。

于 2012-06-25T16:02:01.717 に答える