我刚问了一个关于使用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相同
如果我得到了一个能够让我的日子变得更好的aswer,那么非常感谢
答案 0 :(得分:1)
正如Hans Passant所说,System.Diagnostics
和Microsoft.Win32
是名称空间,而不是程序集。这意味着没有System.Diagnostics.dll
,因此您无法将其添加为参考。
在.Net中,一个程序集可以包含多个名称空间,并且单个名称空间可以包含在多个程序集中。如果查看类的文档,它总是列出其命名空间和它的程序集。例如,对于the Process
class,它是:
命名空间: System.Diagnostics
汇编:系统(在System.dll中)
答案 1 :(得分:1)
我在以下方面取得了成功:
cp.ReferencedAssemblies.Add(typeof(TTarget).Assembly.ManifestModule.FullyQualifiedName);