CompilerParameters.ReferencedAssemblies — Add reference to System.Web.UI.WebControls

CompilerParameters.ReferencedAssemblies — Add reference to System.Web.UI.WebControls

梅窗月明清似水 发布于 2021-11-30 字数 797 浏览 709 回复 3 原文

I am compiling classes at run-time using the CodeDomProvider class. This works fine for classes only using the System namespace:

using System;

public class Test
    public String HelloWorld()
        return "Hello World!";

If I try to compile a class using System.Web.UI.WebControls though, I get this error:

{error CS0006: Metadata file 'System.Web.UI.WebControls' could not be found}

Here's a snippet of my code:

var cp = new CompilerParameters();


How do I reference the System.Web.UI.WebControls namespace?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。



需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。


天涯离梦残月幽梦 2022-06-07 3 楼

This proved to be a little less brute force in my case. I was building an addin and there were 730 assemblies loaded in the current domain so there was major lag involved.

var assemblies = someType.Assembly.GetReferencedAssemblies().ToList();
   var assemblyLocations =  
assemblies.Select(a => 


悲念泪 2022-06-07 2 楼

You reference assemblies, not namespaces. You should use MSDN to look up the name of the assembly that contains the classes you need to use: in this case it's going to be:

var cp = new CompilerParameters();
烟凡古楼 2022-06-07 1 楼

You can loop through all the currently loaded assemblies:

var assemblies = AppDomain.CurrentDomain
                            .Where(a => !a.IsDynamic)
                            .Select(a => a.Location);