使用团队构建功能构建带有bootstrapper的ClickOnce应用程序
当使用团队构建(Team Build)来构建带有bootstrapper的ClickOnce应用程序时,构建过程可能会失败,日志中带有如下错误信息(采自英文版)
“C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3604,9): error MSB3147: Could not find required file 'setup.bin' in 'BuildAgent_work_folder\Sources\Project_Root\Engine'. “
这个错误来自MSBuild的一个构建任务GenerateBootstrapper。该任务从构建服务器本机寻找产生bootstrapper setup.exe 文件的资源文件。对资源文件 (setup.bin及其相关文件)的搜索是通过依次查询下列注册表键值进行的:
1. HKLM\Software\Microsoft\GenericBootstrapper\1.0\path
2. HKLM \Software\Microsoft\.NetFramework\SDKInstallRoot<Version> \Bootstrapper
3. HKLM \Software\Microsoft\VisualStudio\ <Version> \InstallDir\Bootstrapper
在搜索过程的每一步,如果该注册表值存在,则MSBuild使用该值指向的路径作为bootstrapper资源文件路径。否则继续按顺序查找下去。三个注册表值都未设置的话,MSBuild会使用正在构建的ClickOnce项目的根路径作资源文件路径。MSBuild查找资源文件安装路径下的\engine\setup.bin文件。如果文件找不到,就会报MSB3147 错误。
bootstrapper相关文件是.Net Framework SDK的一部分。该SDK安装的时候拷贝一组文件到本地硬盘,并设置注册表。没有安装这个SDK的计算机上,三个注册表值都不会被设置。这种情况下MSBuild最终会在正在构建的ClickOnce项目的根路径下搜寻并在此报错。
解决方案是在团队构建服务器上安装.Net Framework SDK 。 如果安装windows SDK或Visual Studio集成开发环境,.Net Framework SDK 也会自动作为其中一部分被安装。
Comments
- Anonymous
April 14, 2009
PingBack from http://blogs.msdn.com/emmamou/archive/2009/04/08/team-build-for-clickonce-application-with-bootstrapper.aspx