0

我有 2 台 Windows 机器:Machine1 有 Visual Studio 2010;Machine2 只有 .NET Framework 4.0 客户端配置文件,没有任何 Visual Studio 或 .NET Framework SDK。

编译一个简单的 C# 测试(test.cs 包括“使用 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

你知道原因吗?

4

2 回答 2

1

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

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

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

于 2012-12-17T13:59:03.350 回答
0

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

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

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

于 2012-12-17T12:45:08.540 回答