【发布时间】:2012-12-06 04:47:15
【问题描述】:
我的计算机上安装了 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 中的属性或后面的代码使该属性具有公共获取和私有集。 .NET Framework 4.5 可以很好地处理这个问题,即使 Mode=TwoWay 必须忽略设置的 .NET Framework 4 不会并引发异常:“TwoWay 或 OneWayToSource 绑定无法对类型的只读属性 'State' 起作用.. ."。在带有 .NET Framework 4.5 的盒子上,它就像一个魅力,在只有 .NET Framework 4.0 的机器上试一试,结果它爆炸了……那么,关于如何在安装 4.5 时真正瞄准 4.0 有什么想法吗?
【问题讨论】:
-
如果您的目标是 .NET 4.0,那么为什么您的代码使用的东西只能在 .NET 4.5 中使用?
-
假设这是准确的(我对此表示怀疑),它不会在您的开发盒上引发异常,因为您不再安装 .NET 4.0。 .NET 4.5 取代了它。
-
@John:他不知道它只在 4.5 中有效。即使用户碰巧安装了 .NET 4.5,他也希望发生异常。
-
所以在 Project Properties->Application->Target Framework 下它说 .Net Framework 4 Client Profile?
-
@HansPassant 这就是 .NET 4.5 取代 .NET 4.0 但我想为 .NET 4.0 开发的地方,那么我该如何在不卸载 4.5 的情况下做到这一点,因为我有应用程序要针对 4.5?
标签: c# visual-studio-2010 .net-4.0 .net-4.5 .net-framework-version