2

作業中のクラス ライブラリで AssemblyVersion を AssemblyFileVersion 属性と異なるものにするのに問題があります。

そのため、(Class1.cs を除いて) 空のクラス ライブラリを作成して、それがどこかに設定されているかどうかを確認しようとしましたが、同じ動作が得られます。

AssemblyVersion 属性が無視されているようです。

ここに私の AssemblyInfo.cs ファイルからの関連ビットがあります...

[assembly: AssemblyVersion("0.1")]
[assembly: AssemblyFileVersion("1.1.0.9")]

そして、これがWindowsエクスプローラーでどのように見えるかです...

Windows エクスプローラーのスクリーン グラブ

これを制御する設定はどこかにありますか?

編集: 違いがあるファイルを1つ見つけたので、2つの異なるフィールドに同じ値を示すWindowsエクスプローラーではなく、コンパイラ/リンカーからDLLが生成される方法に関係しています...

ここに画像の説明を入力

4

3 に答える 3

5

ここでの重要な問題は、Windowsが管理対象プログラムの属性について何も知らないことです。アンマネージファイルバージョンリソースを読み取ります。/ win32resコンパイルオプションを使用してC#アセンブリに埋め込まれているもの。このオプションを使用しない場合、コンパイラはデフォルトで自動生成し、AssemblyInfo.csで指定したアセンブリ属性値を使用してリソースを作成します。

ただし、アンマネージファイルバージョンリソースには、[AssemblyVersion]のようなものを指定するための標準フィールドがありません。[AssemblyFileVersion]のみ。コンパイラは実際にそれを発行し、バージョンリソースは拡張可能です。しかし、Windows XPは、これらのカスタムフィールドをまだ表示している最後のバージョンでした。VisualStudioで[ファイル]+[開く]+[ファイル]を指定してアセンブリを開くと、管理されていないリソースを確認できます。

はい、足が不自由で迷惑です。MSのWindowsグループは、マネージコードに対応することを好みません。

于 2011-10-25T09:55:53.650 に答える
4

そうです、答えを見つけました:-)

AssemblyInfo.cs を編集し、下部に以下を追加する必要があります

[assembly: AssemblyInformationalVersion("4.4.4.4")]

その値は、エクスプローラーの「製品バージョン」に表示されます。AssemblyInformationalVersion はオプションです。指定しない場合、AssemblyVersion が使用されます。

このトピックの詳細については、こちら

于 2011-10-25T10:13:00.030 に答える
1

PCで確認したところ、問題なく動作しています。

冒険者:

ここに画像の説明を入力

プロパティ:

ここに画像の説明を入力

異なる他のものは次のとおりです。 ここに画像の説明を入力

私の Windows explorer.exe のバージョンは 6.1.7601.17567 です。ウィンドウズ 7 SP1

Visual Studioでこれを自分でテストする

[assembly: AssemblyVersion("2.2.2.2")]
[assembly: AssemblyFileVersion("3.3.3.3")]

結果が得られました: ここに画像の説明を入力 Visual Studio がここで何か間違ったことをしているようです。

于 2011-10-25T09:21:41.830 に答える