Laden...

msbuild target, dass anderen msbuild target aufruft

Erstellt von alma vor 4 Jahren Letzter Beitrag vor 4 Jahren 847 Views
A
alma Themenstarter:in
4 Beiträge seit 2019
vor 4 Jahren
msbuild target, dass anderen msbuild target aufruft

Ich habe einen msbuild-Prozess, der in zwei Abschnitte unterteilt ist. Der erste analysiert Nuget-Pakete und erstellt Dateien. Da ich Nuget-Pakete erst nach dem "Restore" analysieren kann, wird es nach "CoreCompile" aufgerufen. Der zweite Teil sollte diese Dateien in die Anwendung als embedded resource einbetten und da liegt mein Problem. Der Einbettungsteil muss vor dem Target "PrepareForBuild", aber nach "CoreCompile" erfolgen. Meine Lösung dafür war, einen weiteren Build zu starten, nachdem "CoreCompile" stattgefunden hat. Das sieht wie folgt aus:

    <Project>
      <PropertyGroup>
        <GivenDirectory>some directory</GivenDirectory>
    	<Variable>false</Variable>    
    	<Variable2>false</Variable2>
      </PropertyGroup>  
    
    
    	<Target Name="SomeTarget" AfterTargets="CoreCompile" Condition="'$(Variable)' == 'true'">		
    		<MakeDir Directories="$(GivenDirectory)"/>
    		<!--this consoletool generates files in the GivenDirectory-->
    		<Exec Command="$(ConsoleTool)" />
    		
    
    		<!--this calls the msbuild with the other target-->
    		<MSBuild Properties="Variable2=true"  Targets="EmbeddFiles" Projects="$(MSBuildProjectFullPath)" />       
    	</Target>
    	
    	<Target Name="EmbeddFiles" BeforeTargets="PrepareForBuild" Condition="'$(Variable2)' == 'true'">
    		<ItemGroup>
    		  <EmbeddedResource Include="GivenDirectory\*.*"/>         
    		</ItemGroup>
    	</Target>
    	
    </Project>  

Das funktioniert gut, bis auf den Punkt, dass die Ressourcen nicht zu meiner Anwendung als embedded-Resource hinzugefügt werden.
Ich kann den Prozess mit

msbuild.\myapp.csproj /t:rebuild /Variable=true

aufrufen und ich kann sehen, dass beide Ziele so ausgeführt werden, wie ich es wollte, aber irgendwie wird die eingebettete Ressource nicht hinzugefügt. Es erscheint kein Fehler.

Wenn ich das erste Target "SomeTarget" auskommentiere oder den Prozess mit

msbuild.\myapp.csproj /t:rebuild /Variable2=true

aufrufe sind die Dateien als embeddedResoucre vorhanden.

Wo liegt der Fehler?

Ich habe versucht, es wie in diesem Thread zu machen.