Msbuild 构建以框架3.5为目标的C++项目,但生成面向对象框架4

Msbuild 构建以框架3.5为目标的C++项目,但生成面向对象框架4,msbuild,Msbuild,背景 我们有一个C++解决方案,从VS2005迁移到VS2010,其中项目文件以.NET框架3.5为目标,但是自从移到VS2010,所有的项目文件都显示它们是针对.NET框架4的。此后,我已手动更改了.vcxproj文件,以便它们以.NETFramework3.5为目标,并使用了本文社区内容中描述的方法 问题 当我手动或通过自动生成生成这些项目文件时,输出程序集仍然以.net framework 4.0为目标。我可以通过使用所描述的各种方法来判断这一点。我也知道,当我为这个应用程序构建和运行安装

背景

我们有一个C++解决方案,从VS2005迁移到VS2010,其中项目文件以.NET框架3.5为目标,但是自从移到VS2010,所有的项目文件都显示它们是针对.NET框架4的。此后,我已手动更改了.vcxproj文件,以便它们以.NETFramework3.5为目标,并使用了本文社区内容中描述的方法

问题

当我手动或通过自动生成生成这些项目文件时,输出程序集仍然以.net framework 4.0为目标。我可以通过使用所描述的各种方法来判断这一点。我也知道,当我为这个应用程序构建和运行安装程序时,情况就是这样。一旦安装了应用程序并显示为服务,我将尝试在目标机器上启动该服务。如果未安装.net framework 4.0,此服务将无法在计算机上启动。如果随后安装了4.0,服务将启动,因此这是我可以运行的另一个测试,它向我显示应用程序对.NETFramework4.0有依赖性,而它不应该依赖于.NETFramework4.0

目的

理想情况下,我需要构建这个应用程序,以便输出的目标是.NETFramework3.5而不是4.0,这样它才能真正按照预期运行!我曾尝试使用MSBuild的3.5版本,如本问题的一个答案中所述,但遇到了与该帖子下面描述的相同的错误

有人能帮忙吗?这被证明是一种正确的疼痛,我已经用头撞墙一个多星期了,试图解决这个问题

再次提前感谢

请确保按照您发布的第一个链接中提供的所有说明进行操作

比如说,

确保已在生成服务器上安装Visual Studio 2008

确保还将每个项目的平台工具集更改为v90

验证项目的框架版本:在解决方案资源管理器中,右键单击项目,然后单击属性。在Property Pages窗口的左侧窗格中,展开Common Properties,然后选择Framework和References。验证新框架版本是否显示在右窗格的顶部


谢谢你的回复,我已经了解了你的观点1-我安装了VS2008,然后安装了SP1 2-我已经将所有项目工具集更改为v90 3-我已经验证了所有项目都是针对framework 3.5的。我现在在为项目运行自动生成时遇到的问题是非常奇怪的C:\Program文件x86\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets 293:指定的平台工具集v90需要Visual Studio 2008。请确保计算机上已安装Visual Studio 2008。我想知道为什么会这样。有什么想法吗?在构建应用程序时,通过以下命令将/p:TargetFrameworkVersion=v3.5传递给MSBuild不幸的是,我已经将其作为MSBuild的参数。还有其他想法吗?能否将我们与您的示例项目和代码联系起来?我可以在我的机器上测试它,因为它可能与您的环境有关。它在另一台机器上工作吗?尝试传递/verbosity:diag命令行选项以获取有关错误的更多诊断信息。