代码之家  ›  专栏  ›  技术社区  ›  slf

CustomizableOutDir=true在团队构建期间中断MSTest.exe

  •  7
  • slf  · 技术社区  · 15 年前

    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> ,我在生成结束时遇到以下错误:

    (CoreTestConfiguration目标)>
    MSBUILD:警告MSB6003:错误 无法运行。目录名

    发现后 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>
    

    (后编译目标)>
    C:\build\BuildType\TFSBuild.proj(289,5): 错误MSB3023:没有目标 “目的地文件”或 “目的地董事”。

    http://schemas.microsoft.com/developer/msbuild/2003 DestinationFolder 关于将任务复制到 DestinationDirectory 正如所料,我得到了这个:

    (后编译目标)>
    C:\build\BuildType\TFSBuild.proj(288,44): 错误MSB4064:错误为 “DestinationDirectory”参数为 验证该参数是否存在于 任务,并且它是可设置的公共 实例属性。
    C:\build\BuildType\TFSBuild.proj(288,5): 参数。

    有没有人让LeoutDir和MSTest与他们的TFS团队建设协调一致?

    我发现 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:\build\BuildType\TFSBuild.proj” (CoreTestConfiguration目标)>
    MSBUILD:警告MSB6006:

    1 回复  |  直到 15 年前
        1
  •  4
  •   slf    15 年前

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

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