.net 如何使用TFS构建(无VS2010)构建VS2010 MakeFile项目(vcxproj)
我有一个项目在VS2008中构建得很好,然后我们安装并开始使用TFS构建,然后我们升级到TFS 2010。一切都很好,并且构建正确(在我实现了新的构建过程之后,通过从任何远程VisualStudio2010客户端单击一次构建启动,一切都非常好)。不需要在生成代理上安装Visual Studio。我非常努力(非常努力)不在构建代理上安装VisualStudio,因为我的理解是这是不必要的,而且我们没有许可在非开发机器上安装它 现在我尝试将解决方案升级到VS 2010,仍然以.NET 3.5为目标,因为它是针对SQL Server CLR过程的程序集,而SQL Server还不支持.NET 4.0。但我无法让它在TFS构建下再构建。我似乎无法从TFS Build和MS Build命令行获得一致的错误消息,但我认为这与Microsoft.Cpp.Targets不在C:\Program Files\MSBuild\中有关,因为我尚未安装Visual Studio。我确实安装了Microsoft Windows SDK 7.1,这样我就可以为其他一些.NET 4.0项目运行.NET 4.0 SDK工具,如svcutil,但似乎没有安装此版本所需的内容。TFS build给我的错误是: C:\TFSBld[…]\GenerateLanguage\GenerateLanguage.vcxproj(46,3): 错误MSB4019:导入的项目无效 “C:\Microsoft.Cpp.Default.props”是 没有找到。请确认路径是否在中 声明是正确的,, 并且该文件存在于磁盘上 当我点击该错误时,它会将我带到vcxproj文件中的这一行:.net 如何使用TFS构建(无VS2010)构建VS2010 MakeFile项目(vcxproj),.net,visual-studio-2010,msbuild,tfsbuild,.net,Visual Studio 2010,Msbuild,Tfsbuild,我有一个项目在VS2008中构建得很好,然后我们安装并开始使用TFS构建,然后我们升级到TFS 2010。一切都很好,并且构建正确(在我实现了新的构建过程之后,通过从任何远程VisualStudio2010客户端单击一次构建启动,一切都非常好)。不需要在生成代理上安装Visual Studio。我非常努力(非常努力)不在构建代理上安装VisualStudio,因为我的理解是这是不必要的,而且我们没有许可在非开发机器上安装它 现在我尝试将解决方案升级到VS 2010,仍然以.NET 3.5为目标,
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
在这个项目中,我真正需要做的就是运行resgen从resx文件生成资源文件,并将它们编译成卫星程序集。我使用makefile构建来实现这一点,手动运行resgen(我想这是因为我找不到任何其他方法将卫星程序集编译为独立的解决方案),然后将它们编译成DLL(我不记得现在是如何工作的,但我想它是手动运行AL.exe从资源文件编译DLL文件的)。所以基本上我只需要运行命令行来构建这个项目,而我似乎找不到一个合理的方法来完成它,而不扔掉整个项目并编辑TFS构建脚本来运行一堆硬编码的命令行。一定有更好的办法
我整天都在这样做,并试图编写自己的.targets文件和.xml属性表来代替标准文件,但这太让我头疼了。我试图简单地删除这些行,但是MSBuild抱怨没有“Build”目标。我尝试向vcxproj文件添加一个虚拟对象,但它似乎没有运行所有工作都已完成的构建前和构建后步骤。我设计了一个有点复杂但功能性的解决方案,涉及以下步骤
- Microsoft.Build.CPPTasks.Common.dll
- Microsoft.BuildSteps.targets
- Microsoft.Cl.Common.props
- Microsoft.Cpp.Default.props
- Microsoft.Cpp.props
- Microsoft.Cpp.targets
- Microsoft.CppBuild.targets
- Microsoft.cppcomon.targets
- Microsoft.Link.Common.props
- Microsoft.MakeFile.targets
- 平台\Win32\Microsoft.Cpp.Win32.default.props
- 平台\Win32\Microsoft.Cpp.Win32.props
- Platfotms\Win32\Microsoft.Cpp.Win32.targets
Microsoft Windows SDK 7.1具有多个安装选项。仅使用“.NET开发”子“工具”检查显然不足以构建VCXPROJ项目,即使它们不包括任何C++代码(仅是预构建和后生成步骤)。添加“VisualC++编译器”选项并完全选择“智能感知和引用程序集”复选框安装必要的文件和设置。我不确定两者是否都有必要,但这种组合确实对我有效。BlueMonkMN的一个改进替代方案是添加
<PropertyGroup>
<VCTargetsPath Condition="'$(VCTargetsPath)' == ''">[path_to_the_fileset_listed]</VCTargetsPath>
</PropertyGroup>
[列出的文件集的路径]
作为靠近vcxproj顶部的1级儿童
路径可以包括一个环境变量或其他一些已知的包含变量的路径
这减少了入侵,并且比更改大量行更容易恢复。为
VCTargetsPath
添加环境变量的更简单方法:
- e、 g.
C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V120
控制面板>系统>高级设置>高级>环境变量