diff --git a/etc/schema/README b/etc/schema/README
index 08dfe45dfbb..7611652762c 100644
--- a/etc/schema/README
+++ b/etc/schema/README
@@ -113,3 +113,23 @@ Software License:
specific, written prior permission. Title to copyright in this
software and any associated documentation will at all times remain
with copyright holders.
+
+
+The following files are related to .NET development:
+
+ dotnet-appconfig.rnc dotnet-packages-config.rnc
+ dotnet-packages.props dotnet-resx.rnc msbuild.rnc nuget.rnc
+ nuspec.rnc
+
+These files are derived/inferred from files from numerous .NET projects,
+whose contents have been created based on public documentation provided
+by Microsoft, or created using the documentation as is.
+
+Links to various related resources:
+- app.config: https://learn.microsoft.com/en-us/dotnet/framework/configure-apps/file-schema/
+- Directory.Packages.Props: https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management
+- MSBuild: https://learn.microsoft.com/en-us/visualstudio/msbuild
+- Nuspec: https://learn.microsoft.com/en-us/nuget/reference/nuspec
+- Nuget.config: https://learn.microsoft.com/en-us/nuget/reference/nuget-config-file
+- Packages.config: https://learn.microsoft.com/en-us/nuget/reference/packages-config
+- Resx: Xsd-schema as included in default Resx-files generated by Resxen.exe
diff --git a/etc/schema/dotnet-appconfig.rnc b/etc/schema/dotnet-appconfig.rnc
new file mode 100644
index 00000000000..7e108672ed9
--- /dev/null
+++ b/etc/schema/dotnet-appconfig.rnc
@@ -0,0 +1,411 @@
+default namespace = ""
+namespace ns1 = "http://schemas.microsoft.com/.NetConfiguration/v2.0"
+namespace ns2 = "urn:schemas-microsoft-com:asm.v1"
+namespace xdt = "http://schemas.microsoft.com/XML-Document-Transform"
+
+start =
+ element configuration {
+ element configSections { (section | sectionGroup)* }?,
+ element system.web.webPages.razor {
+ element host {
+ attribute factoryType { text }
+ },
+ pages
+ }?,
+ (system.web
+ | system.webServer
+ | element location {
+ attribute inheritInChildApplications { xsd:boolean }?,
+ attribute path { text }?,
+ system.web?,
+ system.webServer?
+ }
+ | element runtime {
+ element loadFromRemoteSources {
+ attribute enabled { xsd:boolean }
+ }?,
+ element ns2:assemblyBinding {
+ attribute appliesTo { xsd:NCName }?,
+ element ns2:dependentAssembly {
+ element ns2:Paket { xsd:NCName }?,
+ element ns2:assemblyIdentity {
+ attribute culture { xsd:NCName }?,
+ attribute name { xsd:NCName },
+ attribute publicKeyToken { xsd:NMTOKEN }
+ },
+ element ns2:bindingRedirect {
+ attribute newVersion { xsd:NMTOKEN },
+ attribute oldVersion { xsd:NMTOKEN }
+ }
+ }+
+ }+
+ }
+ | element startup {
+ attribute useLegacyV2RuntimeActivationPolicy { xsd:boolean }?,
+ element supportedRuntime {
+ attribute sku { text },
+ attribute version { xsd:NCName }
+ }
+ }
+ | element system.codedom {
+ element compilers {
+ element compiler {
+ attribute compilerOptions { text }?,
+ attribute extension { xsd:NMTOKEN },
+ attribute language { text },
+ attribute type { text },
+ attribute warningLevel { xsd:integer },
+ element providerOption {
+ attribute name { xsd:NCName },
+ attribute value { xsd:NCName }
+ }*
+ }+
+ }
+ }
+ | element system.diagnostics {
+ element sources {
+ element source {
+ attribute name { xsd:NCName },
+ element listeners { add }?
+ }+
+ }?,
+ (element switches { empty },
+ element sharedListeners { empty },
+ element trace {
+ attribute autoflush { xsd:boolean }
+ })?
+ }
+ | element system.serviceModel {
+ element diagnostics {
+ element messageLogging {
+ attribute logEntireMessage { xsd:boolean },
+ attribute logMalformedMessages { xsd:boolean },
+ attribute logMessagesAtServiceLevel { xsd:boolean },
+ attribute logMessagesAtTransportLevel { xsd:boolean },
+ attribute maxMessagesToLog { xsd:integer },
+ attribute maxSizeOfMessageToLog { xsd:integer }
+ }
+ }?,
+ (element behaviors {
+ element serviceBehaviors {
+ element behavior {
+ attribute name { text }?,
+ element serviceMetadata {
+ attribute httpGetEnabled { xsd:boolean },
+ attribute httpsGetEnabled { xsd:boolean }?
+ },
+ element serviceDebug {
+ attribute httpHelpPageEnabled { xsd:boolean }?,
+ attribute includeExceptionDetailInFaults {
+ xsd:boolean
+ }
+ },
+ element dataContractSerializer {
+ attribute maxItemsInObjectGraph { xsd:integer }
+ }?,
+ (element serviceTelemetry { empty }
+ | element serviceThrottling {
+ attribute maxConcurrentCalls { xsd:integer },
+ attribute maxConcurrentInstances { xsd:integer },
+ attribute maxConcurrentSessions { xsd:integer }
+ })?
+ }
+ }
+ }
+ | element bindings {
+ element basicHttpBinding {
+ element binding {
+ attribute closeTimeout { xsd:time }?,
+ attribute maxBufferSize { xsd:integer }?,
+ attribute maxReceivedMessageSize { xsd:integer }?,
+ attribute name { xsd:NCName }?,
+ attribute openTimeout { xsd:time }?,
+ attribute receiveTimeout { xsd:time }?,
+ attribute sendTimeout { xsd:time }?,
+ element readerQuotas {
+ attribute maxArrayLength { xsd:integer },
+ attribute maxBytesPerRead { xsd:integer }?,
+ attribute maxDepth { xsd:integer }?,
+ attribute maxNameTableCharCount { xsd:integer }?,
+ attribute maxStringContentLength { xsd:integer }
+ }?,
+ security?
+ }+
+ }?
+ }
+ | element client { empty }
+ | element extensions {
+ element behaviorExtensions { add+ },
+ (element bindingElementExtensions { add+ },
+ element bindingExtensions { add+ })?
+ }
+ | element protocolMapping { add+ }
+ | element serviceHostingEnvironment {
+ attribute aspNetCompatibilityEnabled { xsd:boolean }?,
+ attribute multipleSiteBindingsEnabled { xsd:boolean }?
+ })*,
+ element services {
+ element service {
+ attribute behaviorConfiguration { xsd:NCName }?,
+ attribute name { text },
+ element endpoint {
+ attribute address { xsd:NCName }?,
+ attribute binding { xsd:NCName },
+ attribute bindingConfiguration { xsd:NCName }?,
+ attribute contract { xsd:NCName }
+ }+
+ }+
+ }?
+ })*
+ }
+ | element ns1:configuration {
+ element ns1:configSections {
+ element ns1:section {
+ attribute name { xsd:NCName },
+ attribute requirePermission { xsd:boolean },
+ attribute type { text }
+ }
+ },
+ element ns1:appSettings { empty },
+ element ns1:connectionStrings { empty },
+ element ns1:system.web {
+ element ns1:compilation {
+ attribute debug { xsd:boolean },
+ attribute defaultLanguage { text },
+ attribute targetFramework { xsd:decimal }
+ },
+ element ns1:authentication {
+ attribute mode { xsd:NCName }
+ },
+ element ns1:httpModules { ns1.add },
+ element ns1:pages {
+ attribute clientIDMode { xsd:NCName },
+ attribute controlRenderingCompatibilityVersion { xsd:decimal }
+ }
+ },
+ element ns1:system.webServer {
+ element ns1:modules {
+ attribute runAllManagedModulesForAllRequests { xsd:boolean },
+ ns1.add
+ }
+ },
+ element ns1:rewriter {
+ element ns1:rewrite {
+ attribute to { text },
+ attribute url { text }
+ }+
+ }
+ }
+section =
+ element section {
+ attribute allowExeDefinition { xsd:NCName }?,
+ attribute name { xsd:NCName },
+ attribute requirePermission { xsd:boolean }?,
+ attribute restartOnExternalChanges { xsd:boolean }?,
+ attribute type { text }
+ }
+sectionGroup =
+ element sectionGroup {
+ attribute name { xsd:NCName },
+ attribute type { text }?,
+ (section | sectionGroup)+
+ }
+pages =
+ element pages {
+ attribute clientIDMode { xsd:NCName }?,
+ attribute controlRenderingCompatibilityVersion { xsd:decimal }?,
+ attribute enableEventValidation { xsd:boolean }?,
+ attribute pageBaseType { xsd:NCName }?,
+ attribute theme { text }?,
+ attribute validateRequest { xsd:boolean }?,
+ attribute viewStateEncryptionMode { xsd:NCName }?,
+ element namespaces { add+ }?
+ }
+add =
+ element add {
+ attribute assembly { text }?,
+ attribute binding { xsd:NCName }?,
+ attribute bindingConfiguration { text }?,
+ attribute connectionString { xsd:anyURI }?,
+ attribute initializationPage { text }?,
+ attribute initializeData { text }?,
+ attribute input { text }?,
+ attribute key { xsd:anyURI }?,
+ attribute matchType { xsd:NCName }?,
+ attribute modules { xsd:NCName }?,
+ attribute name { xsd:NCName }?,
+ attribute namespace { xsd:NCName }?,
+ attribute negate { xsd:boolean }?,
+ attribute path { text }?,
+ attribute preCondition { text }?,
+ attribute providerName { xsd:NCName }?,
+ attribute resourceType { xsd:NCName }?,
+ attribute responseBufferLimit { xsd:integer }?,
+ attribute scheme { xsd:NCName }?,
+ attribute scriptProcessor { text }?,
+ attribute type { text }?,
+ attribute validate { xsd:boolean }?,
+ attribute value { text }?,
+ attribute verb { text }?,
+ attribute xdt:Locator { text }?,
+ attribute xdt:Transform { xsd:NCName }?
+ }
+security =
+ element security {
+ attribute mode { xsd:NCName }?,
+ attribute xdt:Transform { xsd:NCName }?,
+ (element requestFiltering {
+ attribute removeServerHeader { xsd:boolean },
+ element requestLimits {
+ attribute maxAllowedContentLength { xsd:integer }
+ }?
+ }
+ | element transport {
+ attribute clientCredentialType { xsd:NCName }
+ })?
+ }
+system.webServer =
+ element system.webServer {
+ (element httpErrors {
+ attribute errorMode { xsd:NCName }?,
+ attribute existingResponse { xsd:NCName },
+ (remove+,
+ element error {
+ attribute path { text },
+ attribute prefixLanguageFilePath { text },
+ attribute responseMode { xsd:NCName },
+ attribute statusCode { xsd:integer }
+ }+)?
+ }
+ | element staticContent {
+ element mimeMap {
+ attribute fileExtension { xsd:NMTOKEN },
+ attribute mimeType { text }
+ }+
+ })?,
+ (element applicationInitialization {
+ attribute xdt:Transform { xsd:NCName },
+ add
+ }
+ | element rewrite {
+ element rules {
+ clear
+ | element rule {
+ attribute name { text },
+ attribute stopProcessing { xsd:boolean },
+ element match {
+ attribute url { text }
+ },
+ element conditions {
+ attribute logicalGrouping { xsd:NCName },
+ add+
+ }?,
+ element action {
+ attribute redirectType { xsd:NCName }?,
+ attribute type { xsd:NCName },
+ attribute url { text }
+ }
+ }
+ }
+ })?,
+ (security
+ | element aspNetCore {
+ attribute arguments { text }?,
+ attribute hostingModel { xsd:NCName }?,
+ attribute processPath { text }?,
+ attribute requestTimeout { xsd:time }?,
+ attribute stdoutLogEnabled { xsd:boolean }?,
+ attribute stdoutLogFile { text }?,
+ attribute xdt:Transform { text }?
+ }
+ | element handlers { (add | remove)+ }
+ | element httpProtocol {
+ attribute xdt:Transform { xsd:NCName }?,
+ element customHeaders { clear?, remove+ }
+ }
+ | element modules {
+ attribute runAllManagedModulesForAllRequests { xsd:boolean }?,
+ (add | remove)*
+ }
+ | element validation {
+ attribute validateIntegratedModeConfiguration { xsd:boolean }
+ })*,
+ element directoryBrowse {
+ attribute enabled { xsd:boolean }
+ }?
+ }
+system.web =
+ element system.web {
+ element authorization {
+ element allow {
+ attribute users { text }
+ }
+ }
+ | (pages
+ | element authentication {
+ attribute mode { xsd:NCName }
+ }
+ | element compilation {
+ attribute debug { xsd:boolean }?,
+ attribute targetFramework { xsd:NMTOKEN }?,
+ attribute tempDirectory { text }?,
+ attribute xdt:Transform { text }?,
+ element assemblies { add+ }?
+ }
+ | element customErrors {
+ attribute defaultRedirect { text }?,
+ attribute mode { xsd:NCName },
+ attribute redirectMode { xsd:NCName }?
+ }
+ | element globalization {
+ attribute requestEncoding { xsd:NCName },
+ attribute responseEncoding { xsd:NCName }
+ }
+ | element httpHandlers { add+ }
+ | element httpModules { add* }
+ | element httpRuntime {
+ attribute appRequestQueueLimit { xsd:integer }?,
+ attribute enableVersionHeader { xsd:boolean }?,
+ attribute executionTimeout { xsd:integer }?,
+ attribute maxRequestLength { xsd:integer }?,
+ attribute minFreeThreads { xsd:integer }?,
+ attribute minLocalRequestFreeThreads { xsd:integer }?,
+ attribute requestPathInvalidCharacters { text }?,
+ attribute requestValidationMode { xsd:decimal }?,
+ attribute targetFramework { xsd:NMTOKEN }?,
+ attribute useFullyQualifiedRedirectUrl { xsd:boolean }?
+ }
+ | element identity {
+ attribute impersonate { xsd:boolean }
+ }
+ | element machineKey {
+ attribute validation { xsd:NCName }
+ }
+ | element sessionState {
+ attribute cookieSameSite { xsd:NCName }?,
+ attribute cookieless { xsd:boolean },
+ attribute mode { xsd:NCName },
+ attribute stateConnectionString { text }?,
+ attribute timeout { xsd:integer }
+ }
+ | element xhtmlConformance {
+ attribute mode { xsd:NCName }
+ })*
+ }
+Globalization =
+ element Globalization {
+ element ResourceProviders { empty }
+ | add+
+ }
+ns1.add =
+ element ns1:add {
+ attribute name { xsd:NCName },
+ attribute type { text }
+ }
+remove =
+ element remove {
+ attribute name { xsd:NCName }?,
+ attribute statusCode { xsd:integer }?,
+ attribute subStatusCode { xsd:integer }?
+ }
+clear = element clear { empty }
diff --git a/etc/schema/dotnet-packages-config.rnc b/etc/schema/dotnet-packages-config.rnc
new file mode 100644
index 00000000000..702f11aca31
--- /dev/null
+++ b/etc/schema/dotnet-packages-config.rnc
@@ -0,0 +1,11 @@
+default namespace = ""
+
+start =
+ element packages {
+ element package {
+ attribute id { xsd:NCName },
+ attribute targetFramework { xsd:NCName }?,
+ attribute allowedVersions { xsd:NCName }?,
+ attribute version { xsd:NMTOKEN }
+ }+
+ }
diff --git a/etc/schema/dotnet-packages-props.rnc b/etc/schema/dotnet-packages-props.rnc
new file mode 100644
index 00000000000..18c689eb2dd
--- /dev/null
+++ b/etc/schema/dotnet-packages-props.rnc
@@ -0,0 +1,22 @@
+default namespace = ""
+
+start =
+ element Project {
+ element PropertyGroup {
+ element ManagePackageVersionsCentrally { xsd:boolean },
+ element CentralPackageTransitivePinningEnabled { xsd:boolean },
+ element CentralPackageVersionOverrideEnabled { xsd:boolean }
+ }?,
+ element ItemGroup {
+ attribute Condition { text }?,
+ (element GlobalPackageReference {
+ attribute Condition { text }?,
+ attribute Include { xsd:NCName },
+ attribute Version { xsd:NMTOKEN }
+ }+
+ | element PackageVersion {
+ attribute Include { xsd:NCName },
+ attribute Version { text }
+ }+)
+ }+
+ }
diff --git a/etc/schema/dotnet-resx.rnc b/etc/schema/dotnet-resx.rnc
new file mode 100644
index 00000000000..26b77e47527
--- /dev/null
+++ b/etc/schema/dotnet-resx.rnc
@@ -0,0 +1,57 @@
+default namespace = ""
+namespace msdata = "urn:schemas-microsoft-com:xml-msdata"
+namespace xsd = "http://www.w3.org/2001/XMLSchema"
+
+start =
+ element root {
+ element xsd:schema {
+ attribute id { xsd:NCName },
+ element xsd:import {
+ attribute namespace { xsd:anyURI }
+ }?,
+ xsd.element
+ },
+ element resheader {
+ attribute name { xsd:NCName },
+ value
+ }+,
+ (element assembly {
+ attribute alias { xsd:NCName },
+ attribute name { text }
+ }
+ | element data {
+ attribute mimetype { text }?,
+ attribute name { text },
+ attribute type { text }?,
+ attribute xml:space { xsd:NCName }?,
+ value
+ }
+ | element metadata {
+ attribute name { xsd:NCName },
+ attribute type { text },
+ value
+ })*
+ }
+xsd.element =
+ element xsd:element {
+ attribute minOccurs { xsd:integer }?,
+ attribute name { xsd:NCName },
+ attribute type { xsd:NMTOKEN }?,
+ attribute msdata:IsDataSet { xsd:boolean }?,
+ attribute msdata:Ordinal { xsd:integer }?,
+ element xsd:complexType {
+ element xsd:choice {
+ attribute maxOccurs { xsd:NCName },
+ xsd.element+
+ }?,
+ element xsd:sequence { xsd.element+ }?,
+ element xsd:attribute {
+ attribute name { xsd:NCName }?,
+ attribute ref { xsd:NMTOKEN }?,
+ attribute type { xsd:NMTOKEN }?,
+ attribute use { xsd:NCName }?,
+ attribute msdata:Ordinal { xsd:integer }?
+ }*
+ }*
+ }
+value = element value { text }
diff --git a/etc/schema/msbuild.rnc b/etc/schema/msbuild.rnc
new file mode 100644
index 00000000000..9425bbdf0b9
--- /dev/null
+++ b/etc/schema/msbuild.rnc
@@ -0,0 +1,1041 @@
+default namespace = ""
+namespace ns1 = "http://schemas.microsoft.com/developer/msbuild/2003"
+
+start = Project | ns1.Project
+Project =
+ element Project {
+ attribute Sdk { text }?,
+ (text
+ | ItemGroup
+ | PropertyGroup
+ | element Import {
+ attribute Project { text }
+ }
+ | element ProjectExtensions {
+ element VisualStudio {
+ element FlavorProperties {
+ attribute GUID { text },
+ element WebProjectProperties {
+ element UseIIS { xsd:NCName },
+ element AutoAssignPort { xsd:NCName },
+ element DevelopmentServerPort { xsd:integer },
+ element DevelopmentServerVPath { text },
+ element IISUrl { xsd:anyURI },
+ element NTLMAuthentication { xsd:NCName },
+ element UseCustomServer { xsd:NCName },
+ element CustomServerUrl { empty },
+ element SaveServerSettingsInUserFile { xsd:NCName }
+ }
+ }
+ | element UserProperties {
+ attribute configuration_4bicepconfig_1json__JsonSchema {
+ xsd:anyURI
+ }
+ }
+ }
+ }
+ | element Target {
+ attribute AfterTargets { xsd:NCName }?,
+ attribute BeforeTargets { xsd:NCName }?,
+ attribute Condition { text }?,
+ attribute DependsOnTargets { text }?,
+ attribute Inputs { text }?,
+ attribute Name { xsd:NCName },
+ attribute Outputs { text }?,
+ (PropertyGroup
+ | (element RemoveDir {
+ attribute Condition { text },
+ attribute Directories { text }
+ },
+ element Delete {
+ attribute Condition { text },
+ attribute Files { text }
+ }))?,
+ (ItemGroup
+ | element Error {
+ attribute Condition { text },
+ attribute Text { text }
+ }
+ | element Exec {
+ attribute Command { text },
+ attribute Condition { text }?,
+ attribute ContinueOnError { xsd:boolean }?,
+ attribute EnvironmentVariables { text }?,
+ attribute WorkingDirectory { text }?,
+ element Output {
+ attribute PropertyName { xsd:NCName },
+ attribute TaskParameter { xsd:NCName }
+ }?
+ }
+ | element MakeDir {
+ attribute Directories { text }
+ }
+ | element Message {
+ attribute Condition { text }?,
+ attribute Importance { xsd:NCName },
+ attribute Text { text }
+ })*,
+ (element Copy {
+ attribute DestinationFolder { text },
+ attribute SourceFiles { text }
+ }
+ | element MSBuild {
+ attribute BuildInParallel { xsd:boolean },
+ attribute Projects { text },
+ attribute Properties { text },
+ attribute Targets { xsd:NCName }
+ })?
+ })+
+ }
+ns1.Project =
+ element ns1:Project {
+ attribute DefaultTargets { xsd:NCName }?,
+ attribute ToolsVersion { xsd:decimal }?,
+ (text
+ | ns1.ItemGroup
+ | ns1.PropertyGroup
+ | element ns1:Choose {
+ element ns1:When {
+ attribute Condition { text },
+ (ns1.PropertyGroup | ns1.ItemGroup+)
+ }+,
+ element ns1:Otherwise { ns1.ItemGroup }?
+ }
+ | element ns1:Import {
+ attribute Condition { text }?,
+ attribute Label { xsd:NCName }?,
+ attribute Project { text }
+ }
+ | element ns1:ProjectExtensions {
+ element ns1:VisualStudio {
+ element ns1:FlavorProperties {
+ attribute GUID { text },
+ (element ns1:WebProjectProperties {
+ (element ns1:UseIIS { xsd:NCName },
+ element ns1:AutoAssignPort { xsd:NCName },
+ element ns1:DevelopmentServerPort { xsd:integer },
+ element ns1:DevelopmentServerVPath { text },
+ element ns1:IISUrl { xsd:anyURI },
+ element ns1:NTLMAuthentication { xsd:NCName },
+ element ns1:UseCustomServer { xsd:NCName },
+ element ns1:CustomServerUrl { empty })?,
+ element ns1:SaveServerSettingsInUserFile { xsd:NCName }
+ }
+ | (element ns1:ProjectProperties {
+ attribute AddItemTemplatesGuid { text },
+ attribute ApplicationType { xsd:NCName },
+ attribute DebugInfoExeName { text },
+ attribute HostName { xsd:NCName },
+ attribute HostPackage { text },
+ attribute Language { xsd:NCName },
+ attribute OfficeVersion { xsd:decimal },
+ attribute TemplatesPath { xsd:NCName },
+ attribute VstxVersion { xsd:decimal }
+ },
+ element ns1:Host {
+ attribute GeneratedCodeNamespace { xsd:NCName },
+ attribute IconIndex { xsd:integer },
+ attribute Name { xsd:NCName },
+ attribute PublishedHash { text },
+ element ns1:HostItem {
+ attribute Blueprint { xsd:NCName },
+ attribute CanActivate { xsd:boolean },
+ attribute CanonicalName { xsd:NCName },
+ attribute Code { xsd:NCName },
+ attribute GeneratedCode { xsd:NCName },
+ attribute IconIndex { xsd:integer },
+ attribute Name { xsd:NCName },
+ attribute PublishedHash { text }
+ }
+ }))
+ }
+ | element ns1:UserProperties {
+ attribute Name { xsd:NCName }
+ }
+ }
+ }
+ | element ns1:Target {
+ attribute AfterTargets { xsd:NCName }?,
+ attribute BeforeTargets { xsd:NCName }?,
+ attribute Condition { text }?,
+ attribute Name { xsd:NCName },
+ attribute Outputs { text }?,
+ (ns1.PropertyGroup
+ | element ns1:Error {
+ attribute Condition { text },
+ attribute HelpKeyword { xsd:NCName },
+ attribute Text { text }
+ }*
+ | (ns1.ItemGroup
+ | element ns1:MakeDir {
+ attribute Directories { text }
+ }
+ | element ns1:WriteCodeFragment {
+ attribute AssemblyAttributes { text },
+ attribute Language { text },
+ attribute OutputFile { text }
+ })*),
+ (element ns1:Copy {
+ attribute ContinueOnError { xsd:boolean }?,
+ attribute DestinationFolder { text },
+ attribute OverwriteReadOnlyFiles { xsd:NCName },
+ attribute SourceFiles { text }
+ }
+ | element ns1:CreateItem {
+ attribute Exclude { text }?,
+ attribute Include { text },
+ ns1.Output
+ }
+ | element ns1:Delete {
+ attribute Files { text },
+ attribute TreatErrorsAsWarnings { xsd:NCName }
+ }
+ | element ns1:Exec {
+ attribute Command { text },
+ attribute WorkingDirectory { text }?
+ }
+ | element ns1:GetVersionParts {
+ attribute AssemblyPath { text },
+ ns1.Output+
+ }
+ | element ns1:Message {
+ attribute Importance { xsd:NCName }?,
+ attribute Text { text }
+ }
+ | element ns1:TokenReplace {
+ attribute Condition { text }?,
+ attribute Destination { text },
+ attribute Path { text },
+ attribute Replacement { text },
+ attribute Token { text }
+ })*,
+ element ns1:CallTarget {
+ attribute Condition { text }?,
+ attribute Targets { xsd:NCName }
+ }?
+ }
+ | element ns1:UsingTask {
+ attribute AssemblyFile { text },
+ attribute TaskFactory { xsd:NCName },
+ attribute TaskName { xsd:NCName },
+ element ns1:ParameterGroup {
+ (element ns1:Path {
+ attribute ParameterType { xsd:NCName },
+ attribute Required { xsd:boolean }
+ },
+ element ns1:Destination {
+ attribute ParameterType { xsd:NCName },
+ attribute Required { xsd:boolean }
+ },
+ element ns1:Token {
+ attribute ParameterType { xsd:NCName },
+ attribute Required { xsd:boolean }
+ },
+ element ns1:Replacement {
+ attribute ParameterType { xsd:NCName },
+ attribute Required { xsd:boolean }
+ })
+ | (element ns1:AssemblyPath {
+ attribute ParameterType { xsd:NCName },
+ attribute Required { xsd:boolean }
+ },
+ element ns1:MajorVersion {
+ attribute Output { xsd:boolean },
+ attribute ParameterType { xsd:NCName }
+ },
+ element ns1:MinorVersion {
+ attribute Output { xsd:boolean },
+ attribute ParameterType { xsd:NCName }
+ },
+ element ns1:BuildVersion {
+ attribute Output { xsd:boolean },
+ attribute ParameterType { xsd:NCName }
+ },
+ element ns1:RevisionVersion {
+ attribute Output { xsd:boolean },
+ attribute ParameterType { xsd:NCName }
+ })
+ },
+ element ns1:Task {
+ element ns1:Using {
+ attribute Namespace { xsd:NCName }
+ }?,
+ element ns1:Code {
+ attribute Language { xsd:NCName },
+ attribute Type { xsd:NCName },
+ text
+ }
+ }
+ })+
+ }
+PropertyGroup =
+ element PropertyGroup {
+ attribute Condition { text }?,
+ attribute Label { xsd:NCName }?,
+ element TargetFrameworks { text }?,
+ (element DotnetMonoRepoVersion { xsd:NMTOKEN }
+ | (element CFBundleName { text },
+ element CFBundleDisplayName { text },
+ element CFBundleIdentifier { xsd:NCName },
+ element CFBundleVersion { xsd:NMTOKEN },
+ element CFBundleShortVersionString { xsd:NMTOKEN },
+ element CFBundlePackageType { xsd:NCName },
+ element CFBundleExecutable { xsd:NCName },
+ element CFBundleIconFile { xsd:NCName },
+ element NSPrincipalClass { xsd:NCName },
+ element NSHighResolutionCapable { xsd:boolean }))?,
+ (element SoAssemblyFileVersion {
+ attribute Condition { text },
+ xsd:NMTOKEN
+ },
+ element SoReleaseVersion {
+ attribute Condition { text },
+ text
+ })?,
+ (element AccelerateBuildsInVisualStudio { xsd:boolean }
+ | element AddLicenseAsEmbeddedResource { xsd:boolean }
+ | element AddNoticeAsEmbeddedResource { xsd:boolean }
+ | element AnalysisMode { xsd:NCName }
+ | element ApiName {
+ attribute Condition { text },
+ xsd:NCName
+ }
+ | element AppConfig { xsd:NCName }
+ | element AppendTargetFrameworkToOutputPath { xsd:boolean }
+ | element ApplicationIcon { text }
+ | element ApplicationManifest { xsd:NCName }
+ | element AspNetCoreHostingModel { xsd:NCName }
+ | element AssemblyName { text }
+ | element AssemblyOriginatorKeyFile { text }
+ | element AssemblyTitle { text }
+ | element AssemblyVersion { xsd:NMTOKEN }
+ | element Authors { text }
+ | element AutoGenerateBindingRedirects {
+ attribute Condition { text }?,
+ xsd:boolean
+ }
+ | element AzureFunctionsVersion { xsd:NCName }
+ | element BicepCompileAfterTargets { xsd:NCName }
+ | element BicepCompileBeforeTargets { xsd:NCName }
+ | element BootstrapperEnabled { xsd:boolean }
+ | element BuildOutputTargetFolder { xsd:NCName }
+ | element BuildServerSideRenderer { xsd:boolean }
+ | element BuiltInComInteropSupport { xsd:boolean }
+ | element CentralPackageTransitivePinningEnabled { xsd:boolean }
+ | element CodeAnalysisTreatWarningsAsErrors { xsd:boolean }
+ | element Company { text }
+ | element CopyLocalLockFileAssemblies { xsd:boolean }
+ | element Copyright { text }
+ | element DebugType {
+ attribute Condition { text }?,
+ xsd:NCName
+ }
+ | element DefaultItemExcludes { text }
+ | element DefineConstants { text }
+ | element DelaySign { xsd:boolean }
+ | element Description { text }
+ | element Deterministic { xsd:boolean }
+ | element DisableImplicitNuGetFallbackFolder { xsd:boolean }
+ | element DisableTransitiveProjectReferences { xsd:boolean }
+ | element DockerDefaultTargetOS { xsd:NCName }
+ | element DockerfileContext { text }
+ | element EmbedUntrackedSources { xsd:boolean }
+ | element EnableCompressionInSingleFile { xsd:boolean }
+ | element EnableDefaultCompileItems { xsd:boolean }
+ | element EnableDefaultEmbeddedResourceItems { xsd:boolean }
+ | element EnableMSTestRunner { xsd:boolean }
+ | element EnableNETAnalyzers { xsd:boolean }
+ | element EnableNuget { xsd:boolean }
+ | element EnableTrimAnalyzer { xsd:boolean }
+ | element EnforceCodeStyleInBuild { xsd:boolean }
+ | element ErrorReport { xsd:NCName }
+ | element FileVersion { xsd:NMTOKEN }
+ | element FindInvalidProjectReferences { xsd:boolean }
+ | element GenerateAssemblyInfo { xsd:boolean }
+ | element GenerateBindingRedirectsOutputType { xsd:boolean }
+ | element GenerateDocumentationFile { xsd:NCName }
+ | element GeneratePackageOnBuild { xsd:NCName }
+ | element GenerateResourceUsePreserializedResources { xsd:boolean }
+ | element ImplicitUsings { xsd:NCName }
+ | element IncludeNativeLibrariesForSelfExtract { xsd:boolean }
+ | element IncludeSymbols { xsd:boolean }
+ | element IsPackable { xsd:boolean }
+ | element LangVersion { xsd:NMTOKEN }
+ | element ManagePackageVersionsCentrally { xsd:boolean }
+ | element MapFileExtensions { xsd:boolean }
+ | element NoPackageAnalysis { xsd:boolean }
+ | element NoWarn { text }
+ | element Nullable { xsd:NCName }
+ | element Optimize { xsd:boolean }
+ | element OutputPath { text }
+ | element OutputType { xsd:NCName }
+ | element PackAsTool { xsd:boolean }
+ | element PackageIcon { text }
+ | element PackageIconUrl { empty }
+ | element PackageId { text }
+ | element PackageLicenseFile { xsd:NCName }
+ | element PackageProjectUrl { xsd:anyURI }
+ | element PackageReleaseNotes { text }
+ | element PackageTags { text }
+ | element PlatformTarget { xsd:NCName }
+ | element Platforms { text }
+ | element Prefer32Bit { xsd:boolean }
+ | element ProduceReferenceAssembly { xsd:NCName }
+ | element Product { text }
+ | element ProjectGuid { text }
+ | element PublishRepositoryUrl { xsd:boolean }
+ | element PublishSingleFile { xsd:boolean }
+ | element RepositoryType { empty }
+ | element RepositoryUrl { empty }
+ | element RestoreLockedMode {
+ attribute Condition { text },
+ xsd:boolean
+ }
+ | element RestorePackagesWithLockFile { xsd:boolean }
+ | element RestoreProjectStyle { xsd:NCName }
+ | element RootNamespace { text }
+ | element RunPostBuildEvent { xsd:NCName }
+ | element RunSettingsFilePath { text }
+ | element RuntimeIdentifier { xsd:NCName }
+ | element RuntimeIdentifiers {
+ attribute Condition { text }?,
+ text
+ }
+ | element SatelliteResourceLanguages { xsd:NCName }
+ | element SelfContained { xsd:boolean }
+ | element SignAssembly { xsd:NCName }
+ | element SoVersionOptions { xsd:NCName }
+ | element SpaRoot { text }
+ | element StartupObject { xsd:NCName }
+ | element Summary { text }
+ | element SupportedOSPlatformVersion { xsd:decimal }
+ | element SuppressTrimAnalysisWarnings { xsd:boolean }
+ | element SymbolPackageFormat { xsd:NCName }
+ | element TargetFramework { text }
+ | element Title { text }
+ | element ToolCommandName { xsd:NCName }
+ | element TreatWarningsAsErrors { xsd:boolean }
+ | element TrimMode { xsd:NCName }
+ | element TypeScriptCompileBlocked {
+ attribute Condition { text }?,
+ xsd:boolean
+ }
+ | element TypeScriptToolsVersion { xsd:NCName }
+ | element UseAppHost { xsd:boolean }
+ | element UseApplicationTrust { xsd:boolean }
+ | element UseWPF { xsd:boolean }
+ | element UseWindowsForms { xsd:boolean }
+ | element UserSecretsId { text }
+ | element Version {
+ attribute Condition { text }?,
+ text
+ }
+ | element WarningsAsErrors { text }
+ | element WarningsNotAsErrors { text }
+ | element WasmMainJSPath { text })*,
+ (element PackageRequireLicenseAcceptance { xsd:boolean }
+ | element _FunctionsSkipCleanOutput { xsd:boolean }
+ | (element OutDir { text },
+ element ExcludeXmlAssemblyFiles { xsd:boolean }))?,
+ element EnableUnsafeBinaryFormatterSerialization { xsd:boolean }?,
+ (element AssemblySearchPaths { text }
+ | element AvaloniaUseCompiledBindingsByDefault { xsd:boolean }
+ | element BaseOutputPath { text }
+ | element BicepOutputStyle { xsd:NCName }
+ | element ContinuousIntegrationBuild { xsd:boolean }
+ | element DebugSymbols { xsd:boolean }
+ | element DefaultDocumentationIncludeUndocumentedItems {
+ xsd:boolean
+ }
+ | element DscZipFile { text }
+ | element EnableNoticeInPublishOutput { xsd:boolean }
+ | element GenerateDocumentation { xsd:boolean }
+ | element IncludeAllContentForSelfExtract { xsd:boolean }
+ | element IsTestProject { xsd:boolean }
+ | element NetSdk { xsd:NCName }
+ | element ResolveAssemblyWarnOrErrorOnTargetArchitectureMismatch {
+ xsd:NCName
+ }
+ | element ShouldIncludeNativeSkiaSharp { xsd:NCName }
+ | element TargetsForTfmSpecificBuildOutput { text }
+ | (element SccProjectName { xsd:NCName },
+ element SccProvider { xsd:NCName },
+ element SccAuxPath { xsd:NCName },
+ element SccLocalPath { xsd:NCName })
+ | (element GenerateNoticePackageVersion { xsd:NMTOKEN },
+ element GenerateNoticeRetryCount { xsd:integer },
+ element GenerateNoticeBatchSize { xsd:integer },
+ element GenerateNoticeUseLocalFile {
+ attribute Condition { text },
+ xsd:boolean
+ },
+ element GenerateNoticeUpdateLocalFile {
+ attribute Condition { text },
+ xsd:boolean
+ })
+ | (element RunNswag { xsd:boolean },
+ element RunNodeBuild { xsd:boolean })
+ | (element PublishTrimmed { xsd:boolean },
+ element JsonSerializerIsReflectionEnabledByDefault {
+ xsd:boolean
+ })
+ | (element ApplicationId { xsd:NCName },
+ element ApplicationVersion { xsd:integer },
+ element ApplicationDisplayVersion { xsd:decimal },
+ element AndroidPackageFormat { xsd:NCName },
+ element AndroidEnableProfiledAot { xsd:NCName })
+ | (element DefaultDocumentationFolder { text },
+ element DefaultDocumentationLinksBaseUrl { text },
+ element DefaultDocumentationLinksOutputFile { text },
+ element DefaultDocumentationExternLinksFiles { text },
+ element DefaultDocumentationConfigurationFile { text }))?,
+ element ServiceName { xsd:NCName }?,
+ (element RazorLangVersion { xsd:decimal }
+ | (element WebRoot { text },
+ element WebProjectFile { text },
+ element WebOutputPath { text }))?,
+ element ClientName { text }?,
+ element DisableDataAnnotationsParam { text }?,
+ (element AvaloniaVersion { xsd:NMTOKEN }
+ | element ContinuePackingAfterGeneratingNuspec { xsd:boolean }
+ | ((element NSwagGenerateExceptionClasses { xsd:boolean }
+ | element WrapResponseMethods { text })+,
+ element NSwagOptions { text })
+ | (element DeployDefaultTargetFrameworkVersion { xsd:decimal },
+ element VisualStudioVersion {
+ attribute Condition { text },
+ xsd:decimal
+ }))?
+ }
+ItemGroup =
+ element ItemGroup {
+ attribute Condition { text }?,
+ (element ApiClientGen {
+ attribute Include { xsd:NCName }
+ }
+ | element AvaloniaXaml {
+ attribute Remove { text }
+ }
+ | element BuildOutputInPackage {
+ attribute Include { text },
+ attribute TargetPath { text }
+ }
+ | element InternalsVisibleTo {
+ attribute Condition { text },
+ attribute Include { text }
+ }
+ | element ProjectsToPublish {
+ attribute Include { text }
+ }
+ | element Service {
+ attribute Include { text }
+ }
+ | element _ReferenceCopyLocalPaths {
+ attribute Include { text }
+ }
+ | element ClaimsRequirement {
+ attribute Include { xsd:NCName }
+ }*),
+ element WCFMetadata {
+ attribute Include { text }
+ }?,
+ (element AdditionalFiles {
+ attribute Remove { text }
+ }
+ | element SourceRoot {
+ attribute Include { text }
+ }
+ | element ApiClient {
+ attribute Include { xsd:NCName }
+ }*),
+ element FrameworkReference {
+ attribute Include { xsd:NCName }
+ }?,
+ (element COMReference {
+ attribute Include { xsd:NCName },
+ element Guid { text },
+ element VersionMajor { xsd:integer },
+ element VersionMinor { xsd:integer },
+ element Lcid { xsd:integer },
+ element WrapperTool { xsd:NCName },
+ element Isolated { xsd:NCName },
+ EmbedInteropTypes
+ }
+ | element TrimmerRootDescriptor {
+ attribute Include { xsd:NCName }
+ }
+ | element Watch {
+ attribute Exclude { text }?,
+ attribute Include { text }?,
+ attribute Remove { text }?
+ }*
+ | element AvaloniaResource {
+ attribute Include { text }?,
+ attribute Remove { text }?
+ }*
+ | element OpenApiReference {
+ attribute ClassName { text }?,
+ attribute Include { text },
+ attribute Namespace { text }?,
+ attribute Options { text }?,
+ element CodeGenerator { xsd:NCName }?
+ }*),
+ element Bicep {
+ attribute Exclude { text }?,
+ attribute Include { text }?,
+ attribute NoBuild { xsd:boolean }?,
+ attribute OutputFile { text }?,
+ attribute Update { text }?,
+ element OutputFile { text }?
+ }*,
+ (element Folder {
+ attribute Include { text }
+ }*
+ | element BicepParam {
+ attribute Include { text }
+ }*),
+ (element Compile {
+ attribute Include { text }?,
+ attribute Link { xsd:NCName }?,
+ attribute Remove { text }?,
+ attribute Update { text }?,
+ Link?,
+ (DependentUpon
+ | element AutoGen { xsd:NCName }
+ | element DesignTime { xsd:NCName })*,
+ (SubType
+ | element DesignTimeSharedInput { xsd:NCName })?
+ }
+ | element Content {
+ attribute CopyToOutputDirectory { xsd:NCName }?,
+ attribute CopyToPublishDirectory { xsd:NCName }?,
+ attribute Exclude { text }?,
+ attribute Include { text }?,
+ attribute Link { text }?,
+ attribute PackagePath { text }?,
+ attribute Remove { text }?,
+ attribute Update { text }?,
+ Link?,
+ (CopyToOutputDirectory
+ | CopyToPublishDirectory
+ | DependentUpon
+ | ExcludeFromSingleFile
+ | SubType)*
+ }
+ | element EmbeddedResource {
+ attribute Condition { text }?,
+ attribute Include { text }?,
+ attribute Link { text }?,
+ attribute LogicalName { text }?,
+ attribute Remove { text }?,
+ attribute Update { text }?,
+ attribute WithCulture { xsd:boolean }?,
+ CopyToOutputDirectory?,
+ element CustomToolNamespace { xsd:NCName }?,
+ element LogicalName { text }?,
+ (Generator | LastGenOutput)*,
+ SubType?,
+ Link?,
+ (DependentUpon
+ | element WithCulture { xsd:boolean })?
+ }
+ | element None {
+ attribute CopyToOutputDirectory { xsd:NCName }?,
+ attribute CopyToPublishDirectory { xsd:NCName }?,
+ attribute Exclude { text }?,
+ attribute Include { text }?,
+ attribute Link { xsd:NCName }?,
+ attribute Pack { xsd:boolean }?,
+ attribute PackagePath { text }?,
+ attribute Remove { text }?,
+ attribute Update { text }?,
+ Generator?,
+ (LastGenOutput
+ | SubType
+ | (element Pack { xsd:NCName }
+ | element PackagePath { empty })*),
+ CopyToOutputDirectory?,
+ (CopyToPublishDirectory | DependentUpon)?
+ }
+ | element Resource {
+ attribute Include { text }
+ }
+ | element WCFMetadataStorage {
+ attribute Include { text }
+ })*,
+ (element AndroidResource {
+ attribute Include { xsd:NCName },
+ Link
+ }
+ | element DesignData {
+ attribute Include { text }
+ }
+ | element WasmExtraFilesToDeploy {
+ attribute Include { text }
+ }
+ | element Using {
+ attribute Alias { xsd:NCName }?,
+ attribute Include { xsd:NCName }
+ }*
+ | element DocumentName {
+ attribute Include { xsd:NCName }
+ }*
+ | (element PackageDownload {
+ attribute Include { xsd:NCName },
+ attribute Version { text }
+ }
+ | element PackageReference {
+ attribute Condition { text }?,
+ attribute ExcludeAssets { xsd:NCName }?,
+ attribute Include { text },
+ attribute PrivateAssets { xsd:NCName }?,
+ attribute Version { text }?,
+ (element IncludeAssets { text }
+ | element PrivateAssets { xsd:NCName })*
+ }
+ | element ProjectReference {
+ attribute Include { text }?,
+ attribute PrivateAssets { xsd:NCName }?,
+ attribute Remove { xsd:NCName }?,
+ (element Properties { text }
+ | (Project,
+ element Name { xsd:NCName }))?
+ }
+ | element Reference {
+ attribute Include { text },
+ (EmbedInteropTypes
+ | element HintPath {
+ attribute Condition { text }?,
+ text
+ }
+ | element Private { xsd:NCName }
+ | element SpecificVersion { xsd:NCName })*
+ })*
+ | (element DistFiles {
+ attribute Condition { text }?,
+ attribute Include { text }
+ }+,
+ element ResolvedFileToPublish {
+ attribute Exclude { text },
+ attribute Include { text },
+ element RelativePath { text },
+ CopyToPublishDirectory,
+ ExcludeFromSingleFile?
+ })
+ | element TypeScriptCompile {
+ attribute Include { text }?,
+ attribute Remove { text }?,
+ DependentUpon?
+ }*
+ | element Page {
+ attribute Generator { xsd:NMTOKEN }?,
+ attribute Include { text }?,
+ attribute Remove { text }?,
+ attribute SubType { xsd:NCName }?
+ }*)
+ }
+ns1.PropertyGroup =
+ element ns1:PropertyGroup {
+ attribute Condition { text }?,
+ (element ns1:NugetFolder { text },
+ element ns1:BuildFolder { text })?,
+ element ns1:SoReleaseVersion { text }?,
+ (element ns1:ApplicationManifest { xsd:NCName }
+ | element ns1:ErrorText { text }
+ | element ns1:__paket__NETStandard_Library_targets { text })?,
+ element ns1:PreBuildEvent {
+ attribute Condition { text }?,
+ text
+ }?,
+ element ns1:__paket__MSTest_TestFramework_targets { text }?,
+ element ns1:SoLegacyVersion { xsd:NCName }?,
+ element ns1:SoBetaTag { empty }?,
+ element ns1:ComputerName { text }?,
+ element ns1:__paket__MSTest_TestAdapter_props { text }?,
+ element ns1:__paket__MSTest_TestAdapter_targets { text }?,
+ element ns1:MinimumVisualStudioVersion { xsd:decimal }?,
+ (element ns1:AppDesignerFolder { xsd:NCName }
+ | element ns1:ApplicationRevision { xsd:integer }
+ | element ns1:ApplicationVersion { text }
+ | element ns1:AssemblyName { xsd:NCName }
+ | element ns1:AssemblyOriginatorKeyFile { text }
+ | element ns1:AutoGenerateBindingRedirects { xsd:boolean }
+ | element ns1:AutoIncrementApplicationRevision { xsd:boolean }
+ | element ns1:BootstrapperEnabled { xsd:boolean }
+ | element ns1:CodeAnalysisRuleSet { text }
+ | element ns1:Configuration {
+ attribute Condition { text },
+ xsd:NCName
+ }
+ | element ns1:DebugSymbols { xsd:boolean }
+ | element ns1:DebugType { xsd:NCName }
+ | element ns1:DefineConstants { text }
+ | element ns1:DependsOnNETStandard { xsd:NCName }
+ | element ns1:Deterministic { xsd:boolean }
+ | element ns1:DocumentationFile { text }
+ | element ns1:EnableUnmanagedDebugging { xsd:boolean }
+ | element ns1:ErrorReport { xsd:NCName }
+ | element ns1:FileAlignment { xsd:integer }
+ | element ns1:FileUpgradeFlags { empty }
+ | element ns1:FindInvalidProjectReferences { xsd:boolean }
+ | element ns1:FriendlyName { xsd:NCName }
+ | element ns1:GenerateBindingRedirectsOutputType { xsd:boolean }
+ | element ns1:IISExpressAnonymousAuthentication { empty }
+ | element ns1:IISExpressSSLPort { text }
+ | element ns1:IISExpressUseClassicPipelineMode { empty }
+ | element ns1:IISExpressWindowsAuthentication { empty }
+ | element ns1:Install { xsd:boolean }
+ | element ns1:InstallFrom { xsd:NCName }
+ | element ns1:InstallUrl { empty }
+ | element ns1:IsCodedUITest { xsd:NCName }
+ | element ns1:IsWebBootstrapper { xsd:NCName }
+ | element ns1:LoadBehavior { xsd:integer }
+ | element ns1:ManifestCertificateThumbprint { text }
+ | element ns1:ManifestKeyFile { text }
+ | element ns1:MapFileExtensions { xsd:boolean }
+ | element ns1:NoStandardLibraries { xsd:boolean }
+ | element ns1:NoWarn { text }
+ | element ns1:NuGetPackageImportStamp { empty }
+ | element ns1:NugetExe { text }
+ | element ns1:OfficeApplicationDescription { empty }
+ | element ns1:OldToolsVersion { xsd:decimal }
+ | element ns1:Optimize { xsd:boolean }
+ | element ns1:OutputPath { text }
+ | element ns1:OutputType { xsd:NCName }
+ | element ns1:PackageDestinationDirectory { text }
+ | element ns1:Platform {
+ attribute Condition { text },
+ xsd:NCName
+ }
+ | element ns1:PlatformTarget { xsd:NCName }
+ | element ns1:Prefer32Bit { xsd:boolean }
+ | element ns1:ProductName { xsd:NCName }
+ | element ns1:ProductVersion { text }
+ | element ns1:ProjectGuid { text }
+ | element ns1:ProjectTypeGuids { text }
+ | element ns1:PublishUrl { text }
+ | element ns1:PublisherName { empty }
+ | element ns1:ReferencePath { text }
+ | element ns1:RestorePackages { xsd:boolean }
+ | element ns1:RootNamespace { xsd:NCName }
+ | element ns1:RunPostBuildEvent { xsd:NCName }
+ | element ns1:SccAuxPath { xsd:anyURI }
+ | element ns1:SccLocalPath { xsd:NMTOKEN }
+ | element ns1:SccProjectName { text }
+ | element ns1:SccProvider { text }
+ | element ns1:SchemaVersion { xsd:decimal }
+ | element ns1:SignAssembly { xsd:boolean }
+ | element ns1:SignManifests { xsd:boolean }
+ | element ns1:SolutionDir {
+ attribute Condition { text },
+ text
+ }
+ | element ns1:StartupObject { empty }
+ | element ns1:SupportUrl { empty }
+ | element ns1:TargetCulture { xsd:NCName }
+ | element ns1:TargetFrameworkProfile { text }
+ | element ns1:TargetFrameworkVersion { xsd:NCName }
+ | element ns1:TargetVsixContainerName { xsd:NCName }
+ | element ns1:TestProjectType { xsd:NCName }
+ | element ns1:TypeScriptCompileBlocked { xsd:boolean }
+ | element ns1:TypeScriptToolsVersion { xsd:decimal }
+ | element ns1:UpdateEnabled { xsd:boolean }
+ | element ns1:UpdateInterval { xsd:integer }
+ | element ns1:UpdateIntervalUnits { xsd:NCName }
+ | element ns1:UpdateMode { xsd:NCName }
+ | element ns1:UpdatePeriodically { xsd:boolean }
+ | element ns1:UpdateRequired { xsd:boolean }
+ | element ns1:UpgradeBackupLocation { empty }
+ | element ns1:Use64BitIISExpress { empty }
+ | element ns1:UseApplicationTrust { xsd:boolean }
+ | element ns1:UseGlobalApplicationHostFile { empty }
+ | element ns1:UseIISExpress { xsd:boolean }
+ | element ns1:UseVSHostingProcess { xsd:boolean }
+ | element ns1:VSTO_TrustAssembliesLocation { xsd:boolean }
+ | element ns1:VSToolsPath {
+ attribute Condition { text },
+ text
+ }
+ | element ns1:VisualStudioVersion {
+ attribute Condition { text },
+ xsd:decimal
+ }
+ | element ns1:WarningLevel { xsd:integer }
+ | element ns1:WcfConfigValidationEnabled { xsd:NCName })*,
+ element ns1:UseCodebase { xsd:boolean }?,
+ element ns1:GeneratePkgDefFile { xsd:boolean }?,
+ (element ns1:CopyBuildOutputToOutputDirectory { xsd:boolean }
+ | element ns1:CopyOutputSymbolsToOutputDirectory { xsd:boolean }
+ | element ns1:CopyVsixManifestToOutput { xsd:boolean }
+ | element ns1:CreateVsixContainer { xsd:boolean }
+ | element ns1:DeployExtension { xsd:boolean }
+ | element ns1:DeployVSTemplates { xsd:boolean }
+ | element ns1:IncludeAssemblyInVSIXContainer { xsd:boolean }
+ | element ns1:IncludeDebugSymbolsInLocalVSIXDeployment {
+ xsd:boolean
+ }
+ | element ns1:IncludeDebugSymbolsInVSIXContainer { xsd:boolean }
+ | element ns1:RuntimeIdentifier { xsd:NCName })*,
+ (element ns1:ApplicationIcon { xsd:NCName }
+ | element ns1:OfficeApplication { xsd:NCName }
+ | element ns1:PostBuildEvent {
+ attribute Condition { text }?,
+ text
+ }*
+ | (element ns1:StartAction { xsd:NCName },
+ element ns1:StartProgram {
+ attribute Condition { text },
+ text
+ },
+ element ns1:StartArguments { text },
+ element ns1:EnableNoticeInVisualStudioVsix { xsd:boolean }))
+ }
+ns1.ItemGroup =
+ element ns1:ItemGroup {
+ (element ns1:AssemblyAttributes {
+ attribute Include { xsd:NCName },
+ element ns1:_Parameter1 { text }
+ }
+ | element ns1:COMReference {
+ attribute Include { xsd:NCName },
+ element ns1:Guid { text },
+ element ns1:VersionMajor { xsd:integer },
+ element ns1:VersionMinor { xsd:integer },
+ element ns1:Lcid { xsd:integer },
+ element ns1:WrapperTool { xsd:NCName },
+ element ns1:Isolated { xsd:NCName },
+ ns1.EmbedInteropTypes
+ }
+ | element ns1:WCFMetadata {
+ attribute Include { text }
+ }
+ | element ns1:ProjectReference {
+ attribute Include { text },
+ ns1.Project,
+ element ns1:Name { xsd:NCName },
+ (ns1.VSIXSubPath,
+ element ns1:ReferenceOutputAssembly { xsd:boolean })?,
+ element ns1:IncludeOutputGroupsInVSIX { text }?,
+ element ns1:IncludeOutputGroupsInVSIXLocalOnly { text }?
+ }*
+ | element ns1:Folder {
+ attribute Include { text }
+ }*),
+ element ns1:VSTemplate {
+ attribute Include { xsd:NCName },
+ element ns1:OutputSubPath { xsd:NCName }?,
+ ns1.SubType
+ }*,
+ (element ns1:CodeAnalysisDependentAssemblyPaths {
+ attribute Condition { text },
+ attribute Include { text },
+ element ns1:Visible { xsd:NCName }
+ }
+ | element ns1:PackageSourceDirectory {
+ attribute Include { text }
+ }
+ | element ns1:WebReferences {
+ attribute Include { text }
+ }
+ | element ns1:Page {
+ attribute Include { text },
+ ns1.Generator,
+ ns1.SubType
+ }*
+ | element ns1:Reference {
+ attribute Include { text },
+ element ns1:RequiredTargetFramework { xsd:decimal }?,
+ element ns1:SpecificVersion { xsd:NCName }?,
+ ns1.EmbedInteropTypes?,
+ element ns1:HintPath { text }?,
+ element ns1:Private { xsd:NCName }?,
+ ns1.Paket?
+ }*
+ | element ns1:VSIXSourceItem {
+ attribute Exclude { text }?,
+ attribute Include { text },
+ attribute VSIXSubPath { xsd:NCName }?,
+ ns1.VSIXSubPath?
+ }*
+ | element ns1:PackageReference {
+ attribute Include { xsd:NCName },
+ attribute Version { text }?,
+ element ns1:Version { xsd:NMTOKEN }?,
+ element ns1:IncludeAssets { text }?,
+ element ns1:PrivateAssets { xsd:NCName }?
+ }*
+ | element ns1:Analyzer {
+ attribute Include { text },
+ ns1.Paket
+ }*),
+ element ns1:ApplicationDefinition {
+ attribute Include { xsd:NCName },
+ ns1.Generator,
+ ns1.SubType
+ }?,
+ (element ns1:Compile {
+ attribute Include { text },
+ element ns1:AutoGen { xsd:NCName }?,
+ ns1.Link?,
+ (ns1.DependentUpon
+ | element ns1:DesignTime { xsd:NCName }
+ | element ns1:DesignTimeSharedInput { xsd:NCName })*,
+ ns1.SubType?
+ }
+ | element ns1:Content {
+ attribute Include { text },
+ element ns1:IncludeInVSIX { xsd:boolean }?,
+ (ns1.CopyToOutputDirectory | ns1.DependentUpon | ns1.SubType)?
+ }
+ | element ns1:EmbeddedResource {
+ attribute Include { text },
+ (ns1.Generator, ns1.LastGenOutput)?,
+ (ns1.DependentUpon | ns1.SubType)?
+ }
+ | element ns1:EntityDeploy {
+ attribute Include { xsd:NCName },
+ ns1.Generator,
+ ns1.LastGenOutput
+ }
+ | element ns1:None {
+ attribute Include { text },
+ (ns1.Generator, ns1.LastGenOutput)?,
+ (ns1.DependentUpon | ns1.Link)?,
+ ns1.CopyToOutputDirectory?,
+ ns1.SubType?
+ }
+ | element ns1:Resource {
+ attribute Include { text }
+ })*,
+ (element ns1:AppDesigner {
+ attribute Include { text }
+ }
+ | element ns1:Service {
+ attribute Include { text }
+ }*)
+ }
+ns1.Output =
+ element ns1:Output {
+ attribute ItemName { xsd:NCName }?,
+ attribute PropertyName { xsd:NCName }?,
+ attribute TaskParameter { xsd:NCName }
+ }
+EmbedInteropTypes = element EmbedInteropTypes { xsd:NCName }
+Generator = element Generator { text }
+SubType = element SubType { text }
+LastGenOutput = element LastGenOutput { xsd:NCName }
+CopyToOutputDirectory = element CopyToOutputDirectory { xsd:NCName }
+DependentUpon = element DependentUpon { text }
+CopyToPublishDirectory = element CopyToPublishDirectory { xsd:NCName }
+Link = element Link { text }
+ExcludeFromSingleFile = element ExcludeFromSingleFile { xsd:boolean }
+ns1.VSIXSubPath = element ns1:VSIXSubPath { xsd:NCName }
+ns1.EmbedInteropTypes = element ns1:EmbedInteropTypes { xsd:NCName }
+ns1.SubType = element ns1:SubType { xsd:NCName }
+ns1.Generator = element ns1:Generator { xsd:NMTOKEN }
+ns1.Paket = element ns1:Paket { xsd:NCName }
+ns1.LastGenOutput = element ns1:LastGenOutput { xsd:NCName }
+ns1.DependentUpon = element ns1:DependentUpon { xsd:NCName }
+ns1.Link = element ns1:Link { text }
+ns1.CopyToOutputDirectory =
+ element ns1:CopyToOutputDirectory { xsd:NCName }
diff --git a/etc/schema/nuget.rnc b/etc/schema/nuget.rnc
new file mode 100644
index 00000000000..ab7052e91d1
--- /dev/null
+++ b/etc/schema/nuget.rnc
@@ -0,0 +1,25 @@
+default namespace = ""
+
+start =
+ element configuration {
+ element packageRestore { add+ }?,
+ (element config { add }
+ | element packageSourceMapping {
+ element packageSource {
+ attribute key { xsd:NCName },
+ element package {
+ attribute pattern { text }
+ }
+ }+
+ }
+ | element packageSources {
+ element clear { empty },
+ add+
+ })+
+ }
+add =
+ element add {
+ attribute key { xsd:NCName },
+ attribute protocolVersion { xsd:integer }?,
+ attribute value { xsd:anyURI }
+ }
diff --git a/etc/schema/nuspec.rnc b/etc/schema/nuspec.rnc
new file mode 100644
index 00000000000..a4332f84fc0
--- /dev/null
+++ b/etc/schema/nuspec.rnc
@@ -0,0 +1,100 @@
+namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
+default namespace mstns = "http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd"
+namespace rng = "http://relaxng.org/ns/structure/1.0"
+
+dependency =
+ attribute id { xsd:string },
+ attribute version { xsd:string }?,
+ attribute include { xsd:string }?,
+ attribute exclude { xsd:string }?
+dependencyGroup =
+ element dependency { dependency }*,
+ attribute targetFramework { xsd:string }?
+reference = attribute file { xsd:string }
+contentFileEntries =
+ attribute include { xsd:string },
+ attribute exclude { xsd:string }?,
+ attribute buildAction { xsd:string }?,
+ attribute copyToOutput { xsd:boolean }?,
+ attribute flatten { xsd:boolean }?
+referenceGroup =
+ element reference { reference }+,
+ attribute targetFramework { xsd:string }?
+frameworkReference = attribute name { xsd:string }
+frameworkReferenceGroup =
+ element frameworkReference { frameworkReference }*,
+ attribute targetFramework { xsd:string }
+start |= starting_package
+starting_package =
+ element package {
+ element metadata {
+ (element id { xsd:string }
+ & element version { xsd:string }
+ & element title { xsd:string }?
+ & element authors { xsd:string }
+ & element owners { xsd:string }?
+ & element licenseUrl { xsd:anyURI }?
+ & element projectUrl { xsd:anyURI }?
+ & element iconUrl { xsd:anyURI }?
+ & element requireLicenseAcceptance { xsd:boolean }?
+ & element developmentDependency { xsd:boolean }?
+ & element description { xsd:string }
+ & element summary { xsd:string }?
+ & element releaseNotes { xsd:string }?
+ & (element copyright { xsd:string }?)
+ >> a:documentation [
+ "\x{a}" ~
+ " default value is : en-US"
+ ]
+ & element language { xsd:string }?
+ & element tags { xsd:string }?
+ & element serviceable { xsd:boolean }?
+ & element icon { xsd:string }?
+ & element readme { xsd:string }?
+ & element repository {
+ attribute type { xsd:string }?,
+ attribute url { xsd:anyURI }?,
+ attribute branch { xsd:string }?,
+ attribute commit { xsd:string }?
+ }?
+ & element license {
+ xsd:string,
+ attribute type { xsd:string },
+ attribute version { xsd:string }?
+ }?
+ & element packageTypes {
+ element packageType {
+ attribute name { xsd:string },
+ attribute version { xsd:string }?
+ }*
+ }?
+ & element dependencies {
+ (element dependency { dependency }
+ | element group { dependencyGroup })*
+ }?
+ & element frameworkAssemblies {
+ element frameworkAssembly {
+ attribute assemblyName { xsd:string },
+ attribute targetFramework { xsd:string }?
+ }*
+ }?
+ & element frameworkReferences {
+ element group { frameworkReferenceGroup }*
+ }?
+ & element references {
+ (element reference { reference }
+ | element group { referenceGroup })*
+ }?
+ & element contentFiles {
+ (element files { contentFileEntries })*
+ }?),
+ attribute minClientVersion { xsd:string }?
+ },
+ element files {
+ element file {
+ attribute src { xsd:string },
+ attribute target { xsd:string }?,
+ attribute exclude { xsd:string }?
+ }*
+ }?
+ }
diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml
index f04bba849b4..be0dacd6ecf 100644
--- a/etc/schema/schemas.xml
+++ b/etc/schema/schemas.xml
@@ -66,4 +66,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+