Voraussetzung
-
Die TIA Portal Openness-Anwendung ist mit dem TIA Portal verbunden.
Siehe Verbindung zum TIA Portal aufbauen -
Ein Projekt ist geöffnet.
Siehe Öffnen eines Projekts
Einleitung
Sie können mit TIA Portal Openness das Projekt und die Struktur der globalen Bibliothek aktualisieren oder beibehalten, auch wenn Konflikte bestehen. Sie können auch mit TIA Portal Openness unbenutzte Versionen aus der Zielbibliothek
beibehalten oder löschen.
Die UpdateLibrary() wird mit der folgenden Signatur für die Projektbibliothek und die globale Bibliothek definiert:
public void UpdateLibrary(IEnumerable<ILibraryTypeOrFolderSelection> sourceTypesAndFolders, ILibrary targetLibrary, ForceUpdateMode forceUpdateMode, DeleteUnusedVersionsMode updateMode, StructureConflictResolutionMode structureConflictResolutionMode);
Die UpdateLibrary() wird für Einzeltypen mit einer anderen Definition und folgender Signatur überladen:
public void UpdateLibrary(ILibrary targetLibrary, DeleteUnusedVersionsMode updateMode, StructureConflictResolutionMode structureConflictResolutionMode,ForceUpdateMode forceUpdateMode);
Die UpdateLibrary() akzeptiert folgende Parameterdefinition für die Ausführung verschiedener Vorgänge:
|
Parameter |
Definition |
|---|---|
|
DeleteUnusedVersionsMode |
Dient zur Bestimmung, ob unbenutzte Versionen in der Zielbibliothek gelöscht/beibehalten werden sollen. DeleteUnusedVersionMode führt Vorgänge anhand des als Eingabe bereitgestellten ENUM-Werts aus:
|
|
StructureConflictResolutionMode |
Dient zur Bestimmung, ob bei einem Strukturkonflikt die Struktur der Zielbibliothek aktualisiert, die vorhandene Struktur beibehalten oder der Vorgang abgebrochen werden soll. StructureConflictResolutionMode führt Vorgänge anhand des als Eingabe bereitgestellten ENUM-Werts aus:
|
|
ForceUpdateMode |
Dient zur Bestimmung, ob die aktualisierte Version in der Zielbibliothek als Standard-/neueste Version eingestellt werden soll. Der ForceUpdateMode führt Vorgänge anhand des als Eingabe bereitgestellten ENUM-Werts aus:
|
Programmcode: UpdateLibrary für einen Einzeltyp
Die UpdateLibrary API ist Teil der Siemens.Engineering.Library.Types.LibraryType-Schnittstelle und akzeptiert eine "Einfachauswahl" für Typen.
Ändern Sie den folgenden Programmcode, um UpdateLibrary für einen Einzeltyp aus der Projektbibliothek in der globalen Bibliothek auszuführen (unbenutzte Version löschen, vorhandene Struktur der Zielbibliothek aktualisieren und Aktualisierung der Version im Ziel standardmäßig unabhängig von der Versionsnummer erzwingen)
|
... ILibrary myProjectLibrary = Project.ProjectLibrary; LibraryTypeUserFolder singleFolderContainingTypes = myProjectLibrary.TypeFolder.Folders.Find("folder1"); ILibraryType typeA = singleFolderContainingTypes.Types.Find("block1"); // block1 has lower version. DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.AutomaticallyDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.UpdateStructure; ForceUpdateMode forceUpdateMode = ForceUpdateMode.ForceSetAnyUpdatedVersionAsDefault; ILibrary globalLibrary = ...; typeA.UpdateLibrary(globalLibrary, deleteUnusedVersionsMode, structureConflictResolutionMode, forceUpdateMode); ... |
Ändern Sie den folgenden Programmcode, um UpdateLibrary für einen Einzeltyp aus der Projektbibliothek in der globalen Bibliothek auszuführen (unbenutzte Version nicht löschen, vorhandene Struktur der Zielbibliothek beibehalten und keine Aktualisierung erzwingen):
|
... ILibrary globalLibrary = ...; LibraryTypeUserFolder singleFolderContainingTypes = globalLibrary.TypeFolder.Folders.Find("folder1"); ILibraryType typeA = singleFolderContainingTypes.Types.Find("block1");// block1 has lower version. DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.DoNotDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.RetainStructure; ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; ILibrary myProjectLibrary = Project.ProjectLibrary; typeA.UpdateLibrary(myProjectLibrary, deleteUnusedVersionsMode, structureConflictResolutionMode, forceUpdateMode); ... |
Ändern Sie den folgenden Programmcode, um UpdateLibrary für einen Einzeltyp aus der globalen Bibliothek in der Projektbibliothek auszuführen (unbenutzte Version nicht löschen, vorhandene Struktur der Zielbibliothek beibehalten und keine Aktualisierung erzwingen):
|
... ILibrary globalLibrary = ...; LibraryTypeUserFolder singleFolderContainingTypes = globalLibrary.TypeFolder.Folders.Find("folder1"); ILibraryType typeA = singleFolderContainingTypes.Types.Find("block1"); // block1 has lower version. DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.DoNotDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.RetainStructure; ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; ILibrary myProjectLibrary = Project.ProjectLibrary; typeA.UpdateLibrary(myProjectLibrary, deleteUnusedVersionsMode, structureConflictResolutionMode, forceUpdateMode); ... |
Ändern Sie den folgenden Programmcode, um UpdateLibrary für einen Einzeltyp aus der globalen Bibliothek in der Projektbibliothek auszuführen (unbenutzte Version löschen, vorhandene Struktur der Zielbibliothek aktualisieren und keine Aktualisierung erzwingen):
|
... ILibrary globalLibrary = ...; LibraryTypeUserFolder singleFolderContainingTypes = globalLibrary.TypeFolder.Folders.Find("folder1"); ILibraryType typeA = singleFolderContainingTypes.Types.Find("block1"); // block1 has lower version. DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.AutomaticallyDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.UpdateStructure; ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; ILibrary myProjectLibrary = Project.ProjectLibrary; typeA.UpdateLibrary(myProjectLibrary, deleteUnusedVersionsMode, structureConflictResolutionMode); ... |
Programmcode: UpdateLibrary für mehrere Typen
Die UpdateLibrary API ist Teil der Siemens.Engineering.Library.ILibrary-Schnittstelle und akzeptiert eine "Mehrfachauswahl" für Typen und Typordner.
Ändern Sie den folgenden Programmcode, um UpdateLibrary für einen Typ aus der Projektbibliothek in der globalen Bibliothek auszuführen:
|
...ILibrary myProjectLibrary = Project.ProjectLibrary; LibraryTypeUserFolder singleFolderContainingTypes = myProjectLibrary.TypeFolder.Folders.Find("folder1"); ILibraryType typeA = singleFolderContainingTypes.Types.Find("block1"); // block1 has lower version. ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.DoNotDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.UpdateStructure; ILibrary globalLibrary; myProjectLibrary.UpdateLibrary(new[] { typeA }, globalLibrary, forceUpdateMode, deleteUnusedVersionsMode, structureConflictResolutionMode); ... |
Ändern Sie den folgenden Programmcode, um UpdateLibrary für mehrere Typen aus der Projektbibliothek in der globalen Bibliothek auszuführen:
|
... ILibrary myProjectLibrary = Project.ProjectLibrary; LibraryTypeUserFolder singleFolderContainingTypes = myProjectLibrary.TypeFolder.Folders.Find("folder1"); ILibraryType typeA = singleFolderContainingTypes.Types.Find("block1"); // block1 has lower version. ILibraryType typeB = ...; ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.DoNotDelete; StructureConflictResolutionMode structureConflictResolutionMode= StructureConflictResolutionMode.UpdateStructure; ILibrary globalLibrary;myProjectLibrary.UpdateLibrary(new[] { typeA, typeB }, globalLibrary, forceUpdateMode, deleteUnusedVersionsMode, structureConflictResolutionMode); ... |
Ändern Sie den folgenden Programmcode, um UpdateLibrary für einen Ordner, der Typen enthält, aus der Projektbibliothek in der globalen Bibliothek auszuführen:
|
... ILibrary myProjectLibrary = Project.ProjectLibrary; LibraryTypeUserFolder singleFolderContainingTypes = myProjectLibrary.TypeFolder.Folders.Find("folder1"); ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.DoNotDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.UpdateStructure; ILibrary globalLibrary; myProjectLibrary.UpdateLibrary(new[] { (ILibraryTypeOrFolderSelection)singleFolderContainingTypes }, globalLibrary, forceUpdateMode, deleteUnusedVersionsMode, structureConflictResolutionMode); ... |
Ändern Sie den folgenden Programmcode, um UpdateLibrary für den Systemordner "Types" aus der Projektbibliothek in der globalen Bibliothek auszuführen:
|
... ILibrary myProjectLibrary = Project.ProjectLibrary; LibraryTypeSystemFolder typeFolder = myProjectLibrary.TypeFolder; ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.DoNotDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.RetainStructure; ILibrary globalLibrary; myProjectLibrary.UpdateLibrary(new[] { (ILibraryTypeOrFolderSelection)typeFolder }, globalLibrary, forceUpdateMode, deleteUnusedVersionsMode, structureConflictResolutionMode); ... |
Ändern Sie den folgenden Programmcode, um UpdateLibrary für einen Typ aus der globalen Bibliothek in der Projektbibliothek auszuführen:
|
... ILibrary globalLibrary = ...; LibraryTypeUserFolder singleFolderContainingTypes = globalLibrary.TypeFolder.Folders.Find("folder1"); ILibraryType typeA = singleFolderContainingTypes.Types.Find("block1"); // block1 has lower version. ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.DoNotDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.UpdateStructure; ILibrary myProjectLibrary = Project.ProjectLibrary; globalLibrary.UpdateLibrary(new[] { typeA }, myProjectLibrary, forceUpdateMode, deleteUnusedVersionsMode, structureConflictResolutionMode); ... |
Ändern Sie den folgenden Programmcode, um UpdateLibrary für einen Typ aus der globalen Bibliothek in der globalen Bibliothek auszuführen:
|
... ILibrary globalLibrarySource = ...; LibraryTypeUserFolder singleFolderContainingTypes = globalLibrarySource.TypeFolder.Folders.Find("folder1"); ILibraryType typeA = singleFolderContainingTypes.Types.Find("block1"); // block1 has lower version. ForceUpdateMode forceUpdateMode = ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault; DeleteUnusedVersionsMode deleteUnusedVersionsMode = DeleteUnusedVersionsMode.DoNotDelete; StructureConflictResolutionMode structureConflictResolutionMode = StructureConflictResolutionMode.UpdateStructure; ILibrary globalLibraryTarget = ...; globalLibrarySource.UpdateLibrary(new[] { typeA }, globalLibraryTarget, forceUpdateMode, deleteUnusedVersionsMode, structureConflictResolutionMode); ... |
Ausnahmebehandlung für Einzeltyp-Ausnahmebehandlung
Einige der Ausnahmeszenarien sind nachstehend beschrieben:
StructureConflictResolutionMode ist CancelIfStructureConflicts
|
var myProjectLibrary = Project.ProjectLibrary; LibraryTypeSystemFolder typeFolder = myProjectLibrary.TypeFolder.Folders.Find("folder1"); //from myProjectLibrary var type1 = typeFolder.Types.FindType("Type1"); // if this structure is not available in Global Library type1.UpdateLibrary(globalLibrary, DeleteUnusedVersionsMode.DoNotDeleteUnusedVersions, StructureConflictResolutionMode.CancelIfStructureConflicts, ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault); // throws EngineeringTargetInvocationException |
Zielbibliothek ist NULL
|
var myProjectLibrary = Project.ProjectLibrary; var type1 = projectLibrary.Types.FindType("Type1"); ILibrary globalLibrary = Null; type1.UpdateLibrary(globalLibrary, DeleteUnusedVersionsMode.DoNotDeleteUnusedVersions, StructureConflictResolutionMode.RetainStructure, ForceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault); // throws EngineeringTargetInvocationException |
Bei falschen Enum-Werten wird eine EngineeringTargetInvocationException ausgelöst:
|
var myProjectLibrary = Project.ProjectLibrary; LibraryTypeSystemFolder typeFolder = myProjectLibrary.TypeFolder.Folders.Find("folder1");//from myProjectLibrary var type1 = typeFolder.Types.FindType("Type1"); // if this structure is not available in Global Library type1 .UpdateLibrary(globalLibrary, (DeleteUnusedVersionsMode)42, StructureConflictResolutionMode.RetainStructure, (ForceUpdateMode)22); // throws EngineeringTargetInvocationException |
Ausnahmebehandlung für Mehrfachtyp-Ausnahmebehandlung
Einige der Ausnahmeszenarien sind nachstehend beschrieben:
NULL in sourceTypesAndFolder-Sammlung
|
var myProjectLibrary = Project.ProjectLibrary; var type1 = projectLibrary.Types.FindType("Type1"); // if this statement yields NULL myProjectLibrary.UpdateLibrary(new[] { type1 }, globalLibrary, forceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault, DeleteUnusedVersionsMode.DoNotDeleteUnusedVersions, StructureConflictResolutionMode.RetainStructure); // throws EngineeringTargetInvocationException |
StructureConflictResolutionMode ist CancelIfStructureConflicts
|
var myProjectLibrary = Project.ProjectLibrary; LibraryTypeSystemFolder typeFolder = myProjectLibrary.TypeFolder.Folders.Find("folder1"); //from myProjectLibrary var type1 = typeFolder.Types.FindType("Type1"); // if this structure is not available in Global Library myProjectLibrary.UpdateLibrary(new[] { type1 }, globalLibrary, forceUpdateMode.SetOnlyHigherUpdatedVersionAsDefault, DeleteUnusedVersionsMode.DoNotDeleteUnusedVersions, StructureConflictResolutionMode.CancelIfStructureConflicts); // throws EngineeringTargetInvocationException |
Bei falschen Enumerationswerten wird EngineeringTargetInvocationException zurückgegeben
|
var myProjectLibrary = Project.ProjectLibrary; LibraryTypeSystemFolder typeFolder = myProjectLibrary.TypeFolder.Folders.Find("folder1"); //from myProjectLibrary var type1 = typeFolder.Types.FindType("Type1"); // if this structure is not available in Global Library myProjectLibrary.UpdateLibrary(new[] { type1 }, globalLibrary, (ForceUpdateMode)22, (DeleteUnusedVersionsMode)42, StructureConflictResolutionMode.RetainStructure); // throws EngineeringTargetInvocationException |
|
Hinweis Weitere Fälle, in denen EngineeringTargetInvocationException ausgelöst wird, sind nachfolgend beschrieben:
|
Siehe auch