2012-02-08 6 views
5

問題なくコンパイルできる.ilファイルがあります。私はそれを強く名付けることができ、何の問題もない。しかし、私はそれを期待しているので、属性を介してファイルのバージョンを設定することはできません。 ilasmを使用している場合、アセンブリのFileVersionを設定するにはどうすればよいですか?ILASMはFileVersionを設定しません

私が往復する場合、私はいつも読むことができないバイナリデータしか含まない.resファイルを取得します。このresファイルの内容は何ですか?それを編集できますか?

コードは、問題が.RESファイルを使用することによって解決することができ

.assembly myAssembly 
{ 
    .custom instance void [mscorlib]System.Reflection.AssemblyFileVersionAttribute::.ctor(string) = { string('1.2.3.4') } 

答えて

9

を動作しません。 ildasmとilasmで往復するのは十分ではありません。 ILファイルは.resファイルを参照しません。私はilasmの呼び出しに手動で追加する必要がありました。 resファイルのデータには、PEヘッダに書き込まれた情報が含まれているようです。

は、必要に応じて、最終的なコマンドラインは

ilasm test.il /dll /res:test.res 

だった私はまだ正確にRESファイル内にあるかわからないが、私は、私は手動で、その後、逆コンパイル作成し、他のassemlbyのメタデータ情報とそれをexhangeすることができます必要に応じて元のアセンブリのメタデータを置き換えます。

多くの人がこのようなことをしているようです。

+1

すべてのC/C++プログラマがこれを行います。 .resファイルを作成する最も簡単な方法は、ダミーのC++プロジェクトです。手動で、またはC++ IDEのリソースエディタを使用して、.rcファイルを編集します。 rc.exe SDKツールはそれを.res –

+0

に変換します。おかげで、VSが実際にバイナリエディタでバージョンリソースを編集できるとは思っていませんでした。 ilasmがいくつかの秘密のバイナリ形式を使用していないことを知っておいてください。 –

関連する問題