Problem
Für den Austausch und Transfer von Daten wurde ein SQL Server Integration Services Paket (ispac) mithilfe der Assembly Microsoft.SqlServer.ManagedDTS generiert.
Beim Versuch, dieses Paket zu deployen erscheint folgende Fehlermeldung:
Aktion
Um den Fehler eingrenzen zu können, extrahierten wir das generierte ispac-Paket. Dabei stellte sich heraus, dass die [Content_Types].xml nicht korrekt entpackt werden konnte.
Bei der Analyse, warum die Basisinfrastruktur diese Fehler erzeugten, schauten wir auf den Code-Block, der für die Erstellung des ispac-Paket zuständig ist.
var project = Project.CreateProject(); project.Name = name; project.ProtectionLevel = DTSProtectionLevel.DontSaveSensitive; project.Description = "Synchronisierung Navision"; // ... var path = Path.Combine(_scriptPath, $"{name}.ispac"); _log.Log($"Paket abgelegt unter {path}");
project.SaveAs(path);
Solution
Das erstellte Projekt ist noch nicht geschlossen. Dadurch wird die Datei korrupt, was zu einen Deployment-Fehler führt. Mit der Verwendung von using lässt sich dieses Problem beheben.
using (var project = Project.CreateProject()) { project.Name = name; project.ProtectionLevel = DTSProtectionLevel.DontSaveSensitive; project.Description = "Synchronisierung Navision"; // ... var path = Path.Combine(_scriptPath, $"{name}.ispac"); _log.Log($"Paket abgelegt unter {path}"); project.SaveAs(path); }
Nach dieser Anpassung kann das generierte Paket erfolgreich verteilt werden.
Ein kleines using mit grosser Wirkung.