为什么.NET 4.0 Client Profile中没有System.Data.OracleClient?

时间:2011-11-14 16:09:46

标签: c# .net

所以我正在开发一个在框架2.0下的Visual Studio 2005版本中构建的项目。现在我将项目移动到版本下的visual studio 2010 sp1的新版本,并开始意识到他们正在抛出这些依赖的错误和警告,例如

Warning 1 could not be resolved because it has a dependency on "System.Data.OracleClient, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" which is not in the currently targeted framework ".NETFramework,Version=v4.0,Profile=Client". 

带给我的结果是应用程序没有读取我添加的引用,而是更改了框架。 .Net framework 4.0问题解决了。测试我将它们更改为.net framework 4.0 client profile,我意识到构建错误和警告再次出现。

现在我的问题是为什么设置.net 4.0而不是client profile?我需要一个很好的解释,因为我不是这方面的专家。

3 个答案:

答案 0 :(得分:11)

客户端配置文件仅包含整个.NET框架的一个子集,这个子集应该足以制作桌面应用程序,同时可以更轻松地使用您的应用程序重新分发.NET。

a blog post introducing the Client Profile中所述,客户端配置文件中不包含Oracle客户端功能。这可能是因为Oracle Client is deprecated as of .NET 4(引入客户端配置文件的版本相同),您应该逐步完全使用它。 (无论如何,它也可能不适合包含在客户档案中。)

如果您需要从应用程序连接到Oracle,您应该定位完整的.NET框架,或者最好使用第三方驱动程序库 - 可能是由Oracle开发的,而不是Microsoft开发的 - 这将保持不变 - 至今。 (InfoQ article about the deprecation列出了几种替代方案。)

答案 1 :(得分:9)

转到项目属性页面并将目标框架更改为.NET Framework 4然后它应该可以工作!客户端配置文件适用于“小型”应用程序,不会安装所有程序集。

答案 2 :(得分:2)

.NET客户端配置文件是.NET完整安装的一个子集,仅包含框架的“客户端”。服务器功能(如ASP.NET)不存在。这样做的目的是减少.NET Framework的大小和要求。

或来自MSDN

  

.NET Framework 4 Client Profile是.NET Framework 4的一个子集,它针对客户端应用程序进行了优化。它为大多数客户端应用程序提供功能,包括Windows Presentation Foundation(WPF),Windows窗体,Windows Communication Foundation(WCF)和ClickOnce功能。这样可以为面向.NET Framework 4 Client Profile的应用程序实现更快的部署和更小的安装包。

现在,您无法使用客户端配置文件的原因是因为.NET Oracle Provider需要超出客户端配置文件提供的程序集,因此您的应用程序无法使用客户端配置文件。