CustomizableOutDir = true在Team Build期间中断MSTest.exe

时间:2009-10-21 19:22:31

标签: tfs mstest team-build

使用CustomizableOutDir时,我遇到TFS Team Build正常触发MSTest.exe的问题。

TFSBuild.rsp

/verbosity:diagnostic
/p:CustomizableOutDir=true

TFSBuild.proj(构建代码段的解决方案)

    <!-- code -->
    <SolutionToBuild Include="$(BuildProjectFolderPath)/../../foo.csproj">
      <Properties>OutputPath=$(BinariesRoot)\WindowsServices\foo\</Properties>
    </SolutionToBuild>
    <!-- tests -->
    <SolutionToBuild Include="$(BuildProjectFolderPath)/../../test/test.sln">
      <Targets>t1;t2</Targets>
      <Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties>
    </SolutionToBuild>

同时使用<Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties><Properties></Properties>,我在构建结束时收到以下错误:

  

“C:\建立\ BuildType \ TFSBuild.proj”   (TestConfiguration target)(1:12) - &gt;   (CoreTestConfiguration目标) - &gt;
  MSBUILD:警告MSB6003:   指定的任务可执行文件“MSTest.exe”   无法运行。目录名称   无效

找到this article后,我又添加了以下内容:

  <Target Name="AfterCompile">
    <ItemGroup>
      <SolutionOutputs Condition="'%(CompilationOutputs.Solution)' == '$(Solution)'" Include="%(RootDir)%(Directory)**\*.*" />
      <ServiceOutputs Include="$(BinariesRoot)\WindowsServices\**\*.*" />
      <TestHarnessOutputs Include="$(BinariesRoot)\TestHarness\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(SolutionOutputs)" DestinationFolder="$(TeamBuildOutDir)" />
    <Copy SourceFiles="@(ServiceOutputs)" DestinationFolder="$(TeamBuildOutDir)"  />
    <Copy SourceFiles="@(TestHarnessOutputs)" DestinationFolder="$(TeamBuildOutDir)"  />
  </Target>

这给了这个:

  

(AfterCompile target) - &gt;
  C:\建立\ BuildType \ TFSBuild.proj(289,5):   错误MSB3023:没有目的地   为复制指定。请提供   “DestinationFiles”或   “DestinationDirectory”。

DestinationDirectory不是架构http://schemas.microsoft.com/developer/msbuild/2003的一部分,但我想我还是会尝试它。所以我将复制任务中的所有DestinationFolder更改为DestinationDirectory,正如预期的那样,我得到了这个:

  

(AfterCompile target) - &gt;
  C:\建立\ BuildType \ TFSBuild.proj(288,44):   错误MSB4064:   “DestinationDirectory”参数是   “复制”任务不支持。   验证参数是否存在   任务,它是一个可设置的公共   实例属性。
  C:\建立\ BuildType \ TFSBuild.proj(288,5):   错误MSB4063:“复制”任务可以   没有用它的输入初始化   参数。

那里的任何人都有CustomizableOutDir和MSTest与他们的TFS Team Build协调工作?

编辑:

我找到this discussion并应用了此更改:

<Target Name="BeforeTest">
  <!-- The tests won't run if the binaries directory does not exist -->
  <MakeDir
    Directories="$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)"
    Condition="!Exists('$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)')" />
</Target>

导致了这个:

  

“C:\建立\ BuildType \ TFSBuild.proj”   (RunTest目标)(1:11) - &gt;   “C:\建立\ BuildType \ TFSBuild.proj”   (TestConfiguration target)(1:12) - &gt;   (CoreTestConfiguration目标) - &gt;
  MSBUILD:警告MSB6006:   “MSTest.exe”退出,代码为1。

1 个答案:

答案 0 :(得分:4)

这使得tfs / mstest / msbuild感到高兴。

<Target Name="BeforeTest">
  <!-- The tests won't run if the binaries directory does not exist -->
  <MakeDir
    Directories="$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)"
    Condition="!Exists('$(BinariesRoot)\%(ConfigurationToBuild.FlavorToBuild)')" />
</Target>

没有获得任何测试结果是部署和测试盒配置的另一个问题。

相关问题