Ich verwende Cake 0.23.0 und war glücklich zu lesen, dass Aufgabenabhängigkeiten erweitert wurden. Leider scheint selbst die neueste Version mein Problem nicht zu lösen. Oder mache ich gerade etwas falsch?Erstellen Sie eine Tasksequenz in Cakebuild
Was würde ich
- erreichen möchte Gesetzt Ich habe Aufgaben definiert, die für mehrere Plattformen gleich sind (zB x86 oder x64)
- Ich möchte einen build-Sequenz definieren, die erste ist, Ausführen aller Aufgaben für die Plattform x86. Sobald das erledigt ist, sollte eine Init-Task ausgeführt werden, die nur die Plattform auf x64 setzt und dann dieselben Aufgaben wie für x86 ausgeführt werden sollen.
- Beispielsequenz: Task-Init x86 -> Task A -> Task B -> Task C -> Task Init x64 -> Task A -> Task B -> Task C
Current Behavior Die resultierende Sequenz ist Task Init X 86 -> Task A -> Task B -> Task C -> Task Init X 64
Es scheint, dass Cake nur Aufgabenabhängigkeit einmal respektiert. Ich habe es unten definiert mag gezeigt:
Task("Compile-All-Platforms")
.IsDependentOn("Init-86")
.IsDependentOn("A")
.IsDependentOn("B")
.IsDependentOn("C")
.IsDependentOn("Init-x64")
.IsDependentOn("A")
.IsDependentOn("B")
.IsDependentOn("C");
Hallo Renaud, Vielen Dank für Ihre Antwort. Ich dachte, ich könnte die Anzahl der Aufgaben und Funktionen minimieren. Im Grunde würden die Funktionen die Arbeit tun, die ich brauche. Ich würde vorschlagen, die Dokumentation zu verbessern, denn für mich war es nicht klar, dass C# Make verhält sich so, bis ich in Schwierigkeiten geriet. –
... und eine andere wichtige Sache sollte in der Dokumentation für Neulinge besser hervorgehoben werden: Wenn Sie "WithCriteria" in einer Aufgabe verwenden, deren Abhängigkeiten wie "IsDependentOn ..." definiert sind, werden die Aufgaben ausgeführt, obwohl die Kriterien der Abhängiger ist nicht erfüllt. Sobald Sie das wissen, können Sie damit umgehen. –
Sie könnten Ihre Kommentare wahrscheinlich unter https://cakebuild.net/ einreichen, da ich kein Cake-Mitarbeiter bin. Wenn Ihre Build-Schritte komplex genug sind, könnten Sie (sollten?) Cake-Erweiterungsmodule verwenden, um jeden Build-Schritt zu kapseln. Sie können es in einer Methode zweimal aufrufen und die Konfiguration zwischen den Anrufen ändern. Aber dann hätten Sie ein monolithisches Build-Skript, obwohl ich mir ziemlich sicher bin, dass Sie mit mehr Schritten besser dran sind, indem Sie die Aufgabenabhängigkeiten nutzen. Beachten Sie, dass wir die tatsächliche Komplexität Ihres Systems nicht kennen. Diese Antwort wird als selbstverständlich vorausgesetzt, Sie haben 3 Projekte mit 2 Zielplattformen. –