1

使用此链接中的代码,我试图在运行时编译生成的 .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:找不到类型或命名空间名称“Base”。您是否缺少 using 指令或程序集引用?

4

1 回答 1

1

通常,编译器只会编译被告知要一次编译的源文件。即:在命令行上指定所有 .cs 名称,或指定编译给定文件夹中的所有 .cs 文件。

在这种情况下:

string []arrCode = { code, "base.cs" };
CompilerResults results = 
   compiler.CompileAssemblyFromSource(compilerparams, arrCode);    

替代语法:

CompilerResults results = 
   compiler.CompileAssemblyFromSource(compilerparams, code, "base.cs");    
于 2013-07-02T13:30:33.950 回答