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

TFS:Wix使用TfvcTemplate.12无法找到源文件,tfs,msbuild,wix,Tfs,Msbuild,Wix,我需要使用TfvcTemplate.12.xaml,因为它支持生成前和生成后脚本执行,并且我需要作为预生成事件运行Powershell脚本 在TFS 2013上,使用旧的DefaultTemplate.xaml构建Wix项目效果良好。尝试使用新的默认模板TfvcTemplate.12.xaml生成csharp项目时效果良好,但Wix无法找到其文件,因为文件位于同一位置 以下是Wix代码: <?xml version="1.0" encoding="utf-8"?> <Wix x

我需要使用TfvcTemplate.12.xaml,因为它支持生成前和生成后脚本执行,并且我需要作为预生成事件运行Powershell脚本

在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>
(默认目标)(1)-> “D:\Builds\31\47\src\MyComp\playway\MyUser\Utilities\VisualStudio\TestInstall\test\u install.wixproj” (默认目标)(3)-> (编译目标)-> D:\Builds\31\47\src\MyComp\playerly\MyUser\Utilities\VisualStudio\TestInstall\Product.wxs(4): 警告CNDL1096:************目标=D:\Builds\31\47\bin\ ***********[D:\Builds\31\47\src\MyComp\playerd\MyUser\Utilities\VisualStudio\TestInstall\test\u install.wixproj] D:\Builds\31\47\src\MyComp\playway\MyUser\Utilities\VisualStudio\TestInstall\Product.wxs(5): 警告CNDL1096:************src=D:\Builds\31\47\bin\ **************[D:\Builds\31\47\src\MyComp\playerd\MyUser\Utilities\VisualStudio\TestInstall\test\u install.wixproj]

   "D:\Builds\31\47\src\MyComp\Playground\MyUser\Utilities\VisualStudio\AddProjToSln.sln"
2 Warning(s)
2 Error(s)
(默认目标)(1)-> “D:\Builds\31\47\src\MyComp\playway\MyUser\Utilities\VisualStudio\TestInstall\test\u install.wixproj” (默认目标)(3)-> (链接目标)-> D:\Builds\31\47\src\MyComp\playerly\MyUser\Utilities\VisualStudio\TestInstall\Product.wxs(12): 错误LGHT0103:系统找不到该文件 'D:\Builds\31\47\bin\addprojtosn.exe'。 [D:\Builds\31\47\src\MyComp\playerd\MyUser\Utilities\VisualStudio\TestInstall\test\u install.wixproj] D:\Builds\31\47\src\MyComp\playway\MyUser\Utilities\VisualStudio\TestInstall\Product.wxs(15): 错误LGHT0103:系统找不到该文件 'D:\Builds\31\47\bin\addprojtosn.exe.config'。 [D:\Builds\31\47\src\MyComp\playerd\MyUser\Utilities\VisualStudio\TestInstall\test\u install.wixproj]

   "D:\Builds\31\47\src\MyComp\Playground\MyUser\Utilities\VisualStudio\AddProjToSln.sln"
2 Warning(s)
2 Error(s)
时间流逝00:00:01.04

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

我无法理解为什么使用TfvcTemplate.12.xaml时,wix无法看到其文件,而这些文件却完整地存在于那里


非常感谢您的帮助。

经过一整天的努力,我终于解决了这个问题。就像挖了一座山,得到了一只老鼠:)

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

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

以下是用于说明的屏幕截图:

为什么-1?这种情况怎么了??