使用.NET Framework Client Profile 导致的引用失效

来源:互联网 发布:大数据为实体店 编辑:程序博客网 时间:2024/05/17 01:33

今天编译公司一个项目的时候出现了让我无比头痛的问题,我引用的动态库,总是编译报错,无法使用。一开始我以为动态库编译出了问题,反复重新编译,可是错误还是出现。无奈下网上查一下解决方案,终于找到问题所在。

当我们使用Visual Studio2010创建工程时(已经安装了.Net Framework 3.5和 .Net Framework 4.0),默认的目标框架是.Net Framework 4 Client Profile,而不是.Net Framework 4。MSDN上面解释的是,.NET Framework4 Client Profile 是 .NET Framework4 已针对客户端应用程序进行优化的一个子集。 它提供了适用于大多数客户端应用程序的功能,包括 WindowsPresentation Foundation (WPF)、Windows 窗体、Windows Communication Foundation (WCF) 和 ClickOnce 功能。 这使得以 .NET Framework4 Client Profile 为目标的应用程序的部署速度加快且安装包变小。

但是,如果目标框架设置为.NET Framework Client Profile,是不能够使用其以外的系统程序集的,如果您的应用程序尝试引用的功能包含在 .NET Framework4 Client Profile 中所没有的程序集或依赖程序集内,则可能会出现运行时错误消息。 确切的消息取决于引用的功能所在的位置。为了消除类似错误,可以从项目中移除不正确的程序集引用,或者将项目设置为以完整的 .NET Framework 4 版(而不是 .NET Framework4 Client Profile 子集库)为目标。

如果更改应用程序的 .NET Framework目标版本,则 Visual Studio 会更改某些引用。 而且,您还必须执行某些手动更新。 例如,如果您创建的应用程序中包含依赖于 .NET Framework4 Client Profile 的资源或设置,然后您将应用程序更改为目标 .NET Framework3.5 SP1,则可能会看到前面提到的错误之一。

关于应用程序设置的一种解决方法是,在解决方案资源管理器中,单击“显示所有文件”,然后在 Visual StudioXML 编辑器中编辑 app.config 文件。 更改设置中的版本,使之与 .NET Framework 的版本相匹配。 例如,可以将版本设置从 4.0.0.0 改为 2.0.0.0。 类似地,对于添加了资源的应用程序,在解决方案资源管理器中,单击“显示所有文件”,展开“我的项目”(Visual Basic) 或“属性”(C#),然后在 Visual Studio XML 编辑器中编辑 Resources.resx 文件。 将版本设置从 4.0.0.0 改为 2.0.0.0。

如果应用程序中包含图标或位图等资源,或包含数据连接字符串等设置,则还可以在“项目设计器”中移除“设置”页面上的所有项,然后重新添加所需的设置,来解决此问题。

详情请查看MSDN《.NET Framework目标错误疑难解答


0 0
原创粉丝点击