使用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。
答案 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>
没有获得任何测试结果是部署和测试盒配置的另一个问题。