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

问题描述:

我想使用csc.exe和.rsp文件来构建一个项目,但我一直收到错误CS0116:命名空间不能直接包含成员,如字段或方法。要解决问题,我做了有史以来最简单的程序......为什么在使用.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" 

“程序”已成功创建。

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

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

的@选项,您可以指定包含编译器选项和源代码文件的文件编译

例如:

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

谢谢!添加了'@',它一切正常。 – Tester101