使用this link中的代码我试图在运行时编译生成的.cs文件。该文件(称为Gen.cs)由CodeDOM生成,并且是另一个文件的子类(称为Base.cs)。我从运行时编译中收到以下错误消息:
找不到类型或命名空间名称“Base”。您是否缺少using指令或程序集引用?
我知道这个错误意味着它在编译时无法找到Base.cs。我是C#的新手并动态编译C#文件,所以这有点难以分开。 Base和Gen都不使用命名空间,并且两个.cs文件都在同一目录中。有什么我想念的吗?为什么Gen.cs看不到Base.cs?
编辑 - 这可能相关也可能不相关,但这是通过gmcs手动编译的结果(我在MacOS上)
mtrc $ gmcs -lib:Base.cs Gen.cs Gen.cs(13,27):错误CS0246:类型或命名空间名称 找不到“基地”。你错过了使用吗? 指令或汇编参考?
答案 0 :(得分:1)
通常,编译器只会编译一次通过编译的源文件。 ie:在命令行中指定所有.cs名称,或指定编译给定文件夹中的所有.cs文件。
在这种情况下:
string []arrCode = { code, "base.cs" };
CompilerResults results =
compiler.CompileAssemblyFromSource(compilerparams, arrCode);
替代语法:
CompilerResults results =
compiler.CompileAssemblyFromSource(compilerparams, code, "base.cs");