Package.GetPart Method (Uri)


The .NET API Reference documentation has a new home. Visit the .NET API Browser on to see the new experience.

Returns the part with a given URI.

Namespace:   System.IO.Packaging
Assembly:  WindowsBase (in WindowsBase.dll)

Public Function GetPart (
	partUri As Uri
) As PackagePart


Type: System.Uri

The uniform resource identifier (URI) of the part to return.

Return Value

Type: System.IO.Packaging.PackagePart

The part with the specified partUri.

Exception Condition

partUri is null.


partUri is not a valid PackagePart uniform resource identifier (URI).


A part with the specified partUri is not in the package.


The package is not open (Dispose or Close has been called).


The package is write-only.

An InvalidOperationException is thrown if a part with the specified partUri does not exist.

The PartExists method can be used to determine whether partUri references an existing part.

By default, a ZipPackage derived implementation of the abstract Package base class is provided and used. In the default operation, GetPart internally calls GetPartCore of the ZipPackage class to return a requested part from a ZIP file.

For additional information, see the Open Packaging Conventions (OPC) specification available for download at

Notes to Inheritors:

GetPart internally calls the derived class GetPartCore method to actually flush the part based on the physical format implemented in the derived class.

The following example shows how to locate, retrieve, and read parts that are contained in a package. For the complete sample, see Reading a Package Sample.

' Open the Package.
' ('using' statement insures that 'package' is
'  closed and disposed when it goes out of scope.)
Using package As Package = Package.Open(packagePath, FileMode.Open, FileAccess.Read)
	Dim documentPart As PackagePart = Nothing
	Dim resourcePart As PackagePart = Nothing

	' Get the Package Relationships and look for
	'   the Document part based on the RelationshipType
	Dim uriDocumentTarget As Uri = Nothing
	For Each relationship As PackageRelationship In package.GetRelationshipsByType(PackageRelationshipType)
		' Resolve the Relationship Target Uri
		'   so the Document Part can be retrieved.
		uriDocumentTarget = PackUriHelper.ResolvePartUri(New Uri("/", UriKind.Relative), relationship.TargetUri)

		' Open the Document Part, write the contents to a file.
		documentPart = package.GetPart(uriDocumentTarget)
		ExtractPart(documentPart, targetDirectory)
	Next relationship

	' Get the Document part's Relationships,
	'   and look for required resources.
	Dim uriResourceTarget As Uri = Nothing
	For Each relationship As PackageRelationship In documentPart.GetRelationshipsByType(ResourceRelationshipType)
		' Resolve the Relationship Target Uri
		'   so the Resource Part can be retrieved.
		uriResourceTarget = PackUriHelper.ResolvePartUri(documentPart.Uri, relationship.TargetUri)

		' Open the Resource Part and write the contents to a file.
		resourcePart = package.GetPart(uriResourceTarget)
		ExtractPart(resourcePart, targetDirectory)
	Next relationship

End Using ' end:using(Package package) - Close & dispose package.

.NET Framework
Available since 3.0
Return to top