我有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
你知道原因吗?
答案 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开始,客户端配置文件不再存在。