2

Das Problem besteht darin, dass Projekte, die normal und ohne Fehler erstellt und erstellt werden, keine abgepackten abhängigen Assembly-Assemblys enthalten, wenn das Projekt zum Beispiel über Visual Studio erstellt wird. Was passiert, ist, dass die Anwendung normal installiert wird und dann zur Laufzeit abstürzt, indem sie sagt, dass xyz dll fehlt.Fehlende Abhängigkeiten beim Erstellen durch CruiseControl

Von dem, was ich sagen kann entweder aktualisiert die Abhängigkeiten nicht vor dem Erstellen des Setup-Projekts oder irgendwie nicht alle enthalten.

Wir bauen durch devenv und die Lösung Datei (Alles übersetzen)

gestoßen jemand etwas ähnliches, und wenn ja, wie haben Sie es gelöst?

bearbeiten: CruiseControl läuft in einer anderen maching als die Entwicklung. Außerdem haben wir herausgefunden, dass dies bei Projekten der Fall ist, die in einer Lösung referenziert werden.

IE in einer Lösung mit 3 Projekten, A eine Bibliothek, B eine Anwendung, die A und C ein Setup-Projekt referenziert dann nach dem Build, was passiert ist, dass B fehlt A obwohl der Build erfolgreich ist und die MSI produziert.

Antwort

0

Diese Situation ist ein Ergebnis von MSBUILD unterstützt Setup-Projekte nicht. Daher sind wir gezwungen, devenv für die Lösung mit Cruise Control zu verwenden.

Das eigentliche Problem war, dass Projekte in der gleichen Lösung von der Hauptanwendung referenziert wurden und obwohl dies in vollständigen .NET-Setup-Projekten nicht reproduzierbar war, ist es wiederholt in CF-Setup-Projekten passiert.

Wir gelöst dieses Problem durch Ändern der Architektur unserer CF-Lösungen, alle Projekte in einem Projekt als Ordner zu haben, so dass nur 1 exe produziert und mit dem Setup-Projekt verpackt wird.

Es ist bemerkenswert, dass wir keine Assemblys beim Verweisen auf andere DLL-Dateien verloren hatten, sondern nur, wenn wir Bibliotheksprojekte referenzierten, die in derselben Lösung existierten.

Nach dem googeln über dieses Thema habe ich einige beunruhigende Details zu diesem Thema, die mich auf die Tatsache, dass dieser Fehler und die Unfähigkeit von Msbuild zu unterstützen Setup-Projekt seit 2005 in msdn Forum-Berichte und nicht nur existieren.

0

Es gibt einen anderen Beitrag mit der gleichen Frage, aber ich konnte nicht überprüfen, ob es noch funktioniert. Sie sollten in der Lage sein, eine Ausführungstask einzubeziehen, um das Makro auszuführen, das zum Aktualisieren der Abhängigkeiten erstellt wurde.

https://stackoverflow.com/questions/45593?sort=votes#sort-top

0

Wenn Sie sagen, dass es durch Visual Studio von Hand fein baut, kann man auf der gleichen Maschine bedeuten? Wenn dies der Fall ist, ist es wahrscheinlich die Tatsache, dass Ihr cruisecontrol-Dienst als ein anderer Benutzer ausgeführt wird und als solcher unterschiedliche Pfade und Umgebungsvariablen festgelegt hat, möglicherweise hat er keine Berechtigungen, auf das Dateisystem zuzugreifen, auf dem diese Abhängigkeiten liegen. Wenn Sie meinen, dass es auf einem anderen Computer läuft, dann würde ich sicherstellen, dass diese Abhängigkeiten tatsächlich dort sind und dass der Benutzer, den der Dienst ausführt, über Berechtigungen verfügt, um zu ihnen zu gelangen. Wir sind diesen Problemen noch nie begegnet, tut mir leid, also versuche ich nur ein paar mögliche CC.NET-Probleme zu erraten.

0

Sie können überprüfen, ob die fehlenden DLLs in der GAC auf der Build-Maschine sind.

Ich lief ein Problem ein paar Monate zurück, wo der Build-Server eine Installation mit einer DLL weniger als jede der Entwickler-Boxen erzeugte. Es stellt sich heraus, dass die fehlende DLL in der GAC auf der Build-Box war. Aus einem unbekannten Grund entschied VS2005, dass es die DLL nicht enthalten muss, da sie in der GAC enthalten war - auch wenn wir speziell auf eine lokale Kopie der DLL im Projekt verwiesen haben.

Verwandte Themen