CustomizableOutDir = true在Team Build期间打破MSTest.exe

当使用CustomizableOutDir时,我遇到了TFS Team Build正确解雇MSTest.exe的问题。

TFSBuild.rsp

/verbosity:diagnostic
/p:CustomizableOutDir=true

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

    <!-- code -->
    <SolutionToBuild Include="$(BuildProjectFolderPath)/../../foo.csproj">
      <Properties>OutputPath=$(BinariesRoot)WindowsServicesfoo</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: build BuildType TFSBuild.proj”(TestConfiguration target)(1:12) - >(CoreTestConfiguration target) - >
MSBUILD:警告MSB6003:指定的任务可执行文件“MSTest.exe”无法运行。 目录名称无效

找到这篇文章后,我又添加了以下内容:

  <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) - >
C: build BuildType TFSBuild.proj(289,5):错误MSB3023:未指定复制的目标。 请提供“DestinationFiles”或“DestinationDirectory”。

DestinationDirectory不是架构http://schemas.microsoft.com/developer/msbuild/2003一部分,但我想我会试试它。 所以我将复制任务上的所有DestinationFolder都更改为DestinationDirectory ,并按预期方式将其更改为:

(AfterCompile target) - >
C: build BuildType TFSBuild.proj(288,44):错误MSB4064:“复制”任务不支持“DestinationDirectory”参数。 验证任务中是否存在参数,它是一个可设置的公共实例属性。
C: build BuildType TFSBuild.proj(288,5):错误MSB4063:“复制”任务无法使用其输入参数进行初始化。

任何人都有CustomizableOutDir和MSTest与他们的TFS团队建设协调一致工作?

编辑:

我发现了这个讨论并应用了这个变化:

<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: build BuildType TFSBuild.proj”(RunTest target)(1:11) - >“C: build BuildType TFSBuild.proj”(TestConfiguration target)(1:12) - >(CoreTestConfiguration target) - >
MSBUILD:警告MSB6006:“MSTest.exe”退出代码1。


这使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>

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

链接地址: http://www.djcxy.com/p/43485.html

上一篇: CustomizableOutDir=true breaks MSTest.exe during Team Build

下一篇: How to pass choices to ChoiceField?