Wenn ich CustomizableOutDir benutze, habe ich Probleme mit TFS Team Build feuern off MSTest.exe richtig.CustomizableOutDir = true bricht MSTest.exe während Team Build
TFSBuild.rsp
/verbosity:diagnostic
/p:CustomizableOutDir=true
TFSBuild.proj (Lösungen Schnipsel zu bauen) sowohl
<!-- 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>
Mit <Properties>OutputPath=$(BinariesRoot)\TestHarness\</Properties>
und <Properties></Properties>
, erhalte ich die folgende Fehlermeldung am Ende des Builds:
"C: \ Build \ BuildType \ TFSBuild.proj" (TestKonfigurationsziel) (1:12) -> (CoreTestConfiguration target) ->
MSBUILD: Warnung MSB6003: Die angegebene Task "MSTest.exe" konnte nicht ausgeführt werden. konnte nicht ausgeführt werden. Der Verzeichnisname ungültig ist
Nach this article zu finden, ich und fügte dann hinzu folgende:
<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>
Welche dies gab:
(AfterCompile Ziel) ->
C: \ Build \ BuildType \ TFSBuild.proj (289,5): Fehler MSB3023: Kein Ziel für Kopie angegeben. Bitte geben Sie entweder "DestinationFiles" oder "DestinationDirectory" an.
DestinationDirectory ist nicht Teil des Schemas http://schemas.microsoft.com/developer/msbuild/2003
, aber ich dachte, ich würde es trotzdem versuchen. Also änderte ich die ganze DestinationFolder
auf die Kopieraufgaben DestinationDirectory
und wie erwartet Ich habe dies:
(AfterCompile Ziel) ->
C: \ \ BuildType \ TFSBuild.proj (288,44) bauen: Fehler MSB4064: Der "DestinationDirectory" -Parameter ist nicht von der Task "Kopieren" unterstützt. Überprüfen Sie, ob der Parameter in der Task vorhanden ist, und es ist eine einstellbare öffentliche Instanzeigenschaft.
C: \ Build \ BuildType \ TFSBuild.proj (288,5): Fehler MSB4063: Die Aufgabe "Kopieren" konnte nicht initialisiert werden mit seinen Eingang Parameter.
Jeder da draußen hat CustomizableOutDir und MSTest, die in Harmonie mit ihrer TFS Team Build zusammenarbeiten?
EDIT:
Ich fand this discussion und wandte diese Änderung:
<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>
, die in dieser Folge:
"C: \ bauen \ BuildType \ TFSBuild.proj" (RunTest - Ziel) (1:11) -> "C: \ Build \ BuildType \ TFSBuild.proj" (Testkonfigurationsziel) (1:12) -> (CoreTest Konfiguration Ziel) ->
MSBUILD: Warnung MSB6006: "MSTest.exe" verlassen mit Code 1.