4

VS2013 でビルドされた C# プロジェクトでは、これを AssemblyInfo.cs ファイルに入れることができます。

[assembly: AssemblyInformationalVersion("7.1.0.0 Private (Debug build)")]

別のプロジェクト内の実行可能ファイルに対して FileVersionInfo.GetVersionInfo .NET API を使用すると、次の値が報告されていることがわかりました。

  • 製品バージョン: 7.1.0.0 プライベート (デバッグ ビルド)
  • ProductMajorPart: 7
  • ProductMinorPart: 1

VS2015 でビルドされた C# プロジェクトで同じ属性と文字列値を使用すると、ProductMajorPart プロパティと ProductMinorPart プロパティがゼロとして報告されます。

行動の変化が意図的なものかどうか誰か知っていますか?

実行可能ファイル内にあるバイナリ ファイルのバージョン情報を調べたところ、バージョン情報内の文字列値は両方のファイルで期待どおりですが、VS2015 実行可能ファイルの VS_FIXEDFILEINFO.dwProductVersionMS および VS_FIXEDFILEINFO.dwProductVersionLS フィールド内の値はゼロです。

4

1 に答える 1

1

この場合の動作の変更を確認できますAssemblyInformationalVersion。たとえば、 が標準形式の場合"7.1.0.0"、すべてのバージョンで期待どおりに機能することがわかります。つまり、製品バージョンのメジャー/マイナー/ビルド/リビジョン フィールドが入力されます。

背景として、AssemblyInformationalVersion のドキュメントでは、実際には次のように指定されています。

このクラスによって定義される属性は、追加のバージョン情報をアセンブリに添付します。この属性がアセンブリに適用される場合、Application.ProductVersion プロパティを使用して、実行時に指定された文字列を取得できます。

[...] 任意のテキストを指定できますが、文字列がアセンブリ バージョン番号で使用される形式でない場合、コンパイル時に警告メッセージが表示されます [...]

上記から:

  • 文字列自体を取得できること以外に正式な保証はありません。

  • 自由形式の文字列の使用に対する警告があります。

MS は AssemblyInformationalVersion の自由形式の文字列をサポートされていない「偶発的な」機能と見なしており、文書化されていない動作の変更を「バグ」と見なさない可能性がありますちゃんとした。

直接関係はありませんが、この VS 2010 バグ レポートLocalized build with free form AssemblyInformationalVersion cause ALINK warning AL1053 is been closed by MS as won't fix.

また、Why is warning CS1607 “The version specified for the 'product version' is not in the normal 'major.minor.build.revision' format” generated? で受け入れられた回答は? 基本的に、標準形式から逸脱すると、major.minor.build.revisionほとんど独力であるとアドバイスします.

于 2015-12-19T00:33:36.080 に答える