TFS:使用TfvcTemplate.12的Wix无法找到源文件

时间:2014-10-13 12:40:03

标签: tfs msbuild wix

我需要使用TfvcTemplate.12.xaml,因为它有Pre和Post构建脚本执行支持,我需要运行Powershell脚本作为PreBuild事件。

在TFS 2013上,使用旧的DefaultTemplate.xaml构建Wix项目可以正常工作。在尝试使用新的默认模板构建时,TfvcTemplate.12.xaml构建了csharp项目,但Wix无法找到其文件,而文件存在于同一位置。

这是Wix代码:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <?define SourceDir=$(var.OutDir)?>
  <?warning **************** Target=$(var.TargetDir) ***********?>
  <?warning **************** src=$(var.SourceDir) **************?>
    <Product Id="*" Language="1033" Manufacturer="Test" Name="Testing" UpgradeCode="DB7DAC5A-ED29-45E6-8029-89F6486A9ACA" Version="1.0.0.0">
        <Package Compressed="yes" InstallerVersion="200" Platform="x64" />
        <Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder" Name="ProgFiles">
            <Directory Id="bin" Name="bin">
                <Component Id="AddProjToSln.exe" Guid="*">
                    <File Id="AddProjToSln.exe" KeyPath="yes" Source="$(var.SourceDir)AddProjToSln.exe" />
                </Component>
                <Component Id="AddProjToSln.exe.config" Guid="*">
                    <File Id="AddProjToSln.exe.config" KeyPath="yes" Source="$(var.SourceDir)AddProjToSln.exe.config" />
                </Component>
               </Directory>
        </Directory>
        </Directory>
        <Feature Id="ProductFeature" Level="1" Title="TestFe">
            <ComponentGroupRef Id="Testing" />
        </Feature>
        <Media Id="1" Cabinet="product.cab" EmbedCab="yes" />
    </Product>
    <Fragment>
        <ComponentGroup Id="Testing">
            <ComponentRef Id="AddProjToSln.exe" />
            <ComponentRef Id="AddProjToSln.exe.config" />
        </ComponentGroup>
    </Fragment>
</Wix>

以下是TFS的日志:

  

Build于2014年10月13日下午5:24:15开始。        1&gt;项目&#34; D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ AddProjToSln.sln&#34;   在节点1上(默认目标)。        1 GT; ValidateSolutionConfiguration:            构建解决方案配置&#34;调试|任何CPU&#34;。        1&gt;项目&#34; D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ AddProjToSln.sln&#34;   (1)正在建设中   &#34; d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ AddProjToSln \ AddProjToSln.csproj&#34;   (2)在节点1上(默认目标)。        2 - ; PrepareForBuild:            创建目录&#34; obj \ Debug \&#34;。        1&gt;项目&#34; D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ AddProjToSln.sln&#34;   (1)正在建设中   &#34; d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ test_install.wixproj&#34;   (3)在节点2上(默认目标)。        3 GT; PrepareForBuild:            创建目录&#34; obj \ Debug \&#34;。          编译:            C:\ Program Files(x86)\ WiX Toolset v3.8 \ bin \ candle.exe -dDebug -d&#34; DevEnvDir = 如果不在Visual Studio中构建,则未定义&#34;   -dSolutionDir = d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\的VisualStudio \   -dSolutionExt = .sln -dSolutionFileName = AddProjToSln.sln -dSolutionName = AddProjToSln -dSolutionPath = D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ AddProjToSln.sln   -dConfiguration = Debug -dOutDir = D:\ Builds \ 31 \ 47 \ bin \ -dPlatform = x86 -dProjectDir = D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ TestInstall \   -dProjectExt = .wixproj -dProjectFileName = test_install.wixproj -dProjectName = test_install -dProjectPath = D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ TestInstall \ test_install.wixproj   -dTargetDir = D:\ Builds \ 31 \ 47 \ bin \ -dTargetExt = .msi -dTargetFileName = test.msi -dTargetName = test -dTargetPath = D:\ Builds \ 31 \ 47 \ bin \ test.msi -out obj \ Debug \ -arch x86 Product.wxs        3 GT; d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ Product.wxs(4):   警告CNDL1096:****************目标= D:\ Builds \ 31 \ 47 \ bin \   *********** [D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ TestInstall \ test_install.wixproj]        3 GT; d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ Product.wxs(5):   警告CNDL1096:**************** src = D:\ Builds \ 31 \ 47 \ bin \   ************** [D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ TestInstall \ test_install.wixproj]          链接:            C:\ Program Files(x86)\ WiX Toolset v3.8 \ bin \ Light.exe -out D:\ Builds \ 31 \ 47 \ bin \ test.msi -pdbout D:\ Builds \ 31 \ 47 \ bin \ test .wixpdb   -cultures:null -contentsfile obj \ Debug \ test_install.wixproj.BindContentsFileListnull.txt   -outputsfile obj \ Debug \ test_install.wixproj.BindOutputsFileListnull.txt   -builtoutputsfile obj \ Debug \ test_install.wixproj.BindBuiltOutputsFileListnull.txt   -wixprojectfile D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ TestInstall \ test_install.wixproj   OBJ \调试\ Product.wixobj        2 - ; GenerateTargetFrameworkMonikerAttribute:          跳过目标&#34; GenerateTargetFrameworkMonikerAttribute&#34;因为所有输出文件都相对于输入是最新的   文件。        3 GT; d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ Product.wxs(12):   错误LGHT0103:系统找不到该文件   &#39; d:\构建\ 31 \ 47 \ BIN \ AddProjToSln.exe&#39 ;.   [d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ test_install.wixproj]        3 GT; d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ Product.wxs(15):   错误LGHT0103:系统找不到该文件   &#39; d:\构建\ 31 \ 47 \ BIN \ AddProjToSln.exe.config&#39 ;.   [d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ test_install.wixproj]        3&gt;完成建筑项目&#34; D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ TestInstall \ test_install.wixproj&#34;   (默认目标) - 失败。        2 - ; CoreCompile:            C:\ Program Files(x86)\ MSBuild \ 12.0 \ bin \ amd64 \ Csc.exe / noconfig / nowarn:1701,1702 / nostdlib + / platform:AnyCPU   / errorreport:prompt / warn:4 /main:AddProjToSln.Program / highentropyva +   / reference:&#34; c:\ Program Files(x86)\ Microsoft Visual Studio   10.0 \ Common7 \ IDE \ PublicAssemblies \ envdte.dll&#34; / reference:&#34; c:\ Program Files(x86)\ Microsoft Visual Studio   10.0 \ Common7 \ IDE \ PublicAssemblies \ envdte100.dll&#34; / reference:&#34; c:\ Program Files(x86)\ Microsoft Visual Studio   10.0 \ Common7 \ IDE \ PublicAssemblies \ envdte80.dll&#34; / reference:&#34; c:\ Program Files(x86)\ Microsoft Visual Studio   10.0 \ Common7 \ IDE \ PublicAssemblies \ envdte90.dll&#34; / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ Microsoft.CSharp.dll&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ Microsoft.VisualBasic.dll中&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ mscorlib.dll中&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ System.Core.dll&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ System.Data.DataSetExtensions.dll&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ System.Data.dll中&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ System.dll中&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ System.Windows.Forms.dll的&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ system.xml.dll的&#34;   / reference:&#34; C:\ Program Files(x86)\ Reference   大会\微软\ Framework.NETFramework \ V4.5 \ System.Xml.Linq.dll&#34;   / debug + / debug:full / filealign:512 / optimize-   /out:obj\Debug\AddProjToSln.exe /subsystemversion:6.00 / target:exe   / utf8output / win32icon:&#34; Crystal_Clear_mimetype_recycled(2).ico&#34;   Program.cs Properties \ AssemblyInfo.cs   &#34; C:\ Users \用户tfsbuild \应用程序数据\本地\ Temp.NETFramework,版本= v4.5.AssemblyAttributes.cs&#34;          _CopyAppConfigFile:            从&#34; App.config&#34;复制文件;到&#34; D:\ Builds \ 31 \ 47 \ bin \ AddProjToSln.exe.config&#34;。          CopyFilesToOutputDirectory:            从&#34; obj \ Debug \ AddProjToSln.exe&#34;复制文件到&#34; D:\ Builds \ 31 \ 47 \ bin \ AddProjToSln.exe&#34;。            AddProjToSln - &gt; d:\构建\ 31 \ 47 \ BIN \ AddProjToSln.exe            从&#34; obj \ Debug \ AddProjToSln.pdb&#34;复制文件到&#34; D:\ Builds \ 31 \ 47 \ bin \ AddProjToSln.pdb&#34;。        2&gt;完成建筑项目&#34; D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ AddProjToSln \ AddProjToSln.csproj&#34;   (默认目标)。        1&gt;完成建筑项目&#34; D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ AddProjToSln.sln&#34;   (默认目标) - 失败。

     

构建失败。

   "D:\Builds\31\47\src\MyComp\Playground\MyUser\Utilities\VisualStudio\AddProjToSln.sln"
     

(默认目标)(1) - &gt;          &#34; d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ test_install.wixproj&#34;   (默认目标)(3) - &gt;          (编译目标) - &gt;            d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ Product.wxs(4):   警告CNDL1096:****************目标= D:\ Builds \ 31 \ 47 \ bin \   *********** [D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ TestInstall \ test_install.wixproj]            d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ Product.wxs(5):   警告CNDL1096:**************** src = D:\ Builds \ 31 \ 47 \ bin \   ************** [D:\ Builds \ 31 \ 47 \ src \ MyComp \ Playground \ MyUser \ Utilities \ VisualStudio \ TestInstall \ test_install.wixproj]

   "D:\Builds\31\47\src\MyComp\Playground\MyUser\Utilities\VisualStudio\AddProjToSln.sln"
     

(默认目标)(1) - &gt;          &#34; d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ test_install.wixproj&#34;   (默认目标)(3) - &gt;          (链接目标) - &gt;            d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ Product.wxs(12):   错误LGHT0103:系统找不到该文件   &#39; d:\构建\ 31 \ 47 \ BIN \ AddProjToSln.exe&#39 ;.   [d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ test_install.wixproj]            d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ Product.wxs(15):   错误LGHT0103:系统找不到该文件   &#39; d:\构建\ 31 \ 47 \ BIN \ AddProjToSln.exe.config&#39 ;.   [d:\构建\ 31 \ 47 \ SRC \ MyComp \游乐场\ MYUSER \公用事业\ VisualStudio的\ TestInstall \ test_install.wixproj]

2 Warning(s)
2 Error(s)
     

时间流逝00:00:01.04

我多次验证文件是否存在,并且在使用MsBuild和Wix工具集的命令行中构建没有任何问题。

我无法弄清楚为什么使用TfvcTemplate.12.xaml,wix无法查看其文件,而这些文件在那里完好无损....

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:2)

所以,经过一整天的努力,终于能够解决这个问题。像Digg一座山,有一只老鼠:)。

实际上TfvcTemplate.12.xaml似乎正在执行启用并行处理的MsBuild(/ m),而在我的VS解决方案中,Wix项目是独立添加的,即在Build Order中它是最后一个要构建的项目,但我从未设置过其他项目作为其依赖项。因此,MSBuild发现它没有依赖关系并忽略了它的构建顺序,只是按随机顺序或第一个项目构建它。所以自然安装程序项目无法找到其源文件,因此失败。

我通过删除MSBuild的/ m:1参数并将所有其他项目声明为Wix Project的依赖项来验证这种现象:即在VS,PROJECT - &gt;中。项目依赖性。这导致MsBuild在Wix Project之前构建所有其他项目,现在Wix能够正确地找到它的源文件......

以下是插图的截图: Forcing linear processing in TfvcTemplate