2009-08-19 12 views
0

Windowsファイルのバージョンダイアログで情報を拡張する方法はありますか?すべての標準属性は既に使用されており、追加情報を追加することはできません。Windowsのバージョンアプレットの情報を拡張する方法

Other version information: 
Item name:     Value: 
    Assembly Version    Information related to my additional attribute 
    File Version 
    Language 
    Product Name 
    Product Version 
>My Additional Attribute 

多くのおかげで、
Ovanes

P.S.:私は必要なの下にファイルのプロパティ/バージョンアプレットの項目の一つとして示さ付加価値として使用できる新しい属性クラスの一種であります追加のリソースを注入するリソースエディタやコマンドラインツールを使用して回答を得た後、私は現在のプロジェクト設定を明確にしたいと思います。私たちには700以上のアセンブリがあります。現在、すべてのアセンブリのコンパイルに含まれるグローバルファイルAssemblyVersion.csを使用しています。すべてのバージョンフィールドは一度そこに埋め込まれ、すべてのアセンブリのビルド中に含まれます。問題は、私が持っていなければならない厳格な政策だということです。 AssemblyVersion.csでは、すべての一般的な(プロジェクト関連)データが埋め込まれているように:

[assembly: AssemblyCopyright("My global copyright message")] 

事前定義された非共通のフィールドは、アセンブリ独自のバージョンのファイルで指定することは自由です。これらのフィールドがそこに指定されていて、グローバルなAssemblyVersion.csにそれらを入れると、コンパイルエラーが発生します。強力な名前のアセンブリを生成するので、リソースエディタでハッキングすると署名が破棄されます。 700個のアセンブリすべてでリソースファイルをインポートするには、かなりの時間がかかります。最善のアプローチとして、私は次のように使用する独自の属性クラスを記述するために参照してください。

[assembly: MyAssemblyAttribute("Some data goes here")] 

ファイルバージョンダイアログで、この属性のショーを作るには?

答えて

1

Windowsファイルバージョンダイアログの情報は、Win32 EXEファイルの一部としてVersion data resourceに保存されています。リソースを編集したり、新しいデータをバージョンデータに追加することができるツール(グラフィカルおよびコンソールベース)が数多くあります。コンソールベースのものの1つを使って、ビルド後に自動的に情報を追加できますか?

また、リソースコンパイラを使用してWin32リソースを作成し、ビルド時にインポートすることもできます。このためcsc optionがあります:

/win32resオプションは、出力ファイル内のWin32リソースを挿入します。 [...]

Win32リソースには、Windowsエクスプローラでアプリケーションを識別するのに役立つバージョンまたはビットマップ(アイコン)情報を含めることができます。

+0

なぜ私のオプションではないのか説明するために投稿を編集しました。 – ovanes

+0

AssemblyCopyright属性など。コンパイラによって認識される特殊な属性です。バージョンデータリソースに追加する新しい属性を認識するようにコンパイラを変更する必要があります。 (実際には:Mono C#コンパイラのソースは自由に入手できます!)あなたの場合、最良のオプションは '/ win32res'オプションです。 – dtb

+0

Visual Studioでバージョン構造を調べました。そこにはさらにフィールドを置くことはできません。属性にマップされていない唯一の2つのフィールドは、SpecialBuildとPrivateBuildです。これらのフィールドを登録して、アセンブリレベルの属性で設定することはできますか?コンパイラのカスタマイズはオプションではありません;) – ovanes

関連する問題