在VS2010中将.NET 4回溯到3.5 SP1

4
我写了一个简单的VS2010 WPF应用程序,它针对.NET Framework 4客户端框架。 (实际上,我的应用程序不使用任何.NET 4功能,但是由于默认情况下,VS2010会开始我的项目以针对.NET 4,因此我没有检查它)
我发现所有XP系统甚至一些各种语言的Window 7无法启动该应用程序。 我决定将我的应用程序回退到针对.NET Framework 3.5或.NET Framework 3.5客户端框架,方法是更改解决方案属性中的“目标框架”。 但是应用程序在System.Xaml和Microsoft.CSharp上编译或构建时出现以下错误:
Warning 1   Could not resolve assembly System.Xaml. The target framework required by this assembly (4.0) is higher than the project target framework. If this reference is required by your code, you may get compilation errors.   test1
Warning 2   The primary reference "Microsoft.CSharp", which is a framework assembly, could not be resolved in the currently targeted framework. ".NETFramework,Version=v3.5". To resolve this problem, either remove the reference "Microsoft.CSharp" or retarget your application to a framework version which contains "Microsoft.CSharp".    test1
Warning 3   The referenced component 'Microsoft.CSharp' could not be found.     
Warning 4   The referenced component 'System.Xaml' could not be found.  

是否可以将VS2010应用程序回溯到.NET 3.5?如果可以,如何进行?

[编辑]

我发现有一个控件 - DataGrid - 是为.NET 4设计的。我必须安装WPF工具包才能将控件回溯到3.5。希望对某些人有所帮助。

3个回答

4

只需将它们移除即可。我已经测试过,对我有效。我相信那些程序集仅在.NET 4中引入。例如,System.Xaml中的类型在.NET 3.5中是在其他地方定义的(例如PresentationCore)。有关更多信息,请参见此文章


谢谢。虽然这篇文章没有指出什么是替换参考,但它让我走向了正确的方向——删除错误的参考和所有属于运行时v2.0的参考(大约有20个……),我的应用程序运行得很好。 - KMC

1

完全删除这些引用。如果您仍然需要它们,请通过Visual Studio的用户界面重新添加它们。您应该能够看到那些程序集的3.5版本或2.0版本。通过使用这些旧版本,您的应用程序应该可以编译。


移动引用后,窗口不显示。我无法看到要添加回“添加引用”的引用。 - KMC
@KMC 如果你把它们移除后运行项目,你的应用程序窗口是否会显示?我在我的 WPF 项目中测试过,它可以正常工作。 - Ilian
@IlianPinzon 不,它没有显示。但现在它可以工作了。请看我对你的回答的评论。 - KMC

0

你需要在引用文件夹中删除那些引用,并使用3.5版本重新添加它们。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接