CodeDOM 未找到程序集

问题描述 投票:0回答:2

我刚刚问了一个关于使用 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 也一样

如果我得到一个让我高兴的问题,提前非常感谢

c# codedom
2个回答
1
投票

正如 Hans Passant 指出的那样,

System.Diagnostics
Microsoft.Win32
命名空间,而不是程序集。这意味着没有
System.Diagnostics.dll
,因此您无法将其添加为参考。

在.Net中,一个程序集可以包含多个命名空间,并且单个命名空间可以包含在多个程序集中。如果您查看类的文档,它总是列出其名称空间其程序集。例如,对于

Process
,它是:

命名空间:System.Diagnostics
汇编:系统(在System.dll中)


1
投票

我在以下方面取得了成功:

cp.ReferencedAssemblies.Add(typeof(TTarget).Assembly.ManifestModule.FullyQualifiedName);
© www.soinside.com 2019 - 2024. All rights reserved.