CustomizableOutDir = trueは、チームビルド中にMSTest.exeを中断します

StackOverflow https://stackoverflow.com/questions/1603024

  •  05-07-2019
  •  | 
  •  

質問

CustomizableOutDirを使用する場合、TFSチームビルドが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>の両方で、ビルドの最後に次のエラーが表示されます:

  

<!> quot; C:\ build \ BuildType \ TFSBuild.proj <!> quot;   (TestConfigurationターゲット)(1:12)-<!> gt;   (CoreTestConfigurationターゲット)-<!> gt;
  MSBUILD:警告MSB6003:は   指定されたタスク実行可能ファイル<!> quot; MSTest.exe <!> quot;   実行できませんでした。ディレクトリ名   無効です

この記事を見つけた後、私は次を追加しました:

  <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ターゲット)-<!> gt;
  C:\ build \ BuildType \ TFSBuild.proj(289,5):   エラーMSB3023:宛先なし   コピーに指定されます。供給してください   <!> quot; DestinationFiles <!> quot;または   <!> quot; DestinationDirectory <!> quot;。

DestinationDirectoryはスキーマhttp://schemas.microsoft.com/developer/msbuild/2003の一部ではありませんが、とにかく試してみようと思いました。そこで、コピータスクのすべてのDestinationFolderDestinationDirectoryに変更し、予想どおりこれを取得しました。

  

(AfterCompileターゲット)-<!> gt;
  C:\ build \ BuildType \ TFSBuild.proj(288,44):   エラーMSB4064:   <!> quot; DestinationDirectory <!> quot;パラメータは   <!> quot; Copy <!> quot;ではサポートされていません。仕事。   パラメータが存在することを確認します   タスク、およびそれは設定可能なパブリックです   インスタンスプロパティ。
  C:\ build \ BuildType \ TFSBuild.proj(288,5):   エラーMSB4063:<!> quot; Copy <!> quot;タスクができました   入力で初期化されない   パラメータ。

CustomizeOutDirと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>

この結果:

  

<!> quot; C:\ build \ BuildType \ TFSBuild.proj <!> quot;   (RunTestターゲット)(1:11)-<!> gt;   <!> quot; C:\ build \ BuildType \ TFSBuild.proj <!> quot;   (TestConfigurationターゲット)(1:12)-<!> gt;   (CoreTestConfigurationターゲット)-<!> gt;
  MSBUILD:警告MSB6006:   <!> quot; MSTest.exe <!> quot;コード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>

テスト結果が得られないことは、展開とテストボックスの構成に関する別の問題でした。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top