我的问题是这样的:
有一个项目叫myframework
. 它在其中定义了一些扩展方法,如下所示:
namespace myframework
{
public static class Helpers
{
public static bool ContainsAll(this string obj, string[])
{
return true;
}
}
}
它还有一些其他的东西,比如接口等等。
我通过 System.CodeDom 类生成了第二个类。生成的输出有点像这样:
using myframework;
public class A: IMyFrameworkInterface
{
public void foo()
{
string s ="HELLO";
if(s.ContainsAll(some_arr))
return;
}
//More methods defined...
}
我传递的编译器选项是在实际编译调用之前创建的,它引用了正确的程序集
var cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.dll");
cp.ReferencedAssemblies.Add("myframework.dll");
代码编译模块写在不同的项目中。负责这个的特定类也很好地使我们能够访问 CompilerError 对象的列表,通过它我们可以了解编译的结果。
问题1:当我在 asp.net 项目中尝试此操作时,编译器抛出错误说它找不到元数据文件 myframework.dll(尽管它在项目中被引用)。
问题 2:当我尝试使用 Windows 窗体项目时。它给出了一个不同的错误。这次说字符串不包含 ContainsAll() 的定义
如何解决这两个具体问题?