【问题标题】:downgrade .net 4.5 application to 4.0将 .net 4.5 应用程序降级到 4.0
【发布时间】:2014-03-21 00:30:09
【问题描述】:

我想将 .net 库从框架版本 4.5 降级到 .net 4.0。

我使用 nuget 安装了几个库:

  • Microsoft.AspNet.WebApi.Client 及其依赖项:
  • Newtonsoft.Json
  • System.Net.Http(Microsoft .Net 4 HTTP 客户端库)

我会做以下事情:

  • 在我的解决方案中每个项目的设置中,我将目标框架设置为 4.0。之后我尝试重建我的解决方案,但由于错误The type or namespace name 'Newtonsoft' could not be found (are you missing a using directive or an assembly reference?),当然没有成功,对于 HTTP 客户端库也是如此

  • 使用 nuget ui 管理器我删除了依赖项并尝试重新安装。但是有错误Could not install package 'Microsoft.AspNet.WebApi.Client 5.1.1'. You are trying to install this package into a project that targets '.NETFramework,Version=v4.0', but the package does not contain any assembly references or content files that are compatible with that framework. For more information, contact the package author.

我的问题是:我可以降级这个项目还是应该用支持 .net 4 的库替换这些库并重写部分代码?

【问题讨论】:

  • 如果您的引用大于 .Net4.0 则不能将其添加到 .Net4.0 项目中。
  • 感谢您的回复。对不起,我没看懂你的问题。我有几个项目的解决方案。截至目前,所有 packages.configs 中的所有项目都有targetFramework="net45"。但我想让这个解决方案的项目可用于.net 4.0。我的问题是:“实现这一目标的最简单方法是什么?”。

标签: c# .net


【解决方案1】:

.NET 4.5 是 .NET 4.0 的就地升级,这意味着 CLR 是相同的,但添加了新库以及错误修复和性能改进,两者都是 指向 .NET CLR 4。

在您的情况下,由于 .NET 4.5 已经安装,因此 4.5 更新完全取代了 .NET 4.0 运行时。

即使您将项目更改为 .NET 4.0,内部使用的库仍然指向 4.5,但仅限于 4.0 可用的库,但行为可能与您的行为有所不同 期望在纯 .NET 4 中。

所以为了将你的项目从 4.5 降级到 4.0,我同意你的观点,你需要:

  1. 仅将 .NET 框架重新安装到 .NET 4(如果您不再需要 .NET 4.5)
  2. 将项目更改为指向 .NET 4
  3. 重写.NET 4 不支持的部分代码 (例如,在您的情况下,Microsoft.AspNet.WebApi.Client 5.1.1 与 WebApi2 一起提供 .NET 4.5,您需要将其降级为使用 .NET 4 提供的方式 )

Hanselman 和Rick 解释的很好。

【讨论】:

  • 非常感谢!特别是对于链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 2015-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
相关资源
最近更新 更多