【问题标题】:Cannot change Target Framework on Several Projects From v4.0 to V4.5 or 4.5.1无法将多个项目的目标框架从 v4.0 更改为 V4.5 或 4.5.1
【发布时间】:2014-02-14 12:14:22
【问题描述】:

我在大型解决方案中有几个项目不会转换为 V4.5.1(甚至是 V4.5)。大多数人都这样做了,但显然我需要让他们全部转换。 Visual Studio 中的 GUI 表示已完成并重新加载项目,但如果您返回到属性中,它仍然显示为 V4,并且由于依赖项转换正确且为 V4.5.1,因此无法编译

我尝试手动更新 .csproj 文件,它说 4.5.1 作为目标框架,我什至更新了 app.config/web.config 以指向正确的版本,但是 Visual Studio 的属性页仍然显示 .NET 4 并引发编译错误,因为它无法访问成功更新到 4.5.1 的错误

在更新这些内容的过程中我遗漏了什么?我试过 VS.net 2012 和 2013 并且都做同样的事情。

【问题讨论】:

  • 你的目的地是哪个版本的VS? 2012 年你不能超过 4.5。如果你想要 4.5.1,你需要 2013 年。你可能已经知道这一点,但在你的问题中并不清楚(对我来说)。
  • 这没什么意义。只有 .csproj 文件中的 <TargetFrameworkVersion> 属性对编译器很重要。请确保这些实际上不是 IntelliSense 错误或过时的 Resharper 样式加载项,它对更高的 .NET 版本一无所知。
  • Tim:如果您安装开发人员部署包,VS.net 2012 可以针对 4.5.1,但它也不适用于 Vs.net 2013。即使您选择 4.5,它仍然不会更新。
  • Hans:我也是这么想的,但是 VS.net 也不会使用更新的框架版本来编译项目。我尝试删除所有 nuget 包,例如 Entity Framework,看看这是否重要,但没有任何区别。
  • 我也遇到了这个问题 - 在一个有许多针对 4.5 的项目的解决方案中,我们有两个不会切换。正在调查...

标签: c# visual-studio-2012 visual-studio-2013 target-platform


【解决方案1】:

希望这对其他人有所帮助:

在我们的例子中,问题在于我们引用了一个为整个解决方案创建的自定义目标文件。即使项目正在更新,自定义目标文件也会覆盖它,从而阻止项目更新。

更新了目标文件以指向 .net 4.5,一切都很好。

【讨论】:

  • 原来我们也遇到了同样的问题,刚刚找到了。感谢您报告错误。 Visual Studio 不会优雅地显示冲突,这是肯定的。
  • 嗨,我这两天遇到同样的问题了。您如何更新目标文件以指向 .net 4.5?我可以在项目文件中设置TargetFramework,但不知道如何更改目标文件指向.net 4.5
  • 如果你进去有一个“TargetFramework”字段,直接改成4.5,不打开项目保存即可。
  • 嗨,我试过了,但是当我打开项目时,目标框架设置为 .NET Framework 4。
  • 检查 csproj 中是否没有导入的 *.targets 文件。它几乎总是一个导入的目标文件,它弄乱了它。 (您必须加载 .csproj 原始文件,而不是在 vs.net 中加载项目)
【解决方案2】:

经过两天的痛苦,我创建了一个新项目,目标是 .NET 4.5,然后手动复制现有项目中的所有文件。确保新项目编译。删除了旧项目。将新项目移动到旧项目的目录中,以便我可以反向合并到主干。任务完成。

我要升级的项目是一个旧的 WPF 项目,在一个项目中包含数千个(不是开玩笑的)XAML 文件。它还有 MvvmLight(多年前)的发布预览版和旧版本的 Prism 以及一系列其他库。整个项目都是一团糟,一定有人做了一些非常愚蠢的事情,才让 .NET 4.5 变得如此困难。

【讨论】:

    【解决方案3】:

    对我来说,解决方案是从 .csproject 文件中删除所有无关的 <PropertyGroup> 部分 - 除了第一个部分。

    VS 2015 仅在其中一个(不是第一个)上将 <TargetFramework> 设置为 4.5.1。

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题。结果发现这些 DLL 是为目标框架 4.5.1 构建的,但我正在从事的项目仅为 4.5 构建。当我编译时,有一些被抑制的警告信息。当我显示编译警告时,这就是告诉我发生了什么的提示。

      我为框架 4.5 重新编译了 DLL,然后自动复制了 DLL,无需额外引用程序集。

      【讨论】:

        【解决方案5】:

        就我而言,我正在处理为 SharePoint 2010 设计的项目。显然,项目模板限制了可以选择的 .NET 目标框架版本。

        当我尝试编译 SharePoint 2016 服务器时,一旦我下载了 2016 年的 beta 模板,Visual Studio 会在尝试再次打开解决方案时自动提示我升级这些项目。希望这对某人有所帮助。

        SharePoint 2016 的预览版可在此处获得:https://www.microsoft.com/en-us/download/details.aspx?id=49972

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-07-26
          相关资源
          最近更新 更多