Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Bereitstellung ist ein optionaler Vorgang für Projekte. Ein Webprojekt unterstützt z. B. eine Bereitstellung, damit ein Projekt einen Webserver aktualisieren kann. Ebenso unterstützt ein Smart Device-Projekt eine Bereitstellung für das Kopieren einer erstellten Anwendung auf das Zielgerät. Project-Untertypen können spezielles Bereitstellungsverhalten bereitstellen, indem sie die IVsDeployableProjectCfg Schnittstelle implementieren. Diese Schnittstelle definiert einen vollständigen Satz von Bereitstellungsvorgängen:
-
Der tatsächliche Bereitstellungsvorgang sollte im separaten Thread ausgeführt werden, damit Visual Studio noch besser auf die Benutzerinteraktion reagiert. Die von IVsDeployableProjectCfg Visual Studio bereitgestellten Methoden werden asynchron aufgerufen und im Hintergrund ausgeführt, sodass die Umgebung den Status eines Bereitstellungsvorgangs jederzeit abfragen oder den Vorgang bei Bedarf beenden kann. Die IVsDeployableProjectCfg Bereitstellungsvorgänge der Benutzeroberfläche werden von der Umgebung aufgerufen, wenn der Benutzer den Bereitstellungsbefehl auswählt.
Um die Umgebung darüber zu informieren, dass ein Bereitstellungsvorgang begonnen oder beendet wurde, muss der Projektuntertyp die Methode OnStartDeploy und die Methode OnEndDeploy aufrufen.
Um eine spezialisierte Bereitstellung durch ein Unterprojekt zu handhaben
Implementieren Sie die AdviseDeployStatusCallback Methode, um die Umgebung zu registrieren, um Benachrichtigungen über Bereitstellungsstatusereignisse zu erhalten.
private Microsoft.VisualStudio.Shell.EventSinkCollection adviseSink = new Microsoft.VisualStudio.Shell.EventSinkCollection(); public int AdviseDeployStatusCallback(IVsDeployStatusCallback pIVsDeployStatusCallback, out uint pdwCookie) { if (pIVsDeployStatusCallback == null) throw new ArgumentNullException("pIVsDeployStatusCallback"); pdwCookie = adviseSink.Add(pIVsDeployStatusCallback); return VSConstants.S_OK; }Implementieren Sie die UnadviseDeployStatusCallback Methode, um die Registrierung der Umgebung abzubrechen, um Benachrichtigungen über Bereitstellungsstatusereignisse zu erhalten.
Implementieren Sie die Commit Methode, um den commit-Vorgang speziell für Ihre Anwendung auszuführen. Diese Methode wird hauptsächlich für die Datenbankbereitstellung verwendet.
Implementieren Sie die Rollback Methode zum Ausführen eines Rollbackvorgangs. Wenn diese Methode aufgerufen wird, muss das Bereitstellungsprojekt alle geeigneten Aktionen ausführen, um Änderungen zurückzusetzen und den Status des Projekts wiederherzustellen. Diese Methode wird hauptsächlich für die Datenbankbereitstellung verwendet.
Implementieren Sie die QueryStartDeploy Methode, um zu bestimmen, ob ein Projekt einen Bereitstellungsvorgang starten kann.
public int QueryStartDeploy(uint dwOptions, int[] pfSupported, int[] pfReady) { if (pfSupported != null && pfSupported.Length >0) pfSupported[0] = 1; if (pfReady != null && pfReady.Length >0) { pfReady[0] = 0; if (deploymentThread != null && !deploymentThread.IsAlive) pfReady[0] = 1; } return VSConstants.S_OK; }Implementieren Sie die QueryStatusDeploy Methode, um festzustellen, ob ein Bereitstellungsvorgang erfolgreich abgeschlossen wurde.
Implementieren Sie die StartDeploy Methode, um einen Bereitstellungsvorgang in einem separaten Thread zu starten. Platzieren Sie den anwendungsspezifischen Code für den Bereitstellungsvorgang Ihrer Anwendung in der
DeployMethode.public int StartDeploy(IVsOutputWindowPane pIVsOutputWindowPane, uint dwOptions) { if (pIVsOutputWindowPane == null) throw new ArgumentNullException("pIVsOutputWindowPane"); if (deploymentThread != null && deploymentThread.IsAlive) throw new NotSupportedException("Cannot start deployment operation when it is already started; Call QueryStartDeploy first"); outputWindow = pIVsOutputWindowPane; // Notify that deployment is about to begin and see if any user wants to cancel. if (!NotifyStart()) return VSConstants.E_ABORT; operationCanceled = false; // Create and start our thread deploymentThread = new Thread(new ThreadStart(this.Deploy)); deploymentThread.Name = "Deployment Thread"; deploymentThread.Start(); return VSConstants.S_OK; }Implementieren Sie die StopDeploy Methode, um einen Bereitstellungsvorgang zu beenden. Diese Methode wird aufgerufen, wenn ein Benutzer während des Bereitstellungsprozesses die Schaltfläche "Abbrechen " drückt.
public int StopDeploy(int fSync) { if (deploymentThread != null && deploymentThread.IsAlive) return VSConstants.S_OK; outputWindow.OutputStringThreadSafe("Canceling deployment"); operationCanceled = true; if (fSync != 0) { // Synchronous request, wait for the thread to terminate. if (!deploymentThread.Join(10000)) { Debug.Fail("Deployment thread did not terminate before the timeout, Aborting thread"); deploymentThread.Abort(); } } return VSConstants.S_OK; }
Hinweis
Alle codebeispiele in diesem Thema sind Teile eines größeren Beispiels in VSSDK-Beispielen.