7

私のプログラム (それをコンパイルする) が使用するアセンブリのみを参照するコードに対して、CompileAssemblyFromSource が機能しています。美しく機能します。

ただし、「何とか何とか;」を使用してコードをコンパイルする必要がある場合。ステートメントでは、何かを見つけることができず、リソースが不足していると言うことができません。

したがって、「System.Windows.Forms」であり、「compilerparams.ReferencedAssemblies.Add("System.Windows.Forms.dll")」と言えば、機能します。

コード ファイルを解析してすべての "using" パラメータを取得することはできますが、それらが "*.dll" の追加であると想定されているか、または別の場所の名前空間であるかなどをどのように知ることができますか? .NET が "System.Windows.Forms" を取り込み、"System.Windows.Forms.dll" を吐き出す方法はありますか?

4

1 に答える 1

2
  1. ランタイムがアセンブリを検索する方法の記事を読む
  2. コードをコンパイルする前に、ポイント 1 で説明した場所にあるすべてのアセンブリをロードします。
  3. すべてのアセンブリにすべての型をロードし、名前空間と型のペアのディクショナリを保持します
  4. ソースで using が発生した場合は、3 で辞書からアセンブリの参照を追加してみてください
于 2011-09-30T06:56:39.133 に答える