nab*_*rid 13 msbuild clickonce winapi
我有一个在Windows Server 2003上运行的CruiseControl .NET构建服务器,我正在尝试使用msbuild构建和发布我的ClickOnce应用程序.
除非我启用ClickOnce应用程序的引导程序,否则一切正常.发生这种情况时,我在DeploymentGenerateBootstrapper目标中收到以下错误:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets (3939,9):
error MSB3147:
Could not find required file 'setup.bin' in 'E:\Projects\src\TestProject\Engine'.
Run Code Online (Sandbox Code Playgroud)
.NET Framework 3.5 SP1和4以及最新的Windows SDK都安装在服务器上,但C:\ Program Files\Microsoft SDKs\Windows\versionNo \中的引导程序文件夹不存在.我试着从我的工作站机器上复制文件而没有运气.
我不想在服务器上安装Visual Studio,只安装必要的SDK.
我也尝试从我的机器上复制bootsrapper文件夹
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper
C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper
Run Code Online (Sandbox Code Playgroud)
建立服务器,但没有运气.
有任何想法吗?
jpi*_*son 15
您还必须将关联的键和值添加到注册表,以允许MSBuild查找Bootstrapper文件夹的路径.我可以使用以下注册表确认这对我有用.
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\GenericBootstrapper\4.0]
@="0"
"Path"="C:\\Program Files\\Microsoft SDKs\\Windows\\v7.1\\Bootstrapper\\"
Run Code Online (Sandbox Code Playgroud)
更新:根据Emma的TFS博客,似乎检查以下注册表值以查找引导程序路径,如果未找到,则在Engine子文件夹下的本地项目文件夹中查找,如果在那里找不到则返回MSB3147错误.
提醒:还要记住有32位和64位注册表,因此请务必将此值添加到工具将访问的同一注册表中.
与此同时,我还创建了一个功能请求,以便为此问题获得更合理的解决方案.请对我的功能请求进行投票,以便微软查看它.
顺便说一下,这里有一些关于这个问题的链接:
您还可以将引导程序包的位置传递给公共Publish目标,如下所示:
<PropertyGroup>
<BootstrapperSdkPath>C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\Bootstrapper</BootstrapperSdkPath>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)
然后
<Target Name="Publish">
<MSBuild Targets="publish" ... Properties="GenerateBootstrapperSdkPath=$(BootstrapperSdkPath); ..."/>
</Target>
Run Code Online (Sandbox Code Playgroud)