トップ回答者
ilasm.exeでビルドしたアセンブリを参照したい

質問
-
今ilasm.exeであるilコードをコンパイルしました。
.assembly extern mscorlib { } .assembly ArrayBuilderAssemly { } .class public ArrayBuilder<T> extends [mscorlib]System.Object { }
コマンドラインはVSのプロジェクトでプロジェクトのビルド前に実行するコマンドで
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\ilasm.exe" "$(ProjectDir)ArrayBuilder.il" /dll
VSのC#プロジェクトには入っていますが実際にはC#コードはなく、上記のソースをテキストファイルでもち、コマンドラインを実行するためだけにVSに入れています。
それで実際にdllが生成でき、IL Spyにより中身をみることもできています。
このdllをC#プロジェクトの参照に入れました。
参照したC#プロジェクトのソースはnamespace ILコードのコンパイル { class Class1{ public static void Main() { ArrayBuilder a; } } }
実行すると、ファイルまたはアセンブリ 'ArrayBuilderAssemly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。
と実行されます。例外のFusionLogには
=== 事前バインド状態情報 === ログ: ユーザー = kazuhiro-PC\kazuhiro ログ: DisplayName = ArrayBuilderAssemly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null (Fully-specified) ログ: Appbase = file:///c:/users/kazuhiro/documents/visual studio 2010/Projects/ILコードのコンパイル/ILコードのコンパイル/bin/Debug/ ログ: Initial PrivatePath = NULL 呼び出しているアセンブリ: ILコードのコンパイル, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null === ログ: このバインドは default の読み込みコンテキストで開始します。 ログ: アプリケーション構成ファイルは見つかりませんでした。 ログ: ホスト構成ファイル を使用します。 ログ: C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config からのコンピューター構成ファイルを使用します。 ログ: 現時点でポリシーは参照に適用されません (プライベート、カスタム、部分的、または場所ベースのアセンブリ バインド)。 ログ: 新しい URL file:///c:/users/kazuhiro/documents/visual studio 2010/Projects/ILコードのコンパイル/ILコードのコンパイル/bin/Debug/ArrayBuilderAssemly.DLL をダウンロードしようとしています。 ログ: 新しい URL file:///c:/users/kazuhiro/documents/visual studio 2010/Projects/ILコードのコンパイル/ILコードのコンパイル/bin/Debug/ArrayBuilderAssemly/ArrayBuilderAssemly.DLL をダウンロードしようとしています。 ログ: 新しい URL file:///c:/users/kazuhiro/documents/visual studio 2010/Projects/ILコードのコンパイル/ILコードのコンパイル/bin/Debug/ArrayBuilderAssemly.EXE をダウンロードしようとしています。 ログ: 新しい URL file:///c:/users/kazuhiro/documents/visual studio 2010/Projects/ILコードのコンパイル/ILコードのコンパイル/bin/Debug/ArrayBuilderAssemly/ArrayBuilderAssemly.EXE をダウンロードしようとしています。
と表示されます。
まずやりたいことは最も単純なアセンブリをilasm.exeで作り、それを通常のC#(VB)プロジェクトに参照させたあと実行時に例外が発生しないようにしたいです。
気をつけるべきことなどなにかありますでしょうか。
- 編集済み 和和和 2012年1月13日 15:51