cll*_*pse 9 c# compiler-construction assemblies
我正在使用CodeDomProvider
该类在运行时编译类.这适用于仅使用System
命名空间的类:
using System;
public class Test
{
public String HelloWorld()
{
return "Hello World!";
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用System.Web.UI.WebControls
虽然编译一个类,我得到这个错误:
{error CS0006:无法找到元数据文件'System.Web.UI.WebControls'} System.CodeDom.Compiler.CompilerError
这是我的代码片段:
var cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.Web.UI.WebControls");
Run Code Online (Sandbox Code Playgroud)
如何引用System.Web.UI.WebControls
命名空间?
Dan*_*fer 40
您可以遍历所有当前加载的程序集:
var assemblies = AppDomain.CurrentDomain
.GetAssemblies()
.Where(a => !a.IsDynamic)
.Select(a => a.Location);
cp.ReferencedAssemblies.AddRange(assemblies.ToArray());
Run Code Online (Sandbox Code Playgroud)
Tim*_*son 15
您引用程序集,而不是名称空间.您应该使用MSDN查找包含您需要使用的类的程序集的名称:在这种情况下,它将是:
var cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.Web.dll");
Run Code Online (Sandbox Code Playgroud)
在我的案例中,这被证明是一种不那么强暴的力量.我正在构建一个插件,当前域中加载了730个程序集,因此存在严重的延迟.
var assemblies = someType.Assembly.GetReferencedAssemblies().ToList();
var assemblyLocations =
assemblies.Select(a =>
Assembly.ReflectionOnlyLoad(a.FullName).Location).ToList();
assemblyLocations.Add(someType.Assembly.Location);
cp.ReferencedAssemblies.AddRange(assemblyLocations.ToArray());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16942 次 |
最近记录: |