msbuild target, dass anderen msbuild target aufruft

ALMAAAAA

Cadet 1st Year
Dabei seit
Sep. 2016
Beiträge
12
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:


C#:
<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

Code:
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

Code:
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.
 
Zuletzt bearbeitet:
Top