1

CodeDOM でのコンパイルについて質問したところ、多くの問題を解決するすばらしい答えが得られました。現在の 1 つの問題は、次の using をコンパイラに追加する方法です。

System.Diagnostics
&&
Microsoft.Win32

私が試してみるとき

CompilerParameters Params = new CompilerParameters();
Params.ReferencedAssemblies.Add("System.Diagnostics.dll");
&&
Params.ReferencedAssemblies.Add("Microsoft.Win32.dll");

(system.dll などをフォームと描画として追加していることに注意してください。また、これらの dll を使用していない場合、コードはコンパイルされます)

次のエラーが表示されます

metadata file System.Diagnostics.dll could not be found

Win32でも同じ

私の一日を作る答えが得られたら、よろしくお願いします

4

2 に答える 2

1

私は次のことで成功しました:

cp.ReferencedAssemblies.Add(typeof(TTarget).Assembly.ManifestModule.FullyQualifiedName);
于 2013-03-18T20:39:58.177 に答える
1

Hans Passant が指摘したように、System.DiagnosticsandMicrosoft.Win32namespacesであり、 assemblyではありません。つまり、 が存在しないSystem.Diagnostics.dllため、参照として追加することはできません。

.Net では、1 つのアセンブリに複数の名前空間を含めることができ、1 つの名前空間を複数のアセンブリに含めることができます。クラスのドキュメントを見ると、常にその名前空間そのアセンブリがリストされています。たとえばProcessclassの場合は次のようになります。

名前空間: System.Diagnostics
アセンブリ: System (System.dll 内)

于 2013-01-06T13:00:31.347 に答える