安装Framework 4.5时,以.NET Framework 4为目标

时间:2012-12-18 21:55:10

标签: c# visual-studio-2010 .net-4.0 .net-4.5 .net-framework-version

我的计算机上安装了VS2010和VS2012,并安装了.NET Framework 4.0,然后升级到.NET Framework 4.5。但是,我仍在开发需要在.NET Framework 4.0上运行的应用程序。该项目表示它的目标是.NET Framework 4(客户端配置文件),程序集甚至指向Referenced Assemblies下的.NET Framework 4.0文件夹。问题出现了,当我将此应用程序移动到只有4.0的计算机时,它将无法启动并出现错误,直接问题是由WindowState={Binding WindowState}引起的异常,而您在4.0中无法做到但您可以在4.5。我需要这个在我的开发盒上抛出异常,为什么不呢?我的假设是,尽管我付出了最大的努力,但如果它们存在,它会使用4.5 dll。如何在没有卸载4.5的情况下使其真正使用4.0?

更新

要重新安装.NET Framework 4.5并创建一个面向.NET Framework 4.0的WPF项目。将WindowState绑定到VM或后面的代码中的属性使此属性具有公共get和private集。即使Mode = TwoWay必须忽略.NET Framework 4没有设置并且抛出异常,.NET Framework 4.5也可以处理这个问题:“TwoWay或OneWayToSource绑定不能对类型的只读属性'State'起作用。 “。在.NET Framework 4.5的框中就像魅力一样在只有.NET Framework 4.0的机器上尝试它并且它会爆炸......所以有关如何在安装4.5时真正定位4.0的想法?

此处向MS报告错误:https://connect.microsoft.com/VisualStudio/feedback/details/774694/targeting-net-framework-4-0-when-4-5-doesnt-seem-to-work

4 个答案:

答案 0 :(得分:3)

是时候提出这个问题了。我不是WPF的专家,对这些问题不太喜欢,调试依赖属性问题是一场噩梦。但我相信你正在追逐鬼魂。 WindowState一直是一个依赖属性,一直回到3.0,4.5中没有什么特别的事情发生在我能看到或听说过的。

您收到某种错误消息,没有人能够看到它确信它与绑定有关。我来自密苏里州的Show Me State。嗯,足够接近威斯康星州。

花费更多时间处理代码,为您提供可靠的异常消息和堆栈跟踪,帮助您诊断部署到的计算机上的错误,没有调试器的代码可以帮助您找出问题所在。您可以通过为AppDomain.CurrentDomain.UnhandledException事件编写事件处理程序来完成此操作。记录或显示e.ExceptionObject.ToString()返回值。它会为您提供异常消息和Holy Stack Trace。如果这没有帮助,那么用你看到的内容更新你的问题。

答案 1 :(得分:3)

这似乎是.NET Framework 4.5中的一个错误,它应该抛出异常,但是如果安装了.NET Framework 4.5,则无法在.NET Framework 4.0上运行应用程序,它将始终使用4.5。

有关详细信息,请参阅此报告的错误: http://connect.microsoft.com/VisualStudio/feedback/details/773682/wpf-property-with-private-setter-is-updated-by-a-twoway-binding

答案 2 :(得分:0)

.Net 4.5将.net 4.0替换为新的,同名的库,实际上有一些修复。 这是简短的回答。

与早期版本不同,更新.net 4到4.5会替换文件,而不是添加旁边文件。 即使你有像这样的Windows / Microsoft.Net / Framework / v40 /的文件夹, 更新后,此文件夹中有更改。 文件被更改,一些错误在.net中处理,没有开发人员的关注。

如何使用.net 4.5定位4.0框架? 我还是不知道,但我还在挖掘

有关此主题的建议阅读:

Scott Hanselman: http://www.hanselman.com/blog/NETVersioningAndMultiTargetingNET45IsAnInplaceUpgradeToNET40.aspx

Rick Strahl: http://weblog.west-wind.com/posts/2012/Mar/13/NET-45-is-an-inplace-replacement-for-NET-40

类似的问题,由我创造: https://stackoverflow.com/questions/26483168/errors-on-net-4-0-dont-appear-on-net-4-5

答案 3 :(得分:0)

解决方案:

VS2015 之后安装 VS2017 时,我遇到了同样的问题:Framework 4.0刚刚从项目目标列表中消失。

在此处发表一些评论之后,我尝试使用NuGet包: Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.4和bin修复1.0.1。

不要这样做!对于同一个项目,我的构建时间增加了约300%。这是灾难。

  

我看到4.5是"就地替换" for 4.0然而,这并不能解释为什么我无法在目标框架组合中看到这两个选项。

我正在网上阅读同样的口头禅。它根本没有回答问题。对于任何工业机械相关软件,Framework 4.0都是必须 - 因为它运行在Windows XP上,而.NET 4.5。在我的场景中没用,也可能用于许多其他现实生活中的东西。

解决方案很简单: 您只需从官方网页下载并安装Visual Studio 2013 Express https://www.microsoft.com/en-us/download/details.aspx?id=44914

安装后,只需打开 VS2015 ,您就会再次看到 4.0

enter image description here

... "替换......"我......

这是我在重复问题上给出的答案的重新发布。我在这里发帖,因为这个帖子得到了更多的关注,现有的答案在这里没有解决问题。