Skip to content

Instantly share code, notes, and snippets.

@bkqc
Forked from sharwell/nuspec.md
Last active June 4, 2025 18:15
Show Gist options
  • Save bkqc/0b94bee8063590fcec98678d2048984a to your computer and use it in GitHub Desktop.
Save bkqc/0b94bee8063590fcec98678d2048984a to your computer and use it in GitHub Desktop.
A schema definition for NuGet specifications suitable for use with Visual Studio's IntelliSense.

A schema definition for NuGet specifications suitable for use with Visual Studio's IntelliSense. (Updated 2025-05-29)

Installation

To use this file:

  1. Download the file to your Visual Studio XML schemas folder. For example:
    • Visual Studio 2010: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas
    • Visual Studio 2012: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Xml\Schemas
  2. Make sure to specify the XML namespace in your .nuspec file. If you previously used <package>, change it to <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">

Details and source

This file is based on the nuspec.xsd schema found in the NuGet source code, but modified in the following ways:

  • The targetNamespace and related attributes in the original code appear as {0} for flexibility in an application. In this schema they are explicitly coded as http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd.
  • <xs:documentation> elements are added for all elements and attributes declared in the schema. The documentation is based on information I found in the Nuspec Reference.

Documentation sources

Updated 2025-05-29 as defined in https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Packaging/compiler/resources/nuspec.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="nuspec"
targetNamespace="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
elementFormDefault="qualified"
xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
xmlns:mstns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:annotation>
<xs:documentation>
Sources for documentation:
- https://learn.microsoft.com/en-us/nuget/reference/nuspec#specifying-framework-assembly-references-gac
- https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets
- https://devblogs.microsoft.com/dotnet/nuget-contentfiles-demystified/
</xs:documentation>
</xs:annotation>
<!--Updated 2025-05-29 as defined in https://github.com/NuGet/NuGet.Client/blob/dev/src/NuGet.Core/NuGet.Packaging/compiler/resources/nuspec.xsd-->
<xs:complexType name="dependency">
<xs:attribute name="id" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The package id of the package that this package is dependent upon. The package specified by the dependency id is required by this package and NuGet will install it when installing the current package.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="version" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Optional. The range of versions acceptable as a dependency. Typically this is just a version number which represents a minimum version. However a more explicit version range syntax is supported.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="include" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>(v3.x+) Optional. A comma-delimited list of include/exclude tags indicating of the dependency to include in the final package. The default value is all.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="exclude" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>(v3.x+) Optional. A comma-delimited list of include/exclude tags indicating of the dependency to exclude in the final package. The default value is build,analyzers which can be over-written. But content/ ContentFiles are also implicitly excluded in the final package which can't be over-written. Tags specified with exclude take precedence over those specified with include. For example, include="runtime, compile" exclude="compile" is the same as include="runtime".</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="dependencyGroup">
<xs:sequence>
<xs:element name="dependency" minOccurs="0" maxOccurs="unbounded" type="dependency">
<xs:annotation>
<xs:documentation>A reference to another package that this package depends on.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="targetFramework" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Optional. The target framework of the group. If not set, the group acts as a fallback group, which behaves exactly as before version 2.0.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="reference">
<xs:attribute name="file" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The path to an assembly which the project should explicitly reference.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="contentFileEntries">
<xs:annotation>
<xs:documentation>(3.3+) the contentFiles feature was introduced to support project.json managed projects and packages that are indirectly referenced in a project. This feature is supported for projects that use PackageReference and project.json package management formats. It is not supported for projects that use packages.config. (https://devblogs.microsoft.com/dotnet/nuget-contentfiles-demystified/)</xs:documentation>
</xs:annotation>
<xs:attribute name="include" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The pattern or filename that should be included in the package</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="exclude" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>The pattern or filename that should be excluded from the package</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="buildAction" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>the action the compiler is recommended to take. Possible values include: None, Compile, EmbeddedResource. The default value if this attribute is not provided is Compile.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="copyToOutput" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>should these files be copied to the output folder? The default value is false.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="flatten" type="xs:boolean" use="optional">
<xs:annotation>
<xs:documentation>Should the files be all delivered to the root folder of the project or should they keep the folder structure that they were packaged in. The default value is false, which indicates they should create (if necessary) and keep the same structure they have after the TFM folder in the pacakge.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="referenceGroup">
<xs:sequence>
<xs:element name="reference" minOccurs="1" maxOccurs="unbounded" type="reference">
<xs:annotation>
<xs:documentation>A explicitly specified assembly that the target project should reference.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="targetFramework" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Optional. The target framework of the group. If not set, the group acts as a fallback group, which behaves exactly as before version 2.5.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="frameworkReference">
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Complete reference name within the framework. Example: Microsoft.WindowsDesktop.App.WPF</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:complexType name="frameworkReferenceGroup">
<xs:annotation>
<xs:documentation>
Group of references for a specific framework
</xs:documentation>
</xs:annotation>
<xs:sequence>
<xs:element name="frameworkReference" minOccurs="0" maxOccurs="unbounded" type="frameworkReference">
<xs:annotation>
<xs:documentation>The references to include</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="targetFramework" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>The identifier of the target framework concerned as defined in the dependencies/group elements. The exact identifiers can be found at https://learn.microsoft.com/en-us/nuget/reference/target-frameworks. Example: .NETCoreApp3.1</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
<xs:simpleType name="licenseType">
<xs:restriction base="xs:string">
<xs:enumeration value="expression"/>
<xs:enumeration value="file"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="package">
<xs:annotation>
<xs:documentation>The top-level element for a NuGet package specification.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="metadata" maxOccurs="1" minOccurs="1">
<xs:annotation>
<xs:documentation>Describes the package and its dependencies.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="id" maxOccurs="1" minOccurs="1" type="xs:string">
<xs:annotation>
<xs:documentation>The unique identifier for the package. This is the package name that is shown when packages are listed using the Package Manager Console. These are also used when installing a package using the Install-Package command within the Package Manager Console. Package IDs may not contain any spaces or characters that are invalid in an URL. In general, they follow the same rules as .NET namespaces do. So `Foo.Bar` is a valid ID, `Foo!` and `Foo Bar` are not.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="version" maxOccurs="1" minOccurs="1" type="xs:string">
<xs:annotation>
<xs:documentation>The version of the package, in a format like `1.2.3`.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="title" maxOccurs="1" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>Optional. The human-friendly title of the package displayed in the Manage NuGet Packages dialog. If none is specified, the ID is used instead.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="authors" maxOccurs="1" minOccurs="1" type="xs:string">
<xs:annotation>
<xs:documentation>A comma-separated list of authors of the package code.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="owners" maxOccurs="1" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>Optional, Deprecated. A comma-separated list of the package creators. This is often the same list as in authors. This is ignored when uploading the package to the NuGet.org Gallery.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="licenseUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI">
<xs:annotation>
<xs:documentation>Optional, Deprecated. A link to the license that the package is under.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="projectUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI">
<xs:annotation>
<xs:documentation>Optional. A URL for the home page of the package.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="iconUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI">
<xs:annotation>
<xs:documentation>
Optional, Deprecated. Use icon instead BUT to maintain backward compatibility with clients and sources that don't yet support icon, specify both icon and iconUrl. Visual Studio supports icon for packages coming from a folder-based source.
A URL for the image to use as the icon for the package in the **Manage NuGet Packages** dialog box. This should be a 32x32-pixel *.png* file that has a transparent background.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="requireLicenseAcceptance" maxOccurs="1" minOccurs="0" type="xs:boolean">
<xs:annotation>
<xs:documentation>(v2.8+) Optional. A Boolean value that specifies whether the client needs to ensure that the package license (described by licenseUrl) is accepted before the package is installed.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="description" maxOccurs="1" minOccurs="1" type="xs:string">
<xs:annotation>
<xs:documentation>A long description of the package. This shows up in the right pane of the Add Package Dialog as well as in the Package Manager Console when listing packages using the `Get-Package` command.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="summary" maxOccurs="1" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>Optional, Deprecated. Use description instead. A short description of the package. If specified, this shows up in the middle pane of the Add Package Dialog. If not specified, a truncated version of the description is used instead.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="releaseNotes" maxOccurs="1" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>(v1.5+) Optional. A description of the changes made in each release of the package. This field only shows up when the _Updates_ tab is selected and the package is an update to a previously installed package. It is displayed where the Description would normally be displayed.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="copyright" maxOccurs="1" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>(v1.5+) Optional. Copyright details for the package.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="language" maxOccurs="1" minOccurs="0" type="xs:string" default="en-US">
<xs:annotation>
<xs:documentation>Optional. The locale ID for the package, such as en-us.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="tags" maxOccurs="1" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>Optional. A space-delimited list of tags and keywords that describe the package. This information is used to help make sure users can find the package using searches in the **Add Package Reference** dialog box or filtering in the **Package Manager Console** window.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="serviceable" maxOccurs="1" minOccurs="0" type="xs:boolean">
<xs:annotation>
<xs:documentation>(3.3+) For internal NuGet use only.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="icon" maxOccurs="1" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>
(v5.3+) Optional. It is a path to an image file within the package, often shown in UIs like nuget.org as the package icon. Image file size is limited to 1 MB. Supported file formats include JPEG and PNG. We recommend an image resolution of 128x128.
To maintain backward compatibility with clients and sources that don't yet support icon, specify both icon and iconUrl. Visual Studio supports icon for packages coming from a folder-based source.
</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="readme" maxOccurs="1" minOccurs="0" type="xs:string">
<xs:annotation>
<xs:documentation>(v5.10.0 preview 2+) Optional. When packing a readme file, you need to use the readme element to specify the package path, relative to the root of the package. In addition to this, you need to make sure that the file is included in the package. Supported file formats include only Markdown (.md).</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="repository" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation>Optional. Allow you to map the .nupkg to the repository that built it, with the potential to get as detailed as the individual branch name and / or commit SHA-1 hash that built the package. This should be a publicly available url that can be invoked directly by a version control software. It should not be an html page as this is meant for the computer.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="type" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Repository type. Examples: git (default), tfs</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="url" type="xs:anyURI" use="optional">
<xs:annotation>
<xs:documentation>(v4.0+) Repository URL used to clone or retrieve source code.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="branch" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Optional repository branch information. RepositoryUrl must also be specified for this property to be included.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="commit" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>(v4.6+) Optional repository commit or changeset to indicate which source the package was built against. RepositoryUrl must also be specified for this property to be included.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="license" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation>
(v4.9+) Optional. An SPDX license expression or path to a license file within the package, often shown in UIs. If licensing the package under a common license, like MIT or BSD-2-Clause, use the associated SPDX license identifier (https://spdx.org/licenses/)
More detail can be found here: https://github.com/NuGet/Home/wiki/Packaging-License-within-the-nupkg-(Technical-Spec)
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="type" type="licenseType" use="required">
<xs:annotation>
<xs:documentation>The type of license value (file or expression as of current implementation)</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="version" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>This attribute defines the license expression grammar version. This will only be relevant if in the future there is an update to the license expression grammar.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="packageTypes" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation>(v3.5+) A collection of zero or more packageType elements specifying the type of the package if other than a traditional dependency package. </xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="packageType" maxOccurs="unbounded" minOccurs="0">
<xs:annotation>
<xs:documentation>Indicates the package's intended use. Package types use the same format as package IDs.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Identifier of the package type. More detail can be found at https://learn.microsoft.com/en-us/nuget/create-packages/set-package-type?tabs=dotnet</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="version" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Optional. Version of the package type.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dependencies" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation>The list of dependencies for the package.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="dependency" type="dependency">
<xs:annotation>
<xs:documentation>A reference to another package that this package depends on.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="group" type="dependencyGroup">
<xs:annotation>
<xs:documentation>A group of dependencies associated with a particular target framework.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="frameworkAssemblies" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation>(v1.2+) The list of .NET Framework assembly references that this package requires. These are references to assemblies that exist in the .NET Framework and thus should already be in the GAC for any machine. Specifying framework assembly references ensures these references are added when installing the package.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="frameworkAssembly" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Specifies a framework dependency. Framework assemblies are assumed to be installed in the user's GAC by default.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="assemblyName" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Required. The fully qualified assembly name.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="targetFramework" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Optional. If specified, the specific target framework that this reference applies to. For example, if reference only applies to .NET 4, then the value should be "net40". If the reference applies to *all* frameworks, then omit this attribute.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="frameworkReferences" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation>
(Version 5.1+ with PackageReference only) Framework References are a .NET Core concept representing shared frameworks such as WPF or Windows Forms. By specifying a shared framework, the package ensures that all its framework dependencies are included in the referencing project.
Note that hand authoring nuspecs that contain framework references is not recommended. Consider using the targets pack (https://learn.microsoft.com/en-us/nuget/reference/msbuild-targets) instead, which will automatically infer them from the project.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="group" minOccurs="0" maxOccurs="unbounded" type="frameworkReferenceGroup">
<xs:annotation>
<xs:documentation>Group of references for a specific framework</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="references" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation>(v1.5+) Names of assemblies under lib that are added as project references. If unspecified, all references in lib are added as project references. When specifying a reference, only specify the name and not the path inside the package.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="reference" type="reference">
<xs:annotation>
<xs:documentation>A explicitly specified assembly that the target project should reference.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="group" type="referenceGroup">
<xs:annotation>
<xs:documentation>A group of references associated with a particular target framework.</xs:documentation>
</xs:annotation>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="contentFiles" maxOccurs="1" minOccurs="0">
<xs:annotation>
<xs:documentation>
(v3.3+) The contentFiles feature was introduced to support project.json managed projects and packages that are indirectly referenced in a project. This feature is supported for projects that use PackageReference and project.json package management formats.
It is not supported for projects that use packages.config. (https://devblogs.microsoft.com/dotnet/nuget-contentfiles-demystified/)
Content files are included in a package using the files element, specifying the content folder in the target attribute. However, such files are ignored when the package is installed in a project using PackageReference, which instead uses the contentFiles element.
For maximum compatibility with consuming projects, a package ideally specifies the content files in both elements.https://learn.microsoft.com/en-us/nuget/reference/nuspec#including-content-files
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="files" type="contentFileEntries">
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="minClientVersion" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>(v2.5+) Specifies the minimum version of the NuGet client that can install this package. This requirement is enforced by both the NuGet Visual Studio extension and nuget.exe program.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="files" minOccurs="0" maxOccurs="1" nillable="true">
<xs:annotation>
<xs:documentation>Explicitly specifies the set of files to include in the package. Ignored when the package is used as PackageReference.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="file" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Specifies the source and destination of a file to include in the package.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="src" use="required" type="xs:string">
<xs:annotation>
<xs:documentation>The location of the file or files to include. The path is relative to the NuSpec file unless an absolute path is specified. The wildcard character, `*`, is allowed. Using a double wildcard, `**`, implies a recursive directory search.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="target" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>This is a relative path to the directory within the package where the source files will be placed.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="exclude" use="optional" type="xs:string">
<xs:annotation>
<xs:documentation>The file or files to exclude. This is usually combined with a wildcard value in the `src` attribute. The `exclude` attribute can contain a semi-colon delimited list of files or a file pattern. Using a double wildcard, `**`, implies a recursive exclude pattern.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment