为什么在使用 .rsp 文件构建时出现错误 CS0116?

Why am I getting error CS0116 when building using a .rsp file?

我正在尝试使用 csc.exe 和 .rsp 文件构建项目,但我不断收到错误 CS0116:名称空间不能直接包含字段或方法等成员。为了排除故障,我做了有史以来最简单的程序...

class Program
{
    public static void Main()
    {

    }
}

从命令行,我 运行 命令

"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe" Test.rsp

Test.rsp 看起来像这样

/nologo
/target:exe
/platform:x86
/out:"Test.exe"
"Test.cs"

如果我直接编译Test.cs,我不会得到这个错误。例如,如果我在命令行中 运行 这个命令...

"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe" /target:exe /platform:x86 /out:"Test.exe" "Test.cs"

"Program"创建成功

那么为什么使用 .rsp 文件编译会导致此错误?

编译器正在尝试将文件解释为 C#。如果你想使用响应文件,你需要让编译器知道它是一个构建文件而不是代码文件。来自 the docs:

The @ option lets you specify a file that contains compiler options and source code files to compile

例如:

"C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\csc.exe" @Test.rsp