Ich frage mich nur - wenn ich eine Assembly in den GAC einbauen muss, was ist der "offizielle" Weg, dies zu tun?
Derzeit ziehen wir entweder manuell in den Ordner c: \ windows \ assembly oder verwenden gacutil.exe. Der erste Weg ist offensichtlich nicht der gute (schließlich ist es ein manueller Prozess), und Gacutil ist Teil des SDK und nicht standardmäßig auf Produktionsservern verfügbar.
Gibt es Microsoft-Bereitstellungsrichtlinien?
Der mit Abstand einfachste Weg ist die Verwendung eines Setup-Projekts. Dort können Sie einfach Baugruppen aus Ihren Projektausgaben in einen speziellen GAC-Ordner einfügen, und das Installationsprogramm fügt sie dem GAC für Sie hinzu.
Wenn Sie keine vorhandene Installationstechnologie verwenden, erfolgt der "offizielle" Weg über die native API von IAssemblyCache :: InstallAssembly. Eine verwaltete Alternative kann jedoch im System.EnterpriseServices.Internal-Namespace gefunden werden. Trotz des Namens handelt es sich tatsächlich um eine öffentliche Klasse in einer Standardbaugruppe.
Ein Werkzeug, das ich verwendet habe, um Installer zu erstellen, die automatisiert werden können, ist Wix . Wir hatten verschiedene Installer für Testversionen, Vollversionen und für die vielen verschiedenen Produkte, die wir verwalten mussten. Wix konnte das alles für uns bewältigen. Die Funktionsweise von Wix ist, dass Sie alles in Xml-Dateien beschreiben. Einer der Vorteile ist, dass Sie das XML unter Quellcodeverwaltung behalten können.
Hier finden Sie einige Blog-Posts darüber, wie Sie mit Wix dlls sowohl für den GAC als auch lokal bereitstellen können:
Tags und Links .net gac deployment