1

我刚刚问了一个关于使用 CodeDOM 编译的问题,我得到了一个很棒的答案,它解决了许多问题我现在遇到的一个问题是如何将以下使用添加到我的编译器中

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

正如 Hans Passant 所指出的,System.Diagnostics它们Microsoft.Win32命名空间,而不是程序集。这意味着没有System.Diagnostics.dll,因此您不能将其添加为参考。

在 .Net 中,一个程序集可以包含多个命名空间,一个命名空间可以包含在多个程序集中。如果你查看一个类的文档,它总是列出它的命名空间它的程序集。例如,对于class Process它是:

命名空间: System.Diagnostics
程序集: System(在 System.dll 中)

于 2013-01-06T13:00:31.347 回答
1

I have had success with the following:

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