【发布时间】:2011-06-12 03:44:25
【问题描述】:
我有一个在 VS 2008 中构建良好的项目,然后我们安装并开始使用 TFS Build,然后我们升级到 TFS 2010。一切仍然正常并且构建正确(在我实施了新的构建过程之后从任何远程 Visual Studio 2010 客户端单击构建启动,一切都非常好)。 Visual Studio 不需要安装在 Build Agent 上。我非常努力(非常很难)不在 Build Agent 上安装 Visual Studio,因为我的理解是没有必要,而且我们没有获得在非开发机器上安装它的许可.
现在我尝试将解决方案升级到 VS 2010,仍然针对 .NET 3.5,因为它是针对 SQL Server CLR 过程的程序集,而 SQL Server 还不支持 .NET 4.0。但我根本无法在 TFS Build 下再构建它。我似乎无法从 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 构建给我的错误是:
C:\TFSBld[...]\GenerateLanguage\GenerateLanguage.vcxproj(46,3): 错误 MSB4019:导入的项目 “C:\Microsoft.Cpp.Default.props”原为 未找到。确认路径在 声明正确, 并且该文件存在于磁盘上。
当我点击该错误时,它会将我带到 vcxproj 文件中的这一行:
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
在这个项目中我真正需要做的就是运行 resgen 以从 resx 文件生成资源文件,并将它们编译成卫星程序集。我正在使用 makefile 构建来执行此操作,手动运行 resgen(我认为这是因为我找不到任何其他方式将卫星程序集编译为独立解决方案的方法),然后将它们编译成 DLL(我现在不记得它是如何工作的,但我认为它是手动运行 AL.exe 以从资源文件编译 DLL 文件)。所以基本上我只需要运行命令行来构建这个项目,而我似乎找不到一个合理的方法来完成它而不扔掉整个项目并编辑TFS构建脚本来运行一堆硬编码的命令行反而。一定有更好的方法。
我一整天都在做这件事,并尝试编写自己的 .targets 文件和 .xml 属性表来代替标准文件,但这让我难以接受。我尝试简单地删除这些行,但随后 MSBuild 抱怨没有“构建”目标。我尝试在 vcxproj 文件中添加一个虚拟对象,但它似乎没有运行所有工作都已完成的构建前和构建后步骤。
【问题讨论】:
-
看来这个问题已经在这里回答了:stackoverflow.com/questions/3043294/… 更新/删除这个问题的正确方法是什么?
标签: .net visual-studio-2010 msbuild tfsbuild