在没有VS和.NET Framework SDK的情况下由csc.exe编译

时间:2012-12-17 12:40:00

标签: c# .net

我有2台Windows机器: Machine1有Visual Studio 2010; Machine2只有.NET Framework 4.0 Client Profile,没有任何Visual Studio或.NET Framework SDK。

编译一个简单的C#测试(test.cs包括“using System.Data;”):

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /target:exe test.cs

它在Machine1上运行正常。 但在Machine2上失败了:

test.cs(2,14): error CS0234: The type or namespace name 'Data' does not exist in
        the namespace 'System' (are you missing an assembly reference?)

我将"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll"复制到当前目录但仍然失败。

编译时添加“/r:system.data.dll”:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /r:system.data.dll /target:exe test.cs

你知道原因吗?

2 个答案:

答案 0 :(得分:1)

编译器将尝试自动加载名为csc.rsp的文件,该文件包含默认的编译选项。除非使用/ noconfig选项进行编译。该文件包含一组用于常见.NET Framework程序集的/ reference选项,System.Data.dll就是其中之一。

我的所有机器上都有一个csc.rsp文件,它位于我现在使用的C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319上。

您使用没有该文件的计算机的可能性非常高。我不知道这是否特定于客户端配置文件,我总是避免使用它。但是使用Windows资源管理器快速检查会给你一个提示。

答案 1 :(得分:0)

.NET客户端配置文件是用于客户端(用户界面)应用程序的.NET的简化版本。并非客户端配置文件中存在完整.NET中提供的所有程序集和类。如果您希望编写和适用于这两者的应用程序,则必须将自己局限于客户端配置文件中存在的那些类和程序集(因为它是一个子集)。

您可能会发现在机器2上安装完整的.NET会更方便。

另请注意,从.NET 4.5开始,客户端配置文件不再存在。