Ich habe eine neue Worker-Rolle eingerichtet und einige neue Config-Transformationen dafür über SlowCheetah eingerichtet. Wenn ich das Projekt mit einer der ausgewählten neuen Konfigurationen erstelle, sehe ich tatsächlich, dass der Ordner configs unterhalb des Ordners \ bin wie erwartet (zB \ bin \ Production) erstellt wird.
Wenn ich einen Cloud-Service für die Bereitstellung mit einer der neuen Konfigurationen paketiere, werden meine Web-Projekte entsprechend konfiguriert, aber meine Worker-Rolle (die nur eine Bibliothek ist) funktioniert nicht, obwohl ich unter dem \ bin-Ordner eine aktualisierte sehe \ bin \ Produktion.
Es scheint, dass das azure-Tool für die Verpackung die für die Worker-Rollenbibliothek festgelegte Konfiguration ignoriert. Wie bekomme ich es die Konfigurationsdatei aus der entsprechenden Konfiguration auszuwählen?
Ja, Sie können das - und es ist sogar sehr einfach, wenn Sie wissen, wie.
App.config wird nicht by design umgewandelt, aber zum Glück hat das Azure-Team den Build / Deploy-Prozess für diese Art von Szenarien sehr erweiterbar gemacht. Was Sie tun müssen, ist einigermaßen gut dokumentiert, allerdings auf eine sehr umständliche Art und Weise und die meisten Artikel gehen davon aus, dass Sie bereits mit MSBuild-Skripten und ähnlichem vertraut sind.
Im Folgenden finden Sie die Zeilen, die Sie in Ihr Projekt einfügen müssen, um dieses Just Work zu erstellen. Das sollte nicht länger als fünf Minuten dauern. Bitte beachten Sie, dass dies kein Hack ist - der gesamte Azure-Bereitstellungsprozess unterstützt solche Dinge.
Wenn Sie mehr wissen möchten, finden Sie unten einige Links zu verwandten Artikeln.
Wir können dies lösen, indem wir uns in den Build-Prozess für das Cloud-Projekt einklinken. Wenn Sie das Projekt in Azure bereitstellen, wird das Cloud-Projekt mithilfe eines Build-Prozesses erstellt, in den Sie einhaken können. Kurz gesagt, das Cloud-Projekt erstellt die Web- und Worker-Rollen und platziert sie unter dem Obj-Ordner in Ihrem Cloud-Projekt. Es führt dann einen Prozess aus, der das Ganze im Wesentlichen aufreißt und schließlich das Ergebnis in den Ordner "Bin" legt. Von dort werden die "Zip" -Datei und eine Konfigurationsdatei nach Azure hochgeladen.
Bearbeiten Sie Ihre Cloud.csproj-Datei manuell (wenn Sie dies in Visual Studio tun, müssen Sie zuerst das Projekt entladen).
Fügen Sie dann dieses Recht über dem schließenden </project>
-Tag hinzu:
Ich finde @Frans zu kompliziert, und unten ist der Code, den ich im internet
und fügen Sie danach Folgendes ein:
%Vor%und ersetzen Sie IHREN PROJEKTNAMEN durch den Namen Ihres Arbeitsprojekts.
AKTUALISIEREN
Ich habe tatsächlich einen besseren Weg gefunden, dies zu tun (MSBuild 4+): Das obige Skript funktioniert NICHT, wenn Sie in Ihrem Azure-Projekt mehr als eine Worker-Rolle mit app.config-Transformationen haben. Hier ist der allgemeinere Weg:
%Vor%Stellen Sie sicher, dass die Cloud Service-Konfigurationen eingerichtet sind. Klicken Sie mit der rechten Maustaste auf das Cloud-Projekt und Sie sollten die Konfigurationen sehen, die Sie verpacken möchten. Zum Beispiel, ich benenne und benutze Local, TEST & amp; PROD-Konfigurationen Ihr Cloud-Service-Projekt sollte dann 3 Konfigurationsdateien enthalten:
Klicken Sie mit der rechten Maustaste auf das Cloud-Service-Projekt, wählen Sie "Paket" und wählen Sie den richtigen Dienst & amp; Erstellen Sie Konfigurationen für Ihre Bereitstellung.
Hinweis: app.configs werden im Build-Prozess nicht transformiert, es sei denn, Sie fügen eine MS hinzu - Siehe diese SO-Antwort für eine Technik, um eine Transformation im Build-Prozess durchzuführen. Für Cloud-Implementierungen ist es jedoch besser, ServiceConfiguration zu verwenden. * .cscfg-Dateien in Kombination mit CloudConfigurationManager.GetSetting("settingsKey")
- CloudConfigurationManager.GetSetting wurde in SDK 1.7 hinzugefügt - wenn es in Role ist, erhält es den Wert von ServiceConfig sonst erhalten Sie von web.config / app.config appSettings
Tags und Links azure azure-worker-roles app-config