From cdf6b4bdbe7821b06adbe483282e95c50dec64c4 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Mar 2026 03:01:58 +0000
Subject: [PATCH 1/5] Initial plan
From cf3230882c02e107005ec4f61cea781f7edc676e Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Mar 2026 03:13:21 +0000
Subject: [PATCH 2/5] Add OutputSchema property to McpServerToolCreateOptions
and McpServerToolAttribute
Adds support for specifying the output schema type independently of the return
type for tools returning CallToolResult. This allows developers to advertise
a meaningful OutputSchema in tools/list while still having full control over
the CallToolResult response (Meta, IsError, StructuredContent).
- Add `JsonElement? OutputSchema` property to McpServerToolCreateOptions
- Add `Type? OutputSchema` property to McpServerToolAttribute
- DeriveOptions converts the attribute's Type to a JSON schema
- CreateOutputSchema uses explicit OutputSchema over AIFunction's return schema
- Add 13 comprehensive tests covering all variations
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
---
full.xml | 5447 +++++++++++++++++
.../Server/AIFunctionMcpServerTool.cs | 19 +-
.../Server/McpServerToolAttribute.cs | 21 +
.../Server/McpServerToolCreateOptions.cs | 21 +
.../Server/McpServerToolTests.cs | 278 +
5 files changed, 5785 insertions(+), 1 deletion(-)
create mode 100644 full.xml
diff --git a/full.xml b/full.xml
new file mode 100644
index 000000000..eb72d97f2
--- /dev/null
+++ b/full.xml
@@ -0,0 +1,5447 @@
+
+
+
+
+
+ <_AfterSdkPublishDependsOn Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true'">AfterPublish
+ <_AfterSdkPublishDependsOn Condition="'$(UsingMicrosoftNETSdkWeb)' != 'true'">Publish
+
+
+
+
+ true
+
+ true
+ $(CustomAfterDirectoryBuildProps);$(MSBuildThisFileDirectory)UseArtifactsOutputPath.props
+
+
+ $(ProjectExtensionsPathForSpecifiedProject)
+
+
+
+
+
+ true
+ true
+ true
+ true
+ true
+
+
+
+ <_DirectoryBuildPropsFile Condition="'$(_DirectoryBuildPropsFile)' == ''">Directory.Build.props
+ <_DirectoryBuildPropsBasePath Condition="'$(_DirectoryBuildPropsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), '$(_DirectoryBuildPropsFile)'))
+ $([System.IO.Path]::Combine('$(_DirectoryBuildPropsBasePath)', '$(_DirectoryBuildPropsFile)'))
+
+
+
+
+
+ preview
+ true
+ enable
+ enable
+ false
+ false
+
+ false
+
+
+
+
+ Debug
+ $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))
+ $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'artifacts'))
+ $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'obj'))
+ $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin'))
+ $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'TestResults', '$(Configuration)'))
+ $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'packages', '$(Configuration)'))
+ $(MSBuildProjectName)
+ $([System.IO.Path]::GetFullPath('$(ArtifactsObjDir)$(OutDirName)\'))
+ $(BaseIntermediateOutputPath)$(Configuration)\
+ $([System.IO.Path]::GetFullPath('$(ArtifactsBinDir)$(OutDirName)\'))
+ $(BaseOutputPath)$(Configuration)\
+ $(ArtifactsPackagesDir)
+
+
+ trx%3bLogFileName=$(MSBuildProjectName).$(TargetFramework).$(OS).trx
+ $(ArtifactsTestResultsDir)
+
+
+ true
+
+
+
+ true
+
+
+
+ net10.0;net9.0;net8.0
+ $(DefaultTestTargetFrameworks);net472
+
+
+
+ https://csharp.sdk.modelcontextprotocol.io
+ https://github.com/modelcontextprotocol/csharp-sdk
+ git
+ 1.1.0
+ ModelContextProtocol
+ © Model Context Protocol a Series of LF Projects, LLC.
+ ModelContextProtocol;mcp;ai;llm
+ Apache-2.0
+ logo.png
+ true
+ snupkg
+ true
+ $(RepoRoot)\Open.snk
+ true
+ true
+ 1.0.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(MSBuildProjectName)
+
+
+ $(ArtifactsPath)\obj\$(ArtifactsProjectName)\
+ $(ArtifactsPath)\obj\
+
+
+
+ <_ArtifactsPathSetEarly>true
+
+
+
+
+
+ obj\
+ $(BaseIntermediateOutputPath)\
+ <_InitialBaseIntermediateOutputPath>$(BaseIntermediateOutputPath)
+ $(BaseIntermediateOutputPath)
+
+ $([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(MSBuildProjectExtensionsPath)'))
+ $(MSBuildProjectExtensionsPath)\
+
+ false
+ true
+ <_InitialMSBuildProjectExtensionsPath Condition=" '$(ImportProjectExtensionProps)' == 'true' ">$(MSBuildProjectExtensionsPath)
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ /home/runner/.nuget/packages/
+ /home/runner/.nuget/packages/
+ PackageReference
+ 7.0.0
+
+
+
+
+
+
+
+
+
+
+ <_MicrosoftSourceLinkCommonAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\net472\Microsoft.SourceLink.Common.dll
+ <_MicrosoftSourceLinkCommonAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\core\Microsoft.SourceLink.Common.dll
+
+
+
+ true
+
+ true
+
+
+
+
+
+
+
+
+ $(MSBuildThisFileDirectory)..\tools\net472\Microsoft.Build.Tasks.Git.dll
+ $(MSBuildThisFileDirectory)..\tools\core\Microsoft.Build.Tasks.Git.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /home/runner/.nuget/packages/microsoft.sourcelink.common/8.0.0
+ /home/runner/.nuget/packages/microsoft.build.tasks.git/8.0.0
+ /home/runner/.nuget/packages/microsoft.sourcelink.github/8.0.0
+ /home/runner/.nuget/packages/microsoft.net.illink.tasks/10.0.2
+
+
+ /home/runner/.nuget/packages/microsoft.sourcelink.common/8.0.0
+ /home/runner/.nuget/packages/microsoft.build.tasks.git/8.0.0
+ /home/runner/.nuget/packages/microsoft.sourcelink.github/8.0.0
+ /home/runner/.nuget/packages/microsoft.net.illink.tasks/8.0.23
+
+
+ /home/runner/.nuget/packages/microsoft.sourcelink.common/8.0.0
+ /home/runner/.nuget/packages/microsoft.build.tasks.git/8.0.0
+ /home/runner/.nuget/packages/microsoft.sourcelink.github/8.0.0
+ /home/runner/.nuget/packages/microsoft.net.illink.tasks/9.0.12
+
+
+ /home/runner/.nuget/packages/microsoft.sourcelink.common/8.0.0
+ /home/runner/.nuget/packages/microsoft.build.tasks.git/8.0.0
+ /home/runner/.nuget/packages/microsoft.sourcelink.github/8.0.0
+
+
+
+
+
+
+ $(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.$(MSBuildThisFile)
+ $(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.After.$(MSBuildThisFile)
+
+
+
+
+ true
+
+
+ $(DefaultProjectConfiguration)
+ $(DefaultProjectPlatform)
+
+
+ WJProject
+ JavaScript
+
+
+
+
+
+
+
+ $([MSBuild]::IsRunningFromVisualStudio())
+ $([MSBuild]::GetToolsDirectory32())\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.props
+ $(MSBuildToolsPath)\NuGet.props
+
+
+
+
+
+ true
+
+
+
+ <_DirectoryPackagesPropsFile Condition="'$(_DirectoryPackagesPropsFile)' == ''">Directory.Packages.props
+ <_DirectoryPackagesPropsBasePath Condition="'$(_DirectoryPackagesPropsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove('$(MSBuildProjectDirectory)', '$(_DirectoryPackagesPropsFile)'))
+ $([MSBuild]::NormalizePath('$(_DirectoryPackagesPropsBasePath)', '$(_DirectoryPackagesPropsFile)'))
+
+
+
+ true
+ 8.0.22
+ 9.0.11
+ 10.0.3
+ 10.3.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+
+
+
+
+ true
+
+
+
+ Debug;Release
+ AnyCPU
+ Debug
+ AnyCPU
+
+
+
+
+ true
+
+
+
+ Library
+ 512
+ prompt
+ $(MSBuildProjectName)
+ $(MSBuildProjectName.Replace(" ", "_"))
+ true
+
+
+
+ true
+ false
+
+
+ true
+
+
+
+
+ <_PlatformWithoutConfigurationInference>$(Platform)
+
+
+ x64
+
+
+ x86
+
+
+ ARM
+
+
+ arm64
+
+
+
+
+ {CandidateAssemblyFiles}
+ $(AssemblySearchPaths);{HintPathFromItem}
+ $(AssemblySearchPaths);{TargetFrameworkDirectory}
+ $(AssemblySearchPaths);{RawFileName}
+
+
+ None
+ portable
+
+ false
+
+ true
+ true
+
+ PackageReference
+ $(AssemblySearchPaths)
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ true
+ 1.0.3
+ false
+ true
+ true
+
+
+
+ <_ImplicitFileBasedProgramUserSecretsId Condition="'$(FileBasedProgram)' == 'true'">$(MSBuildProjectName)-$([MSBuild]::StableStringHash($(MSBuildProjectFullPath.ToLowerInvariant()), 'Sha256'))
+ $(_ImplicitFileBasedProgramUserSecretsId)
+
+
+
+ $(MSBuildThisFileDirectory)GenerateDeps\GenerateDeps.proj
+
+
+
+
+
+ $(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledVersions.props
+
+
+
+
+ $([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)../../'))
+ $([MSBuild]::EnsureTrailingSlash('$(NetCoreRoot)'))packs
+ $([MSBuild]::EnsureTrailingSlash('$(MSBuildThisFileDirectory)'))PrunePackageData
+ <_NetFrameworkHostedCompilersVersion>5.0.0-2.25612.105
+ 10.0
+ 10.0
+ 10.0.2
+ 2.1
+ 2.1.0
+ 10.0.2-servicing.25612.105
+ $(MSBuildThisFileDirectory)RuntimeIdentifierGraph.json
+ 10.0.102
+ 10.0.100
+ linux-x64
+ linux-x64
+ <_NETCoreSdkIsPreview>false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_KnownRuntimeIdentiferPlatforms Include="any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix" />
+ <_ExcludedKnownRuntimeIdentiferPlatforms Include="rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0" />
+
+
+
+ $(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledMSBuildInformation.props
+
+
+
+
+ 17.14.0
+ 18.0.7
+ <_MSBuildVersionMajorMinor>$([System.Version]::Parse('$(MSBuildVersion)').ToString(2))
+ <_IsDisjointMSBuildVersion>$([MSBuild]::VersionLessThan('$(_MSBuildVersionMajorMinor)', '18.0'))
+
+
+
+
+ false
+
+
+ <__WindowsAppSdkDefaultImageIncludes>**/*.png;**/*.bmp;**/*.jpg;**/*.dds;**/*.tif;**/*.tga;**/*.gif
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <__DisableWorkloadResolverSentinelPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildBinPath)\DisableWorkloadResolver.sentinel
+ <__DisableWorkloadResolverSentinelPath Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildToolsPath32)\SdkResolvers\Microsoft.DotNet.MSBuildSdkResolver\DisableWorkloadResolver.sentinel
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $([MSBuild]::Add($(NETCoreAppMaximumVersion), 1)).0
+ 17.16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_NormalizedWindowsSdkSupportedTargetPlatformVersion Include="@(WindowsSdkSupportedTargetPlatformVersion)">
+ $([System.Text.RegularExpressions.Regex]::Replace(%(Identity), '^((\d+\.){3})1$', '${1}0'))
+
+
+
+
+
+
+
+
+ true
+ <_SourceLinkPropsImported>true
+
+
+
+
+
+ $(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.Build.Tasks.Git.dll
+ $(MSBuildThisFileDirectory)..\tools\net\Microsoft.Build.Tasks.Git.dll
+
+
+
+
+
+ <_MicrosoftSourceLinkCommonAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.Common.dll
+ <_MicrosoftSourceLinkCommonAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.Common.dll
+
+
+
+ true
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1701;1702
+
+ $(WarningsAsErrors);NU1605
+
+
+ $(DefineConstants);
+ $(DefineConstants)TRACE
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(TargetsForTfmSpecificContentInPackage);_PackProjectToolValidation
+
+
+
+
+
+ MSBuild:Compile
+ $(DefaultXamlRuntime)
+ Designer
+
+
+ MSBuild:Compile
+ $(DefaultXamlRuntime)
+ Designer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_WpfCommonNetFxReference Include="WindowsBase" />
+ <_WpfCommonNetFxReference Include="PresentationCore" />
+ <_WpfCommonNetFxReference Include="PresentationFramework" />
+ <_WpfCommonNetFxReference Include="System.Xaml" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'">
+ 4.0
+
+ <_WpfCommonNetFxReference Include="UIAutomationClient" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
+ <_WpfCommonNetFxReference Include="UIAutomationClientSideProviders" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
+ <_WpfCommonNetFxReference Include="UIAutomationProvider" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
+ <_WpfCommonNetFxReference Include="UIAutomationTypes" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
+ <_WpfCommonNetFxReference Include="System.Windows.Controls.Ribbon" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.5'" />
+
+
+ <_SDKImplicitReference Include="@(_WpfCommonNetFxReference)" Condition="'$(UseWPF)' == 'true'" />
+ <_SDKImplicitReference Include="System.Windows.Forms" Condition="('$(UseWindowsForms)' == 'true') " />
+ <_SDKImplicitReference Include="WindowsFormsIntegration" Condition=" ('$(UseWindowsForms)' == 'true') And ('$(UseWPF)' == 'true') " />
+
+
+
+
+
+ <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.0" />
+ <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.1" />
+ <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.0" />
+ <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.1" />
+ <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.2" />
+
+ <_UnsupportedNETStandardTargetFramework Include="@(SupportedNETStandardTargetFramework)" />
+
+ <_UnsupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v2.0" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+ <_TargetFrameworkVersionValue>0.0
+ <_WindowsDesktopSdkTargetFrameworkVersionFloor>3.0
+
+
+
+
+
+
+
+ net10.0;net9.0;net8.0;netstandard2.0
+ true
+ true
+ ModelContextProtocol.Core
+ Core .NET SDK for the Model Context Protocol (MCP)
+ README.md
+
+ $(NoWarn);MCPEXP001
+
+
+ true
+
+
+
+ $(NoWarn);CS0436
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+ Debug
+ AnyCPU
+ $(Platform)
+
+
+
+
+ 1.0.0
+ $(VersionPrefix)-$(VersionSuffix)
+ $(VersionPrefix)
+
+
+ $(AssemblyName)
+ $(Authors)
+ $(AssemblyName)
+ $(AssemblyName)
+
+
+
+
+
+
+
+ true
+ false
+ true
+ <_PlatformToAppendToOutputPath Condition="'$(AppendPlatformToOutputPath)' == 'true'">$(PlatformName)\
+
+
+
+
+
+
+
+ <_DefaultArtifactsPathPropsImported>true
+
+
+
+ true
+ true
+ <_ArtifactsPathLocationType>ExplicitlySpecified
+
+
+
+
+ $(_DirectoryBuildPropsBasePath)\artifacts
+ true
+ <_ArtifactsPathLocationType>DirectoryBuildPropsFolder
+
+
+
+ $(MSBuildProjectDirectory)\artifacts
+ <_ArtifactsPathLocationType>ProjectFolder
+
+
+
+ $(MSBuildProjectName)
+ bin
+ publish
+ package
+
+ true
+
+
+ $(Configuration.ToLowerInvariant())
+
+ $(ArtifactsPivots)_$(TargetFramework.ToLowerInvariant())
+
+ $(ArtifactsPivots)_$(RuntimeIdentifier.ToLowerInvariant())
+
+
+
+ $(ArtifactsPath)\$(ArtifactsBinOutputName)\$(ArtifactsProjectName)\
+ $(ArtifactsPath)\obj\$(ArtifactsProjectName)\
+ $(ArtifactsPath)\$(ArtifactsPublishOutputName)\$(ArtifactsProjectName)\$(ArtifactsPivots)\
+
+
+
+ $(ArtifactsPath)\$(ArtifactsBinOutputName)\
+ $(ArtifactsPath)\obj\
+ $(ArtifactsPath)\$(ArtifactsPublishOutputName)\$(ArtifactsPivots)\
+
+
+ $(BaseOutputPath)$(ArtifactsPivots)\
+ $(BaseIntermediateOutputPath)$(ArtifactsPivots)\
+
+ $(ArtifactsPath)\$(ArtifactsPackageOutputName)\$(Configuration.ToLowerInvariant())\
+
+
+ bin\
+ $(BaseOutputPath)\
+ $(BaseOutputPath)$(_PlatformToAppendToOutputPath)$(Configuration)\
+ $(OutputPath)\
+
+
+
+ obj\
+ $(BaseIntermediateOutputPath)\
+ $(BaseIntermediateOutputPath)$(_PlatformToAppendToOutputPath)$(Configuration)\
+ $(IntermediateOutputPath)\
+
+
+
+ $(OutputPath)
+
+
+
+ $(DefaultItemExcludes);$(OutputPath)/**
+ $(DefaultItemExcludes);$(IntermediateOutputPath)/**
+
+
+ $(DefaultItemExcludes);$(ArtifactsPath)/**
+
+ $(DefaultItemExcludes);bin/**;obj/**
+
+
+
+ $(OutputPath)$(TargetFramework.ToLowerInvariant())\
+
+
+ $(IntermediateOutputPath)$(TargetFramework.ToLowerInvariant())\
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildToolsPath)\Microsoft.CSharp.targets
+ $(MSBuildToolsPath)\Microsoft.VisualBasic.targets
+ $(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.FSharpTargetsShim.targets
+
+ $(MSBuildToolsPath)\Microsoft.Common.targets
+
+
+
+
+
+
+
+ $(MSBuildToolsPath)\Microsoft.CSharp.CrossTargeting.targets
+
+
+
+
+ $(MSBuildToolsPath)\Microsoft.CSharp.CurrentVersion.targets
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+ $(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets
+
+
+
+
+
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+ <_ThisProjectBuildMetadata Include="$(MSBuildProjectFullPath)">
+ @(_TargetFrameworkInfo)
+ @(_TargetFrameworkInfo->'%(TargetFrameworkMonikers)')
+ @(_TargetFrameworkInfo->'%(TargetPlatformMonikers)')
+ $(_AdditionalPropertiesFromProject)
+ false
+ @(_TargetFrameworkInfo->'%(IsRidAgnostic)')
+
+
+ false
+ $(Platform)
+ $(Platforms)
+
+
+
+
+
+ <_TargetFramework Include="$(TargetFrameworks)" />
+
+ <_TargetFrameworkNormalized Include="@(_TargetFramework->Trim()->Distinct())" />
+ <_InnerBuildProjects Include="$(MSBuildProjectFile)">
+ TargetFramework=%(_TargetFrameworkNormalized.Identity)
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+ Build
+
+
+
+
+
+
+
+
+
+
+
+ $([MSBuild]::IsRunningFromVisualStudio())
+ $([MSBuild]::GetToolsDirectory32())\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets
+ $(MSBuildToolsPath)\NuGet.targets
+
+
+
+
+
+ true
+
+ NuGet.Build.Tasks.dll
+
+ false
+
+ true
+ true
+
+ false
+
+ WarnAndContinue
+
+ $(BuildInParallel)
+ true
+
+ <_RestoreSolutionFileUsed Condition=" '$(_RestoreSolutionFileUsed)' == '' AND '$(SolutionDir)' != '' AND $(MSBuildProjectFullPath.EndsWith('.metaproj')) == 'true' ">true
+
+ $(MSBuildInteractive)
+
+ true
+
+ true
+
+ <_CentralPackageVersionsEnabled Condition="'$(ManagePackageVersionsCentrally)' == 'true' AND '$(CentralPackageVersionsFileImported)' == 'true'">true
+
+
+
+
+ true
+
+ low
+
+ all
+ direct
+
+
+
+
+ true
+ false
+ true
+ false
+
+
+
+ <_GenerateRestoreGraphProjectEntryInputProperties>ExcludeRestorePackageImports=true
+
+ <_GenerateRestoreGraphProjectEntryInputProperties Condition=" '$(RestoreUseCustomAfterTargets)' == 'true' ">
+ $(_GenerateRestoreGraphProjectEntryInputProperties);
+ NuGetRestoreTargets=$(MSBuildThisFileFullPath);
+ RestoreUseCustomAfterTargets=$(RestoreUseCustomAfterTargets);
+ CustomAfterMicrosoftCommonCrossTargetingTargets=$(MSBuildThisFileFullPath);
+ CustomAfterMicrosoftCommonTargets=$(MSBuildThisFileFullPath);
+
+
+ <_GenerateRestoreGraphProjectEntryInputProperties Condition=" '$(_RestoreSolutionFileUsed)' == 'true' ">
+ $(_GenerateRestoreGraphProjectEntryInputProperties);
+ _RestoreSolutionFileUsed=true;
+ SolutionDir=$(SolutionDir);
+ SolutionName=$(SolutionName);
+ SolutionFileName=$(SolutionFileName);
+ SolutionPath=$(SolutionPath);
+ SolutionExt=$(SolutionExt);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(ContinueOnError)
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(ContinueOnError)
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(ContinueOnError)
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ <_FrameworkReferenceForRestore Include="@(FrameworkReference)" Condition="'%(FrameworkReference.IsTransitiveFrameworkReference)' != 'true'" />
+
+
+
+
+
+
+ $(ContinueOnError)
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+ $(ContinueOnError)
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ exclusionlist
+
+
+
+ <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" Condition=" '%(RestoreGraphProjectInputItems.Extension)' == '.csproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.vbproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.fsproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.nuproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.proj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.msbuildproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.vcxproj' " />
+
+
+
+ <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" Condition=" '%(RestoreGraphProjectInputItems.Extension)' != '.metaproj'
AND '%(RestoreGraphProjectInputItems.Extension)' != '.shproj'
AND '%(RestoreGraphProjectInputItems.Extension)' != '.vcxitems'
AND '%(RestoreGraphProjectInputItems.Extension)' != '.vdproj'
AND '%(RestoreGraphProjectInputItems.Extension)' != '' " />
+
+
+
+ <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_GenerateRestoreGraphProjectEntryInput Include="@(FilteredRestoreGraphProjectInputItems)" Condition=" '$(RestoreRecursive)' != 'true' " />
+ <_GenerateRestoreGraphProjectEntryInput Include="@(_RestoreProjectPathItems)" Condition=" '$(RestoreRecursive)' == 'true' " />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())" Condition=" '$(RestoreProjectStyle)' != 'Unknown' ">
+ RestoreSpec
+ $(MSBuildProjectFullPath)
+
+
+
+
+
+
+ netcoreapp1.0
+
+
+
+
+
+
+
+
+
+
+ <_HasPackageReferenceItems Condition="'@(PackageReference)' != ''">true
+
+
+ <_HasPackageReferenceItems Condition="@(PackageReference->Count()) > 0">true
+
+
+
+
+
+
+ <_HasPackageReferenceItems />
+
+
+
+
+
+ true
+
+
+
+
+
+ <_RestoreProjectFramework />
+ <_TargetFrameworkToBeUsed Condition=" '$(_TargetFrameworkOverride)' == '' ">$(TargetFrameworks)
+
+
+
+
+
+ <_RestoreTargetFrameworksOutputFiltered Include="$(_RestoreProjectFramework.Split(';'))" />
+
+
+
+
+
+ <_RestoreTargetFrameworkItems Include="$(TargetFrameworks.Split(';'))" />
+
+
+ <_RestoreTargetFrameworkItems Include="$(_TargetFrameworkOverride)" />
+
+
+
+
+
+ $(SolutionDir)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_RestoreSettingsPerFramework Include="$([System.Guid]::NewGuid())">
+ $(RestoreAdditionalProjectSources)
+ $(RestoreAdditionalProjectFallbackFolders)
+ $(RestoreAdditionalProjectFallbackFoldersExcludes)
+
+
+
+
+
+
+
+ $(MSBuildProjectExtensionsPath)
+
+
+
+
+
+
+ <_RestoreProjectName>$(MSBuildProjectName)
+ <_RestoreProjectName Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(AssemblyName)' != '' ">$(AssemblyName)
+ <_RestoreProjectName Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(PackageId)' != '' ">$(PackageId)
+
+
+
+ <_RestoreProjectVersion>1.0.0
+ <_RestoreProjectVersion Condition=" '$(Version)' != '' ">$(Version)
+ <_RestoreProjectVersion Condition=" '$(PackageVersion)' != '' ">$(PackageVersion)
+
+
+
+ <_RestoreCrossTargeting>true
+
+
+
+ <_RestoreSkipContentFileWrite Condition=" '$(TargetFrameworks)' == '' AND '$(TargetFramework)' == '' ">true
+
+
+
+ <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
+ ProjectSpec
+ $(_RestoreProjectVersion)
+ $(MSBuildProjectFullPath)
+ $(MSBuildProjectFullPath)
+ $(_RestoreProjectName)
+ $(_OutputSources)
+ $(_OutputFallbackFolders)
+ $(_OutputPackagesPath)
+ $(RestoreProjectStyle)
+ $(RestoreOutputAbsolutePath)
+ $(RuntimeIdentifiers);$(RuntimeIdentifier)
+ $(RuntimeSupports)
+ $(_RestoreCrossTargeting)
+ $(RestoreLegacyPackagesDirectory)
+ $(ValidateRuntimeIdentifierCompatibility)
+ $(_RestoreSkipContentFileWrite)
+ $(_OutputConfigFilePaths)
+ $(TreatWarningsAsErrors)
+ $(WarningsAsErrors)
+ $(WarningsNotAsErrors)
+ $(NoWarn)
+ $(RestorePackagesWithLockFile)
+ $(NuGetLockFilePath)
+ $(RestoreLockedMode)
+ <_CentralPackageVersionsEnabled>$(_CentralPackageVersionsEnabled)
+ $(CentralPackageFloatingVersionsEnabled)
+ $(CentralPackageVersionOverrideEnabled)
+ $(CentralPackageTransitivePinningEnabled)
+ $(NuGetAudit)
+ $(NuGetAuditLevel)
+ $(NuGetAuditMode)
+ $(SdkAnalysisLevel)
+ $(UsingMicrosoftNETSdk)
+ $(RestoreUseLegacyDependencyResolver)
+
+
+
+
+ <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
+ ProjectSpec
+ $(MSBuildProjectFullPath)
+ $(MSBuildProjectFullPath)
+ $(_RestoreProjectName)
+ $(RestoreProjectStyle)
+ $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config
+ $(MSBuildProjectDirectory)\packages.config
+ $(RestorePackagesWithLockFile)
+ $(NuGetLockFilePath)
+ $(RestoreLockedMode)
+ $(_OutputSources)
+ $(SolutionDir)
+ $(_OutputRepositoryPath)
+ $(_OutputConfigFilePaths)
+ $(_OutputPackagesPath)
+ @(_RestoreTargetFrameworksOutputFiltered)
+ $(NuGetAudit)
+ $(NuGetAuditLevel)
+
+
+
+
+ <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
+ ProjectSpec
+ $(MSBuildProjectFullPath)
+ $(MSBuildProjectFullPath)
+ $(_RestoreProjectName)
+ $(RestoreProjectStyle)
+ @(_RestoreTargetFrameworksOutputFiltered)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
+ TargetFrameworkInformation
+ $(MSBuildProjectFullPath)
+ $(PackageTargetFallback)
+ $(AssetTargetFallback)
+ $(TargetFramework)
+ $(TargetFrameworkIdentifier)
+ $(TargetFrameworkVersion)
+ $(TargetFrameworkMoniker)
+ $(TargetFrameworkProfile)
+ $(TargetPlatformMoniker)
+ $(TargetPlatformIdentifier)
+ $(TargetPlatformVersion)
+ $(TargetPlatformMinVersion)
+ $(CLRSupport)
+ $(RuntimeIdentifierGraphPath)
+ $(WindowsTargetPlatformMinVersion)
+ $(RestoreEnablePackagePruning)
+ $(RestorePackagePruningDefault)
+ $(NuGetAuditMode)
+
+
+
+
+
+
+
+
+
+
+
+
+ <_RestoreProjectPathItems Include="$(_RestoreGraphAbsoluteProjectPaths)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_GenerateRestoreProjectPathWalkOutputs Include="$(MSBuildProjectFullPath)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_RestorePackagesPathOverride>$(RestorePackagesPath)
+
+
+
+
+
+ <_RestorePackagesPathOverride>$(RestoreRepositoryPath)
+
+
+
+
+
+ <_RestoreSourcesOverride>$(RestoreSources)
+
+
+
+
+
+ <_RestoreFallbackFoldersOverride>$(RestoreFallbackFolders)
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TargetFrameworkOverride Condition=" '$(TargetFrameworks)' == '' ">$(TargetFramework)
+
+
+
+
+
+ <_ValidProjectsForRestore Include="$(MSBuildProjectFullPath)" />
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+ $(MSBuildExtensionsPath)\Microsoft.TestPlatform.Build.dll
+ $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
+
+
+
+
+
+
+ <_TestTfmsInParallel>$([MSBuild]::ValueOrDefault('$(TestTfmsInParallel)', '$(BuildInParallel)'))
+
+
+ <_TargetFramework Include="$(TargetFrameworks)" />
+ <_ProjectToTestWithTFM Include="$(MSBuildProjectFile)" Properties="TargetFramework=%(_TargetFramework.Identity);VSTestNoBuild=true" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VSTest
+
+
+
+
+
+
+
+
+
+
+ false
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(RepositoryUrl)
+ $(ScmRepositoryUrl)
+
+
+
+ %(SourceRoot.ScmRepositoryUrl)
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+ local
+
+
+
+
+
+
+
+
+
+
+ git
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_SourceLinkGitHubAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\net472\Microsoft.SourceLink.GitHub.dll
+ <_SourceLinkGitHubAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\core\Microsoft.SourceLink.GitHub.dll
+
+
+
+
+ $(SourceLinkUrlInitializerTargets);_InitializeGitHubSourceLinkUrl
+ $(SourceControlManagerUrlTranslationTargets);TranslateGitHubUrlsInSourceControlInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+ <_DirectoryBuildTargetsFile Condition="'$(_DirectoryBuildTargetsFile)' == ''">Directory.Build.targets
+ <_DirectoryBuildTargetsBasePath Condition="'$(_DirectoryBuildTargetsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), '$(_DirectoryBuildTargetsFile)'))
+ $([System.IO.Path]::Combine('$(_DirectoryBuildTargetsBasePath)', '$(_DirectoryBuildTargetsFile)'))
+
+
+
+ false
+
+
+
+
+
+
+
+
+ TargetFramework
+ TargetFrameworks
+
+
+ true
+
+
+
+
+
+
+
+
+ <_MainReferenceTargetForBuild Condition="'$(BuildProjectReferences)' == '' or '$(BuildProjectReferences)' == 'true'">.projectReferenceTargetsOrDefaultTargets
+ <_MainReferenceTargetForBuild Condition="'$(_MainReferenceTargetForBuild)' == ''">GetTargetPath
+ $(_MainReferenceTargetForBuild);GetNativeManifest;$(_RecursiveTargetForContentCopying);$(ProjectReferenceTargetsForBuild)
+
+ <_MainReferenceTargetForPublish Condition="'$(NoBuild)' == 'true'">GetTargetPath
+ <_MainReferenceTargetForPublish Condition="'$(NoBuild)' != 'true'">$(_MainReferenceTargetForBuild)
+ GetTargetFrameworks;$(_MainReferenceTargetForPublish);GetNativeManifest;GetCopyToPublishDirectoryItems;$(ProjectReferenceTargetsForPublish)
+
+ $(ProjectReferenceTargetsForBuild);$(ProjectReferenceTargetsForPublish)
+ $(ProjectReferenceTargetsForRebuild);$(ProjectReferenceTargetsForPublish)
+ GetCopyToPublishDirectoryItems;$(ProjectReferenceTargetsForGetCopyToPublishDirectoryItems)
+
+
+ .default;$(ProjectReferenceTargetsForBuild)
+
+
+ Clean;$(ProjectReferenceTargetsForClean)
+ $(ProjectReferenceTargetsForClean);$(ProjectReferenceTargetsForBuild);$(ProjectReferenceTargetsForRebuild)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildThisFileDirectory)..\tools\
+ net10.0
+ net472
+ $(MicrosoftNETBuildTasksDirectoryRoot)$(MicrosoftNETBuildTasksTFM)\
+ $(MicrosoftNETBuildTasksDirectory)Microsoft.NET.Build.Tasks.dll
+
+ Microsoft.NETCore.App;NETStandard.Library
+
+
+
+ <_IsExecutable Condition="'$(OutputType)' == 'Exe' or '$(OutputType)'=='WinExe'">true
+ $(_IsExecutable)
+
+
+
+ netcoreapp2.2
+
+
+ Preview
+
+
+
+
+
+
+ $(NuGetPackageRoot)\microsoft.net.sdk.compilers.toolset\$(NETCoreSdkVersion)
+ $(RoslynTargetsPath)\Microsoft.Build.Tasks.CodeAnalysis.dll
+ <_NeedToDownloadMicrosoftNetSdkCompilersToolsetPackage>true
+ <_MicrosoftNetSdkCompilersToolsetPackageRootEmpty Condition="'$(NuGetPackageRoot)' == ''">true
+
+
+
+
+
+
+
+
+ <_SourceLinkSdkSubDir>build
+ <_SourceLinkSdkSubDir Condition="'$(IsCrossTargetingBuild)' == 'true'">buildMultiTargeting
+
+ true
+
+
+
+
+
+
+
+ local
+
+
+
+
+
+
+
+
+
+
+
+ git
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(RepositoryUrl)
+ $(ScmRepositoryUrl)
+
+
+
+ %(SourceRoot.ScmRepositoryUrl)
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+ <_SourceLinkGitHubAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.GitHub.dll
+ <_SourceLinkGitHubAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.GitHub.dll
+
+
+
+
+ $(SourceLinkUrlInitializerTargets);_InitializeGitHubSourceLinkUrl
+ $(SourceControlManagerUrlTranslationTargets);TranslateGitHubUrlsInSourceControlInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_SourceLinkGitLabAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.GitLab.dll
+ <_SourceLinkGitLabAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.GitLab.dll
+
+
+
+
+ $(SourceLinkUrlInitializerTargets);_InitializeGitLabSourceLinkUrl
+ $(SourceControlManagerUrlTranslationTargets);TranslateGitLabUrlsInSourceControlInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_SourceLinkAzureReposGitAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.AzureRepos.Git.dll
+ <_SourceLinkAzureReposGitAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.AzureRepos.Git.dll
+
+
+
+
+ $(SourceLinkUrlInitializerTargets);_InitializeAzureReposGitSourceLinkUrl
+ $(SourceControlManagerUrlTranslationTargets);TranslateAzureReposGitUrlsInSourceControlInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_SourceLinkBitbucketAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.Bitbucket.Git.dll
+ <_SourceLinkBitbucketAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.Bitbucket.Git.dll
+
+
+
+
+ $(SourceLinkUrlInitializerTargets);_InitializeBitbucketGitSourceLinkUrl
+ $(SourceControlManagerUrlTranslationTargets);TranslateBitbucketGitUrlsInSourceControlInformation
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_PublishTargetFrameworks Include="$(TargetFrameworks)" />
+
+
+
+
+
+
+ <_GetAllRuntimeIdentifiersTargetFrameworks Include="$(TargetFrameworks)" />
+ <_AllRuntimeIdentifiers Include="$(RuntimeIdentifiers);$(RuntimeIdentifier)" />
+
+
+
+
+
+ @(_AllRuntimeIdentifiers->Distinct())
+
+
+
+
+
+
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
+
+
+
+
+
+ $([System.IO.Path]::GetDirectoryName($(BundledRuntimeIdentifierGraphFile)))/PortableRuntimeIdentifierGraph.json
+
+
+
+
+
+
+ $(MSBuildThisFileDirectory)..\tools\net472\Microsoft.DotNet.ApiCompat.Task.dll
+ $(MSBuildThisFileDirectory)..\tools\net10.0\Microsoft.DotNet.ApiCompat.Task.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_UseRoslynToolsetPackage Condition="'$(ApiCompatUseRoslynToolsetPackagePath)' == 'true' and '@(PackageReference->AnyHaveMetadataValue('Identity', 'Microsoft.Net.Compilers.Toolset'))' == 'true'">true
+
+ $([System.IO.Path]::GetDirectoryName('$(CSharpCoreTargetsPath)'))
+
+ $(RoslynTargetsPath)
+
+ $([System.IO.Path]::Combine('$(RoslynAssembliesPath)', 'bincore'))
+
+
+
+ $(GenerateCompatibilitySuppressionFile)
+
+
+
+
+
+
+ <_apiCompatDefaultProjectSuppressionFile>$([MSBuild]::NormalizePath('$(MSBuildProjectDirectory)', 'CompatibilitySuppressions.xml'))
+
+ $(_apiCompatDefaultProjectSuppressionFile)
+
+
+
+
+
+
+
+
+
+
+ <_ApiCompatValidatePackageSemaphoreFile>$(IntermediateOutputPath)$(MSBuildThisFileName).semaphore
+
+ CollectApiCompatInputs;_GetReferencePathFromInnerProjects;$(RunPackageValidationDependsOn)
+
+
+
+ $(PackageId)
+ $([MSBuild]::NormalizePath('$(NuGetPackageRoot)', '$(PackageValidationBaselineName.ToLower())', '$(PackageValidationBaselineVersion)', '$(PackageValidationBaselineName.ToLower()).$(PackageValidationBaselineVersion).nupkg'))
+ <_packageValidationBaselinePath Condition="'$(DisablePackageBaselineValidation)' != 'true'">$(PackageValidationBaselinePath)
+
+
+ <_PackageTargetPath Include="@(NuGetPackOutput->WithMetadataValue('Extension', '.nupkg'))" Condition="!$([System.String]::new('%(Identity)').EndsWith('.symbols.nupkg'))" />
+
+
+
+
+
+
+
+
+
+ $(TargetPlatformMoniker)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(MSBuildThisFileDirectory)..\..\..\NuGet.Build.Tasks.Pack.targets
+ true
+
+
+
+
+
+ Sdks\Microsoft.NET.Sdk\tools\net472\NuGet.Build.Tasks.Pack.dll
+ NuGet.Build.Tasks.Pack.dll
+
+
+
+
+
+
+
+
+ $(AssemblyName)
+ $(Version)
+ true
+ _LoadPackInputItems; _GetTargetFrameworksOutput; _WalkEachTargetPerFramework; _GetPackageFiles; $(GenerateNuspecDependsOn)
+ $(Description)
+ Package Description
+ false
+ true
+ true
+ tools
+ lib
+ content;contentFiles
+ $(BeforePack); _GetRestoreProjectStyle; _IntermediatePack; GenerateNuspec; $(PackDependsOn)
+ true
+ symbols.nupkg
+ DeterminePortableBuildCapabilities
+ false
+ false
+ .dll; .exe; .winmd; .json; .pri; .xml
+ $(DefaultAllowedOutputExtensionsInPackageBuildOutputFolder) ;$(AllowedOutputExtensionsInPackageBuildOutputFolder)
+ .pdb; .mdb; $(AllowedOutputExtensionsInPackageBuildOutputFolder); $(AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder)
+ .pdb
+ false
+
+
+ $(GenerateNuspecDependsOn)
+
+
+ Build;$(GenerateNuspecDependsOn)
+
+
+
+
+
+
+ $(TargetFramework)
+
+
+
+ $(MSBuildProjectExtensionsPath)
+ $(BaseOutputPath)$(Configuration)\
+ $(BaseIntermediateOutputPath)$(Configuration)\
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFrameworks />
+
+
+
+
+
+ <_TargetFrameworks Include="$(_ProjectFrameworks.Split(';'))" />
+
+
+
+
+
+
+ <_PackageFilesToDelete Include="@(_OutputPackItems)" />
+
+
+
+
+
+ false
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(PrivateRepositoryUrl)
+ $(SourceRevisionId)
+ $(SourceBranchName)
+
+
+
+
+
+
+ $(MSBuildProjectFullPath)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectPathWithVersion Include="$(MSBuildProjectFullPath)">
+ $(PackageVersion)
+ 1.0.0
+
+
+
+
+
+ <_ProjectsWithTFM Include="$(MSBuildProjectFullPath)" AdditionalProperties="TargetFramework=%(_TargetFrameworks.Identity)" />
+ <_ProjectsWithTFMNoBuild Include="$(MSBuildProjectFullPath)" AdditionalProperties="TargetFramework=%(_TargetFrameworks.Identity);BuildProjectReferences=false" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TfmWithDependenciesSuppressed Include="$(TargetFramework)" Condition="'$(SuppressDependenciesWhenPacking)' == 'true'" />
+
+
+
+
+
+ $(TargetFramework)
+
+
+
+
+
+
+
+
+
+
+
+
+ %(TfmSpecificPackageFile.RecursiveDir)
+ %(TfmSpecificPackageFile.BuildAction)
+
+
+
+
+
+ <_TargetPathsToSymbolsWithTfm Include="@(DebugSymbolsProjectOutputGroupOutput)">
+ $(TargetFramework)
+
+
+
+ <_TargetPathsToSymbolsWithTfm Include="@(TfmSpecificDebugSymbolsFile)" />
+
+
+
+
+
+ <_PathToPriFile Include="$(ProjectPriFullPath)">
+ $(ProjectPriFullPath)
+ $(ProjectPriFileName)
+
+
+
+
+
+
+ <_PackageFilesToExclude Include="@(Content)" Condition="'%(Content.Pack)' == 'false'" />
+
+
+
+ <_PackageFiles Include="@(Content)" Condition=" %(Content.Pack) != 'false' ">
+ Content
+
+ <_PackageFiles Include="@(Compile)" Condition=" %(Compile.Pack) == 'true' ">
+ Compile
+
+ <_PackageFiles Include="@(None)" Condition=" %(None.Pack) == 'true' ">
+ None
+
+ <_PackageFiles Include="@(EmbeddedResource)" Condition=" %(EmbeddedResource.Pack) == 'true' ">
+ EmbeddedResource
+
+ <_PackageFiles Include="@(ApplicationDefinition)" Condition=" %(ApplicationDefinition.Pack) == 'true' ">
+ ApplicationDefinition
+
+ <_PackageFiles Include="@(Page)" Condition=" %(Page.Pack) == 'true' ">
+ Page
+
+ <_PackageFiles Include="@(Resource)" Condition=" %(Resource.Pack) == 'true' ">
+ Resource
+
+ <_PackageFiles Include="@(SplashScreen)" Condition=" %(SplashScreen.Pack) == 'true' ">
+ SplashScreen
+
+ <_PackageFiles Include="@(DesignData)" Condition=" %(DesignData.Pack) == 'true' ">
+ DesignData
+
+ <_PackageFiles Include="@(DesignDataWithDesignTimeCreatableTypes)" Condition=" %(DesignDataWithDesignTimeCreatableTypes.Pack) == 'true' ">
+ DesignDataWithDesignTimeCreatableTypes
+
+ <_PackageFiles Include="@(CodeAnalysisDictionary)" Condition=" %(CodeAnalysisDictionary.Pack) == 'true' ">
+ CodeAnalysisDictionary
+
+ <_PackageFiles Include="@(AndroidAsset)" Condition=" %(AndroidAsset.Pack) == 'true' ">
+ AndroidAsset
+
+ <_PackageFiles Include="@(AndroidResource)" Condition=" %(AndroidResource.Pack) == 'true' ">
+ AndroidResource
+
+ <_PackageFiles Include="@(BundleResource)" Condition=" %(BundleResource.Pack) == 'true' ">
+ BundleResource
+
+
+
+
+
+
+ <_IsNotSetContainersTargetsDir>false
+ <_IsNotSetContainersTargetsDir Condition=" '$(_ContainersTargetsDir)'=='' ">true
+ <_ContainersTargetsDir Condition="$(_IsNotSetContainersTargetsDir)">$(MSBuildThisFileDirectory)..\..\..\Containers\build\
+
+
+
+
+ true
+ tasks
+ net10.0
+ net472
+ containerize
+
+ $(MSBuildThisFileDirectory)..\$(ContainerTaskFolderName)\$(ContainerTaskFramework)\
+ $(MSBuildThisFileDirectory)..\$(ContainerizeFolderName)\
+
+ $(ContainerCustomTasksFolder)$(MSBuildThisFileName).dll
+
+
+
+
+
+
+
+
+
+ <_IsSDKContainerAllowedVersion>false
+
+ <_IsSDKContainerAllowedVersion Condition="$([MSBuild]::VersionGreaterThan($(NetCoreSdkVersion), 7.0.100))
OR ( $([MSBuild]::VersionEquals($(NetCoreSdkVersion), 7.0.100))
AND (
$(NETCoreSdkVersion.Contains('-preview.7'))
OR $(NETCoreSdkVersion.Contains('-rc'))
OR $(NETCoreSdkVersion.Contains('-')) == false
)
)">true
+ <_ContainerIsTargetingNet8TFM>false
+ <_ContainerIsTargetingNet8TFM Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '8.0'))">true
+ <_ContainerIsSelfContained>false
+ <_ContainerIsSelfContained Condition="'$(SelfContained)' == 'true' or '$(PublishSelfContained)' == 'true'">true
+ true
+
+
+
+
+
+
+
+
+
+
+
+ $(RuntimeIdentifier)
+ $(RuntimeIdentifiers)
+ linux-$(NETCoreSdkPortableRuntimeIdentifier.Split('-')[1])
+
+ <_InitialContainerBaseImage>$(ContainerBaseImage)
+
+
+ <_TargetRuntimeIdentifiers Include="$(ContainerRuntimeIdentifier)" Condition="'$(ContainerRuntimeIdentifier)' != ''" />
+ <_TargetRuntimeIdentifiers Include="$(ContainerRuntimeIdentifiers)" Condition="@(_TargetRuntimeIdentifiers->Count()) == 0" />
+
+
+
+
+
+ <_TargetRuntimeIdentifiers Remove="$(_TargetRuntimeIdentifiers)" />
+
+
+
+
+
+
+ $(RegistryUrl)
+
+ $(PublishImageTag)
+
+ $([System.DateTime]::UtcNow.ToString('yyyyMMddhhmmss'))
+
+
+
+
+
+
+
+
+
+
+ $(ContainerImageName)
+
+ $(AssemblyName)
+
+ latest
+ $([System.DateTime]::UtcNow.ToString('yyyyMMddhhmmss'))
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+ true
+
+
+ $(Description)
+ $(Authors)
+ $(PackageProjectUrl)
+ $(PackageProjectUrl)
+ $(PackageVersion)
+ $(PackageLicenseExpression)
+ $(Title)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_TrimmedRepositoryUrl Condition="'$(RepositoryType)' == 'git' and '$(PrivateRepositoryUrl)' != '' and $(PrivateRepositoryUrl.EndsWith('.git'))">$(PrivateRepositoryUrl.Substring(0, $(PrivateRepositoryUrl.LastIndexOf('.git'))))
+ <_TrimmedRepositoryUrl Condition="'$(_TrimmedRepositoryUrl)' == '' and '$(PrivateRepositoryUrl)' != ''">$(PrivateRepositoryUrl)
+
+
+
+
+
+
+
+
+ _ContainerVerifySDKVersion;
+ ComputeContainerConfig;
+ _CheckContainersPackage;
+
+
+
+
+
+
+ <_ContainerIsTargetingWindows>false
+ <_ContainerIsTargetingWindows Condition="$(ContainerRuntimeIdentifier.StartsWith('win'))">true
+
+ /app/
+ C:\app\
+ <_ContainerIsUsingMicrosoftDefaultImages Condition="'$(_InitialContainerBaseImage)' == ''">true
+ <_ContainerIsUsingMicrosoftDefaultImages Condition="'$(_InitialContainerBaseImage)' != ''">false
+
+
+
+ ContainerUser
+
+
+
+
+
+
+
+
+
+
+
+ <_ContainersPackageIdentity>Microsoft.NET.Build.Containers
+ <_WebDefaultSdkVersion>7.0.300
+ <_WorkerDefaultSdkVersion>8.0.100
+ <_ConsoleDefaultSdkVersion>8.0.200
+
+ <_SdkCanPublishWeb>$([MSBuild]::VersionGreaterThanOrEquals('$(NETCoreSdkVersion)', '$(_WebDefaultSdkVersion)'))
+ <_SdkCanPublishWorker>$([MSBuild]::VersionGreaterThanOrEquals('$(NETCoreSdkVersion)', '$(_WorkerDefaultSdkVersion)'))
+ <_SdkCanPublishConsole>$([MSBuild]::VersionGreaterThanOrEquals('$(NETCoreSdkVersion)', '$(_ConsoleDefaultSdkVersion)'))
+
+ <_ContainerPackageIsPresent>false
+ <_ContainerPackageIsPresent Condition="@(PackageReference->AnyHaveMetadataValue('Identity', '$(_ContainersPackageIdentity)'))">true
+ <_IsWebProject>false
+ <_IsWebProject Condition="@(ProjectCapability->AnyHaveMetadataValue('Identity', 'DotNetCoreWeb'))">true
+ <_IsWorkerProject>false
+ <_IsWorkerProject Condition="@(ProjectCapability->AnyHaveMetadataValue('Identity', 'DotNetCoreWorker'))">true
+
+
+
+
+
+
+ $(NetCoreRoot)
+ dotnet
+ dotnet.exe
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(GeneratedContainerManifest)
+ $(GeneratedContainerConfiguration)
+ $(GeneratedContainerDigest)
+ $(GeneratedContainerMediaType)
+
+
+
+
+
+
+
+
+ <_SkipContainerPublishing>false
+ <_SkipContainerPublishing Condition="$(ContainerArchiveOutputPath) != '' or ( $(ContainerRegistry) == '' and ( $(LocalRegistry) == '' or $(LocalRegistry) == 'Docker' ) )">true
+
+ <_SkipCreateImageIndex>false
+ <_SkipCreateImageIndex Condition="$(ContainerArchiveOutputPath) == '' and $(ContainerRegistry) == '' and $(LocalRegistry) == 'Podman'">true
+
+
+ <_SingleImageContainerFormat Condition="'$(ContainerImageFormat)' != ''">$(ContainerImageFormat)
+
+ <_SingleImageContainerFormat Condition="$(_SkipContainerPublishing) == 'true' ">OCI
+
+
+ <_rids Include="$(ContainerRuntimeIdentifiers)" Condition="'$(ContainerRuntimeIdentifiers)' != ''" />
+ <_rids Include="$(RuntimeIdentifiers)" Condition="'$(ContainerRuntimeIdentifiers)' == '' and '$(RuntimeIdentifiers)' != ''" />
+ <_InnerBuild Include="$(MSBuildProjectFullPath)" AdditionalProperties="
ContainerRuntimeIdentifier=%(_rids.Identity);
RuntimeIdentifier=%(_rids.Identity);
ContainerBaseRegistry=$(ContainerBaseRegistry);
ContainerBaseName=$(ContainerBaseName);
ContainerBaseTag=$(ContainerBaseTag);
ContainerBaseDigest=$(ContainerBaseDigest);
ContainerRegistry=$(ContainerRegistry);
_ContainerImageTags=@(ContainerImageTags, ';');
ContainerRepository=$(ContainerRepository);
_ContainerLabel=@(ContainerLabel->'%(Identity):%(Value)');
_ContainerPort=@(ContainerPort->'%(Identity):%(Type)');
_ContainerEnvironmentVariables=@(ContainerEnvironmentVariable->'%(Identity):%(Value)');
ContainerGenerateLabels=$(ContainerGenerateLabels);
ContainerGenerateLabelsImageBaseDigest=$(ContainerGenerateLabelsImageBaseDigest);
_SkipContainerPublishing=$(_SkipContainerPublishing);
ContainerImageFormat=$(_SingleImageContainerFormat);
_IsMultiRIDBuild=false;
_IsSingleRIDBuild=true;
_InitialContainerBaseImage=$(_InitialContainerBaseImage)
" />
+ <_rids Remove="$(_rids)" />
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ParsedContainerLabel Condition="'$(_ContainerLabel)' != ':'" Include="$(_ContainerLabel)" />
+
+ <_ParsedContainerPort Condition="'$(_ContainerPort)' != ':'" Include="$(_ContainerPort)" />
+
+ <_ParsedContainerEnvironmentVariables Condition="'$(_ContainerEnvironmentVariables)' != ':'" Include="$(_ContainerEnvironmentVariables)" />
+
+
+
+
+
+ <_IsMultiTFMBuild Condition="'$(TargetFrameworks)' != '' and '$(TargetFramework)' == ''">true
+
+ <_HasCRIDsAndNoCRID Condition="'$(ContainerRuntimeIdentifiers)' != '' and '$(ContainerRuntimeIdentifier)' == ''">true
+ <_HasRIDs Condition="'$(RuntimeIdentifiers)' != ''">true
+ <_NoCRIDsOrCRIDorRID Condition="'$(ContainerRuntimeIdentifiers)' == '' and '$(ContainerRuntimeIdentifier)' == '' and '$(RuntimeIdentifier)' == ''">true
+
+ <_IsMultiRIDBuild Condition="'$(BuildingInsideVisualStudio)' != 'true' and ('$(_HasCRIDsAndNoCRID)' == true or ('$(_HasRIDs)' == 'true' and '$(_NoCRIDsOrCRIDorRID)' == 'true'))">true
+ <_IsSingleRIDBuild Condition="'$(_IsMultiRIDBuild)' == ''">true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs
index e91bdd206..98896e198 100644
--- a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs
+++ b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs
@@ -206,6 +206,13 @@ private static McpServerToolCreateOptions DeriveOptions(MethodInfo method, McpSe
newOptions.UseStructuredContent = toolAttr.UseStructuredContent;
+ if (toolAttr.OutputSchema is Type outputSchemaType)
+ {
+ newOptions.OutputSchema ??= AIJsonUtilities.CreateJsonSchema(outputSchemaType,
+ serializerOptions: newOptions.SerializerOptions ?? McpJsonUtilities.DefaultOptions,
+ inferenceOptions: newOptions.SchemaCreateOptions);
+ }
+
if (toolAttr._taskSupport is { } taskSupport)
{
newOptions.Execution ??= new ToolExecution();
@@ -487,7 +494,17 @@ schema.ValueKind is not JsonValueKind.Object ||
return null;
}
- if (function.ReturnJsonSchema is not JsonElement outputSchema)
+ // Explicit OutputSchema takes precedence over AIFunction's return schema.
+ JsonElement outputSchema;
+ if (toolCreateOptions.OutputSchema is { } explicitSchema)
+ {
+ outputSchema = explicitSchema;
+ }
+ else if (function.ReturnJsonSchema is { } returnSchema)
+ {
+ outputSchema = returnSchema;
+ }
+ else
{
return null;
}
diff --git a/src/ModelContextProtocol.Core/Server/McpServerToolAttribute.cs b/src/ModelContextProtocol.Core/Server/McpServerToolAttribute.cs
index 21a227e8f..0edb310e7 100644
--- a/src/ModelContextProtocol.Core/Server/McpServerToolAttribute.cs
+++ b/src/ModelContextProtocol.Core/Server/McpServerToolAttribute.cs
@@ -265,6 +265,27 @@ public bool ReadOnly
///
public bool UseStructuredContent { get; set; }
+ ///
+ /// Gets or sets a from which to generate the tool's output schema.
+ ///
+ ///
+ /// The default is , which means the output schema is inferred from the return type.
+ ///
+ ///
+ ///
+ /// When set, a JSON schema is generated from the specified and used as the
+ /// instead of the schema inferred from the tool method's return type.
+ /// This is particularly useful when a tool method returns directly
+ /// (to control properties like , ,
+ /// or ) but still needs to advertise a meaningful output
+ /// schema to clients.
+ ///
+ ///
+ /// must also be set to for this property to take effect.
+ ///
+ ///
+ public Type? OutputSchema { get; set; }
+
///
/// Gets or sets the source URI for the tool's icon.
///
diff --git a/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs b/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs
index 3bf0c5305..88d718d13 100644
--- a/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs
+++ b/src/ModelContextProtocol.Core/Server/McpServerToolCreateOptions.cs
@@ -129,6 +129,26 @@ public sealed class McpServerToolCreateOptions
///
public bool UseStructuredContent { get; set; }
+ ///
+ /// Gets or sets an explicit JSON schema to use as the tool's output schema.
+ ///
+ ///
+ /// The default is , which means the output schema is inferred from the return type.
+ ///
+ ///
+ ///
+ /// When set, this schema is used as the instead of the schema
+ /// inferred from the tool method's return type. This is particularly useful when a tool method
+ /// returns directly (to control properties like ,
+ /// , or ) but still
+ /// needs to advertise a meaningful output schema to clients.
+ ///
+ ///
+ /// must also be set to for this property to take effect.
+ ///
+ ///
+ public JsonElement? OutputSchema { get; set; }
+
///
/// Gets or sets the JSON serializer options to use when marshalling data to/from JSON.
///
@@ -209,6 +229,7 @@ internal McpServerToolCreateOptions Clone() =>
OpenWorld = OpenWorld,
ReadOnly = ReadOnly,
UseStructuredContent = UseStructuredContent,
+ OutputSchema = OutputSchema,
SerializerOptions = SerializerOptions,
SchemaCreateOptions = SchemaCreateOptions,
Metadata = Metadata,
diff --git a/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs b/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
index fd62a05c7..22ee805c2 100644
--- a/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
+++ b/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
@@ -533,6 +533,284 @@ public async Task StructuredOutput_Disabled_ReturnsExpectedSchema(T value)
Assert.Null(result.StructuredContent);
}
+ [Fact]
+ public void OutputSchema_Options_OverridesReturnTypeSchema()
+ {
+ // When OutputSchema is set on options, it should be used instead of the return type's schema
+ JsonElement outputSchema = JsonDocument.Parse("""{"type":"object","properties":{"name":{"type":"string"},"age":{"type":"integer"}},"required":["name","age"]}""").RootElement;
+ McpServerTool tool = McpServerTool.Create(() => "result", new()
+ {
+ UseStructuredContent = true,
+ OutputSchema = outputSchema,
+ });
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.True(tool.ProtocolTool.OutputSchema.Value.TryGetProperty("properties", out var properties));
+ Assert.True(properties.TryGetProperty("name", out _));
+ Assert.True(properties.TryGetProperty("age", out _));
+ }
+
+ [Fact]
+ public void OutputSchema_Options_WithCallToolResultReturn()
+ {
+ // When the tool returns CallToolResult, OutputSchema on options provides the advertised schema
+ JsonElement outputSchema = JsonDocument.Parse("""{"type":"object","properties":{"result":{"type":"string"}},"required":["result"]}""").RootElement;
+ McpServerTool tool = McpServerTool.Create(() => new CallToolResult() { Content = [] }, new()
+ {
+ UseStructuredContent = true,
+ OutputSchema = outputSchema,
+ });
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.Equal("object", tool.ProtocolTool.OutputSchema.Value.GetProperty("type").GetString());
+ Assert.True(tool.ProtocolTool.OutputSchema.Value.TryGetProperty("properties", out var properties));
+ Assert.True(properties.TryGetProperty("result", out _));
+ }
+
+ [Fact]
+ public async Task OutputSchema_Options_CallToolResult_PreservesStructuredContent()
+ {
+ // When tool returns CallToolResult with StructuredContent, it's preserved in the response
+ JsonElement outputSchema = JsonDocument.Parse("""{"type":"object","properties":{"value":{"type":"integer"}},"required":["value"]}""").RootElement;
+ JsonElement structuredContent = JsonDocument.Parse("""{"value":42}""").RootElement;
+ McpServerTool tool = McpServerTool.Create(() => new CallToolResult()
+ {
+ Content = [new TextContentBlock { Text = "42" }],
+ StructuredContent = structuredContent,
+ }, new()
+ {
+ Name = "tool",
+ UseStructuredContent = true,
+ OutputSchema = outputSchema,
+ });
+ var mockServer = new Mock();
+ var request = new RequestContext(mockServer.Object, CreateTestJsonRpcRequest())
+ {
+ Params = new CallToolRequestParams { Name = "tool" },
+ };
+
+ var result = await tool.InvokeAsync(request, TestContext.Current.CancellationToken);
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.NotNull(result.StructuredContent);
+ Assert.Equal(42, result.StructuredContent.Value.GetProperty("value").GetInt32());
+ AssertMatchesJsonSchema(tool.ProtocolTool.OutputSchema.Value, result.StructuredContent);
+ }
+
+ [Fact]
+ public void OutputSchema_Options_RequiresUseStructuredContent()
+ {
+ // OutputSchema without UseStructuredContent=true should not produce an output schema
+ JsonElement outputSchema = JsonDocument.Parse("""{"type":"object","properties":{"name":{"type":"string"}}}""").RootElement;
+ McpServerTool tool = McpServerTool.Create(() => "result", new()
+ {
+ UseStructuredContent = false,
+ OutputSchema = outputSchema,
+ });
+
+ Assert.Null(tool.ProtocolTool.OutputSchema);
+ }
+
+ [Fact]
+ public void OutputSchema_Options_NonObjectSchema_GetsWrapped()
+ {
+ // Non-object output schema should be wrapped in a "result" property envelope
+ JsonElement outputSchema = JsonDocument.Parse("""{"type":"string"}""").RootElement;
+ McpServerTool tool = McpServerTool.Create(() => "result", new()
+ {
+ UseStructuredContent = true,
+ OutputSchema = outputSchema,
+ });
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.Equal("object", tool.ProtocolTool.OutputSchema.Value.GetProperty("type").GetString());
+ Assert.True(tool.ProtocolTool.OutputSchema.Value.TryGetProperty("properties", out var properties));
+ Assert.True(properties.TryGetProperty("result", out var resultProp));
+ Assert.Equal("string", resultProp.GetProperty("type").GetString());
+ }
+
+ [Fact]
+ public void OutputSchema_Options_NullableObjectSchema_BecomesObject()
+ {
+ // ["object", "null"] type should be simplified to just "object"
+ JsonElement outputSchema = JsonDocument.Parse("""{"type":["object","null"],"properties":{"name":{"type":"string"}}}""").RootElement;
+ McpServerTool tool = McpServerTool.Create(() => "result", new()
+ {
+ UseStructuredContent = true,
+ OutputSchema = outputSchema,
+ });
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.Equal("object", tool.ProtocolTool.OutputSchema.Value.GetProperty("type").GetString());
+ }
+
+ [Fact]
+ public void OutputSchema_Attribute_WithType_GeneratesSchema()
+ {
+ McpServerTool tool = McpServerTool.Create(ToolWithOutputSchemaAttribute);
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.Equal("object", tool.ProtocolTool.OutputSchema.Value.GetProperty("type").GetString());
+ Assert.True(tool.ProtocolTool.OutputSchema.Value.TryGetProperty("properties", out var properties));
+ Assert.True(properties.TryGetProperty("name", out _));
+ Assert.True(properties.TryGetProperty("age", out _));
+ }
+
+ [Fact]
+ public async Task OutputSchema_Attribute_CallToolResult_PreservesStructuredContent()
+ {
+ McpServerTool tool = McpServerTool.Create(ToolWithOutputSchemaReturningCallToolResult);
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.Equal("object", tool.ProtocolTool.OutputSchema.Value.GetProperty("type").GetString());
+
+ var mockServer = new Mock();
+ var request = new RequestContext(mockServer.Object, CreateTestJsonRpcRequest())
+ {
+ Params = new CallToolRequestParams { Name = "tool" },
+ };
+
+ var result = await tool.InvokeAsync(request, TestContext.Current.CancellationToken);
+
+ Assert.NotNull(result.StructuredContent);
+ Assert.Equal("John", result.StructuredContent.Value.GetProperty("name").GetString());
+ Assert.Equal(27, result.StructuredContent.Value.GetProperty("age").GetInt32());
+ AssertMatchesJsonSchema(tool.ProtocolTool.OutputSchema.Value, result.StructuredContent);
+ }
+
+ [Fact]
+ public void OutputSchema_Attribute_WithoutUseStructuredContent_NoSchema()
+ {
+ // If UseStructuredContent is false but OutputSchema type is set, no output schema should be generated
+ McpServerTool tool = McpServerTool.Create(ToolWithOutputSchemaButNoStructuredContent);
+
+ Assert.Null(tool.ProtocolTool.OutputSchema);
+ }
+
+ [Fact]
+ public void OutputSchema_Options_TakesPrecedenceOverAttribute()
+ {
+ // Options.OutputSchema should take precedence over attribute-derived schema
+ JsonElement outputSchema = JsonDocument.Parse("""{"type":"object","properties":{"custom":{"type":"boolean"}},"required":["custom"]}""").RootElement;
+ McpServerTool tool = McpServerTool.Create(ToolWithOutputSchemaAttribute, new()
+ {
+ OutputSchema = outputSchema,
+ });
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.True(tool.ProtocolTool.OutputSchema.Value.TryGetProperty("properties", out var properties));
+ Assert.True(properties.TryGetProperty("custom", out _));
+ // Should not have Person's properties
+ Assert.False(properties.TryGetProperty("name", out _));
+ }
+
+ [Fact]
+ public void OutputSchema_Options_Clone_PreservesValue()
+ {
+ // Verify that Clone() preserves the OutputSchema property
+ JsonElement outputSchema = JsonDocument.Parse("""{"type":"object","properties":{"x":{"type":"integer"}}}""").RootElement;
+ McpServerTool tool1 = McpServerTool.Create(() => "result", new()
+ {
+ Name = "tool1",
+ UseStructuredContent = true,
+ OutputSchema = outputSchema,
+ });
+
+ // The output schema should be present since we set it
+ Assert.NotNull(tool1.ProtocolTool.OutputSchema);
+ Assert.True(tool1.ProtocolTool.OutputSchema.Value.TryGetProperty("properties", out var props));
+ Assert.True(props.TryGetProperty("x", out _));
+ }
+
+ [Fact]
+ public async Task OutputSchema_Options_PersonType_WithCallToolResult()
+ {
+ // Create output schema from Person type, tool returns CallToolResult with matching structured content
+ JsonSerializerOptions serializerOptions = new() { TypeInfoResolver = new DefaultJsonTypeInfoResolver() };
+ JsonElement outputSchema = AIJsonUtilities.CreateJsonSchema(typeof(Person), serializerOptions: serializerOptions);
+ Person person = new("Alice", 30);
+ JsonElement structuredContent = JsonSerializer.SerializeToElement(person, serializerOptions);
+ McpServerTool tool = McpServerTool.Create(() => new CallToolResult()
+ {
+ Content = [new TextContentBlock { Text = "Alice, 30" }],
+ StructuredContent = structuredContent,
+ }, new()
+ {
+ Name = "tool",
+ UseStructuredContent = true,
+ OutputSchema = outputSchema,
+ SerializerOptions = serializerOptions,
+ });
+ var mockServer = new Mock();
+ var request = new RequestContext(mockServer.Object, CreateTestJsonRpcRequest())
+ {
+ Params = new CallToolRequestParams { Name = "tool" },
+ };
+
+ var result = await tool.InvokeAsync(request, TestContext.Current.CancellationToken);
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.NotNull(result.StructuredContent);
+ AssertMatchesJsonSchema(tool.ProtocolTool.OutputSchema.Value, result.StructuredContent);
+ }
+
+ [Fact]
+ public async Task OutputSchema_Options_OverridesReturnTypeSchema_InvokeAndValidate()
+ {
+ // OutputSchema overrides return type schema; result should match the original return type, but schema is the override
+ JsonSerializerOptions serializerOptions = new() { TypeInfoResolver = new DefaultJsonTypeInfoResolver() };
+ JsonElement outputSchema = AIJsonUtilities.CreateJsonSchema(typeof(Person), serializerOptions: serializerOptions);
+ McpServerTool tool = McpServerTool.Create(() => new Person("Bob", 25), new()
+ {
+ Name = "tool",
+ UseStructuredContent = true,
+ OutputSchema = outputSchema,
+ SerializerOptions = serializerOptions,
+ });
+ var mockServer = new Mock();
+ var request = new RequestContext(mockServer.Object, CreateTestJsonRpcRequest())
+ {
+ Params = new CallToolRequestParams { Name = "tool" },
+ };
+
+ var result = await tool.InvokeAsync(request, TestContext.Current.CancellationToken);
+
+ Assert.NotNull(tool.ProtocolTool.OutputSchema);
+ Assert.NotNull(result.StructuredContent);
+ AssertMatchesJsonSchema(tool.ProtocolTool.OutputSchema.Value, result.StructuredContent);
+ }
+
+ [McpServerTool(UseStructuredContent = true, OutputSchema = typeof(Person))]
+ private static CallToolResult ToolWithOutputSchemaAttribute()
+ {
+ var person = new Person("John", 27);
+ return new CallToolResult()
+ {
+ Content = [new TextContentBlock { Text = $"{person.Name}, {person.Age}" }],
+ StructuredContent = JsonSerializer.SerializeToElement(person, McpJsonUtilities.DefaultOptions),
+ };
+ }
+
+ [McpServerTool(UseStructuredContent = true, OutputSchema = typeof(Person))]
+ private static CallToolResult ToolWithOutputSchemaReturningCallToolResult()
+ {
+ var person = new Person("John", 27);
+ return new CallToolResult()
+ {
+ Content = [new TextContentBlock { Text = $"{person.Name}, {person.Age}" }],
+ StructuredContent = JsonSerializer.SerializeToElement(person, McpJsonUtilities.DefaultOptions),
+ };
+ }
+
+ [McpServerTool(UseStructuredContent = false, OutputSchema = typeof(Person))]
+ private static CallToolResult ToolWithOutputSchemaButNoStructuredContent()
+ {
+ return new CallToolResult()
+ {
+ Content = [new TextContentBlock { Text = "result" }],
+ };
+ }
+
[Theory]
[InlineData(JsonNumberHandling.Strict)]
[InlineData(JsonNumberHandling.AllowReadingFromString)]
From 7893edc8c0f8c79df99616fa91ce51844f706dbf Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Mar 2026 03:13:35 +0000
Subject: [PATCH 3/5] Remove accidentally committed full.xml build artifact
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
---
full.xml | 5447 ------------------------------------------------------
1 file changed, 5447 deletions(-)
delete mode 100644 full.xml
diff --git a/full.xml b/full.xml
deleted file mode 100644
index eb72d97f2..000000000
--- a/full.xml
+++ /dev/null
@@ -1,5447 +0,0 @@
-
-
-
-
-
- <_AfterSdkPublishDependsOn Condition="'$(UsingMicrosoftNETSdkWeb)' == 'true'">AfterPublish
- <_AfterSdkPublishDependsOn Condition="'$(UsingMicrosoftNETSdkWeb)' != 'true'">Publish
-
-
-
-
- true
-
- true
- $(CustomAfterDirectoryBuildProps);$(MSBuildThisFileDirectory)UseArtifactsOutputPath.props
-
-
- $(ProjectExtensionsPathForSpecifiedProject)
-
-
-
-
-
- true
- true
- true
- true
- true
-
-
-
- <_DirectoryBuildPropsFile Condition="'$(_DirectoryBuildPropsFile)' == ''">Directory.Build.props
- <_DirectoryBuildPropsBasePath Condition="'$(_DirectoryBuildPropsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), '$(_DirectoryBuildPropsFile)'))
- $([System.IO.Path]::Combine('$(_DirectoryBuildPropsBasePath)', '$(_DirectoryBuildPropsFile)'))
-
-
-
-
-
- preview
- true
- enable
- enable
- false
- false
-
- false
-
-
-
-
- Debug
- $([System.IO.Path]::GetFullPath('$(MSBuildThisFileDirectory)'))
- $([MSBuild]::NormalizeDirectory('$(RepoRoot)', 'artifacts'))
- $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'obj'))
- $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'bin'))
- $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'TestResults', '$(Configuration)'))
- $([MSBuild]::NormalizeDirectory('$(ArtifactsDir)', 'packages', '$(Configuration)'))
- $(MSBuildProjectName)
- $([System.IO.Path]::GetFullPath('$(ArtifactsObjDir)$(OutDirName)\'))
- $(BaseIntermediateOutputPath)$(Configuration)\
- $([System.IO.Path]::GetFullPath('$(ArtifactsBinDir)$(OutDirName)\'))
- $(BaseOutputPath)$(Configuration)\
- $(ArtifactsPackagesDir)
-
-
- trx%3bLogFileName=$(MSBuildProjectName).$(TargetFramework).$(OS).trx
- $(ArtifactsTestResultsDir)
-
-
- true
-
-
-
- true
-
-
-
- net10.0;net9.0;net8.0
- $(DefaultTestTargetFrameworks);net472
-
-
-
- https://csharp.sdk.modelcontextprotocol.io
- https://github.com/modelcontextprotocol/csharp-sdk
- git
- 1.1.0
- ModelContextProtocol
- © Model Context Protocol a Series of LF Projects, LLC.
- ModelContextProtocol;mcp;ai;llm
- Apache-2.0
- logo.png
- true
- snupkg
- true
- $(RepoRoot)\Open.snk
- true
- true
- 1.0.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
- $(MSBuildProjectName)
-
-
- $(ArtifactsPath)\obj\$(ArtifactsProjectName)\
- $(ArtifactsPath)\obj\
-
-
-
- <_ArtifactsPathSetEarly>true
-
-
-
-
-
- obj\
- $(BaseIntermediateOutputPath)\
- <_InitialBaseIntermediateOutputPath>$(BaseIntermediateOutputPath)
- $(BaseIntermediateOutputPath)
-
- $([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(MSBuildProjectExtensionsPath)'))
- $(MSBuildProjectExtensionsPath)\
-
- false
- true
- <_InitialMSBuildProjectExtensionsPath Condition=" '$(ImportProjectExtensionProps)' == 'true' ">$(MSBuildProjectExtensionsPath)
-
-
-
- True
- NuGet
- $(MSBuildThisFileDirectory)project.assets.json
- /home/runner/.nuget/packages/
- /home/runner/.nuget/packages/
- PackageReference
- 7.0.0
-
-
-
-
-
-
-
-
-
-
- <_MicrosoftSourceLinkCommonAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\net472\Microsoft.SourceLink.Common.dll
- <_MicrosoftSourceLinkCommonAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\core\Microsoft.SourceLink.Common.dll
-
-
-
- true
-
- true
-
-
-
-
-
-
-
-
- $(MSBuildThisFileDirectory)..\tools\net472\Microsoft.Build.Tasks.Git.dll
- $(MSBuildThisFileDirectory)..\tools\core\Microsoft.Build.Tasks.Git.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- /home/runner/.nuget/packages/microsoft.sourcelink.common/8.0.0
- /home/runner/.nuget/packages/microsoft.build.tasks.git/8.0.0
- /home/runner/.nuget/packages/microsoft.sourcelink.github/8.0.0
- /home/runner/.nuget/packages/microsoft.net.illink.tasks/10.0.2
-
-
- /home/runner/.nuget/packages/microsoft.sourcelink.common/8.0.0
- /home/runner/.nuget/packages/microsoft.build.tasks.git/8.0.0
- /home/runner/.nuget/packages/microsoft.sourcelink.github/8.0.0
- /home/runner/.nuget/packages/microsoft.net.illink.tasks/8.0.23
-
-
- /home/runner/.nuget/packages/microsoft.sourcelink.common/8.0.0
- /home/runner/.nuget/packages/microsoft.build.tasks.git/8.0.0
- /home/runner/.nuget/packages/microsoft.sourcelink.github/8.0.0
- /home/runner/.nuget/packages/microsoft.net.illink.tasks/9.0.12
-
-
- /home/runner/.nuget/packages/microsoft.sourcelink.common/8.0.0
- /home/runner/.nuget/packages/microsoft.build.tasks.git/8.0.0
- /home/runner/.nuget/packages/microsoft.sourcelink.github/8.0.0
-
-
-
-
-
-
- $(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.$(MSBuildThisFile)
- $(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.After.$(MSBuildThisFile)
-
-
-
-
- true
-
-
- $(DefaultProjectConfiguration)
- $(DefaultProjectPlatform)
-
-
- WJProject
- JavaScript
-
-
-
-
-
-
-
- $([MSBuild]::IsRunningFromVisualStudio())
- $([MSBuild]::GetToolsDirectory32())\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.props
- $(MSBuildToolsPath)\NuGet.props
-
-
-
-
-
- true
-
-
-
- <_DirectoryPackagesPropsFile Condition="'$(_DirectoryPackagesPropsFile)' == ''">Directory.Packages.props
- <_DirectoryPackagesPropsBasePath Condition="'$(_DirectoryPackagesPropsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove('$(MSBuildProjectDirectory)', '$(_DirectoryPackagesPropsFile)'))
- $([MSBuild]::NormalizePath('$(_DirectoryPackagesPropsBasePath)', '$(_DirectoryPackagesPropsFile)'))
-
-
-
- true
- 8.0.22
- 9.0.11
- 10.0.3
- 10.3.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- runtime; build; native; contentfiles; analyzers; buildtransitive
- all
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
-
-
-
-
-
-
- true
-
-
-
- Debug;Release
- AnyCPU
- Debug
- AnyCPU
-
-
-
-
- true
-
-
-
- Library
- 512
- prompt
- $(MSBuildProjectName)
- $(MSBuildProjectName.Replace(" ", "_"))
- true
-
-
-
- true
- false
-
-
- true
-
-
-
-
- <_PlatformWithoutConfigurationInference>$(Platform)
-
-
- x64
-
-
- x86
-
-
- ARM
-
-
- arm64
-
-
-
-
- {CandidateAssemblyFiles}
- $(AssemblySearchPaths);{HintPathFromItem}
- $(AssemblySearchPaths);{TargetFrameworkDirectory}
- $(AssemblySearchPaths);{RawFileName}
-
-
- None
- portable
-
- false
-
- true
- true
-
- PackageReference
- $(AssemblySearchPaths)
- false
- false
- false
- false
- false
- false
-
- false
- false
- false
- false
- true
- 1.0.3
- false
- true
- true
-
-
-
- <_ImplicitFileBasedProgramUserSecretsId Condition="'$(FileBasedProgram)' == 'true'">$(MSBuildProjectName)-$([MSBuild]::StableStringHash($(MSBuildProjectFullPath.ToLowerInvariant()), 'Sha256'))
- $(_ImplicitFileBasedProgramUserSecretsId)
-
-
-
- $(MSBuildThisFileDirectory)GenerateDeps\GenerateDeps.proj
-
-
-
-
-
- $(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledVersions.props
-
-
-
-
- $([MSBuild]::NormalizePath('$(MSBuildThisFileDirectory)../../'))
- $([MSBuild]::EnsureTrailingSlash('$(NetCoreRoot)'))packs
- $([MSBuild]::EnsureTrailingSlash('$(MSBuildThisFileDirectory)'))PrunePackageData
- <_NetFrameworkHostedCompilersVersion>5.0.0-2.25612.105
- 10.0
- 10.0
- 10.0.2
- 2.1
- 2.1.0
- 10.0.2-servicing.25612.105
- $(MSBuildThisFileDirectory)RuntimeIdentifierGraph.json
- 10.0.102
- 10.0.100
- linux-x64
- linux-x64
- <_NETCoreSdkIsPreview>false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_KnownRuntimeIdentiferPlatforms Include="any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix;any;aot;freebsd;illumos;solaris;unix" />
- <_ExcludedKnownRuntimeIdentiferPlatforms Include="rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;rhel.6;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0;tizen.4.0.0;tizen.5.0.0" />
-
-
-
- $(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledMSBuildInformation.props
-
-
-
-
- 17.14.0
- 18.0.7
- <_MSBuildVersionMajorMinor>$([System.Version]::Parse('$(MSBuildVersion)').ToString(2))
- <_IsDisjointMSBuildVersion>$([MSBuild]::VersionLessThan('$(_MSBuildVersionMajorMinor)', '18.0'))
-
-
-
-
- false
-
-
- <__WindowsAppSdkDefaultImageIncludes>**/*.png;**/*.bmp;**/*.jpg;**/*.dds;**/*.tif;**/*.tga;**/*.gif
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <__DisableWorkloadResolverSentinelPath Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildBinPath)\DisableWorkloadResolver.sentinel
- <__DisableWorkloadResolverSentinelPath Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildToolsPath32)\SdkResolvers\Microsoft.DotNet.MSBuildSdkResolver\DisableWorkloadResolver.sentinel
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $([MSBuild]::Add($(NETCoreAppMaximumVersion), 1)).0
- 17.16
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_NormalizedWindowsSdkSupportedTargetPlatformVersion Include="@(WindowsSdkSupportedTargetPlatformVersion)">
- $([System.Text.RegularExpressions.Regex]::Replace(%(Identity), '^((\d+\.){3})1$', '${1}0'))
-
-
-
-
-
-
-
-
- true
- <_SourceLinkPropsImported>true
-
-
-
-
-
- $(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.Build.Tasks.Git.dll
- $(MSBuildThisFileDirectory)..\tools\net\Microsoft.Build.Tasks.Git.dll
-
-
-
-
-
- <_MicrosoftSourceLinkCommonAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.Common.dll
- <_MicrosoftSourceLinkCommonAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.Common.dll
-
-
-
- true
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 1701;1702
-
- $(WarningsAsErrors);NU1605
-
-
- $(DefineConstants);
- $(DefineConstants)TRACE
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(TargetsForTfmSpecificContentInPackage);_PackProjectToolValidation
-
-
-
-
-
- MSBuild:Compile
- $(DefaultXamlRuntime)
- Designer
-
-
- MSBuild:Compile
- $(DefaultXamlRuntime)
- Designer
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_WpfCommonNetFxReference Include="WindowsBase" />
- <_WpfCommonNetFxReference Include="PresentationCore" />
- <_WpfCommonNetFxReference Include="PresentationFramework" />
- <_WpfCommonNetFxReference Include="System.Xaml" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'">
- 4.0
-
- <_WpfCommonNetFxReference Include="UIAutomationClient" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
- <_WpfCommonNetFxReference Include="UIAutomationClientSideProviders" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
- <_WpfCommonNetFxReference Include="UIAutomationProvider" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
- <_WpfCommonNetFxReference Include="UIAutomationTypes" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
- <_WpfCommonNetFxReference Include="System.Windows.Controls.Ribbon" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.5'" />
-
-
- <_SDKImplicitReference Include="@(_WpfCommonNetFxReference)" Condition="'$(UseWPF)' == 'true'" />
- <_SDKImplicitReference Include="System.Windows.Forms" Condition="('$(UseWindowsForms)' == 'true') " />
- <_SDKImplicitReference Include="WindowsFormsIntegration" Condition=" ('$(UseWindowsForms)' == 'true') And ('$(UseWPF)' == 'true') " />
-
-
-
-
-
- <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.0" />
- <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.1" />
- <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.0" />
- <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.1" />
- <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.2" />
-
- <_UnsupportedNETStandardTargetFramework Include="@(SupportedNETStandardTargetFramework)" />
-
- <_UnsupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v2.0" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
- <_TargetFrameworkVersionValue>0.0
- <_WindowsDesktopSdkTargetFrameworkVersionFloor>3.0
-
-
-
-
-
-
-
- net10.0;net9.0;net8.0;netstandard2.0
- true
- true
- ModelContextProtocol.Core
- Core .NET SDK for the Model Context Protocol (MCP)
- README.md
-
- $(NoWarn);MCPEXP001
-
-
- true
-
-
-
- $(NoWarn);CS0436
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
- Debug
- AnyCPU
- $(Platform)
-
-
-
-
- 1.0.0
- $(VersionPrefix)-$(VersionSuffix)
- $(VersionPrefix)
-
-
- $(AssemblyName)
- $(Authors)
- $(AssemblyName)
- $(AssemblyName)
-
-
-
-
-
-
-
- true
- false
- true
- <_PlatformToAppendToOutputPath Condition="'$(AppendPlatformToOutputPath)' == 'true'">$(PlatformName)\
-
-
-
-
-
-
-
- <_DefaultArtifactsPathPropsImported>true
-
-
-
- true
- true
- <_ArtifactsPathLocationType>ExplicitlySpecified
-
-
-
-
- $(_DirectoryBuildPropsBasePath)\artifacts
- true
- <_ArtifactsPathLocationType>DirectoryBuildPropsFolder
-
-
-
- $(MSBuildProjectDirectory)\artifacts
- <_ArtifactsPathLocationType>ProjectFolder
-
-
-
- $(MSBuildProjectName)
- bin
- publish
- package
-
- true
-
-
- $(Configuration.ToLowerInvariant())
-
- $(ArtifactsPivots)_$(TargetFramework.ToLowerInvariant())
-
- $(ArtifactsPivots)_$(RuntimeIdentifier.ToLowerInvariant())
-
-
-
- $(ArtifactsPath)\$(ArtifactsBinOutputName)\$(ArtifactsProjectName)\
- $(ArtifactsPath)\obj\$(ArtifactsProjectName)\
- $(ArtifactsPath)\$(ArtifactsPublishOutputName)\$(ArtifactsProjectName)\$(ArtifactsPivots)\
-
-
-
- $(ArtifactsPath)\$(ArtifactsBinOutputName)\
- $(ArtifactsPath)\obj\
- $(ArtifactsPath)\$(ArtifactsPublishOutputName)\$(ArtifactsPivots)\
-
-
- $(BaseOutputPath)$(ArtifactsPivots)\
- $(BaseIntermediateOutputPath)$(ArtifactsPivots)\
-
- $(ArtifactsPath)\$(ArtifactsPackageOutputName)\$(Configuration.ToLowerInvariant())\
-
-
- bin\
- $(BaseOutputPath)\
- $(BaseOutputPath)$(_PlatformToAppendToOutputPath)$(Configuration)\
- $(OutputPath)\
-
-
-
- obj\
- $(BaseIntermediateOutputPath)\
- $(BaseIntermediateOutputPath)$(_PlatformToAppendToOutputPath)$(Configuration)\
- $(IntermediateOutputPath)\
-
-
-
- $(OutputPath)
-
-
-
- $(DefaultItemExcludes);$(OutputPath)/**
- $(DefaultItemExcludes);$(IntermediateOutputPath)/**
-
-
- $(DefaultItemExcludes);$(ArtifactsPath)/**
-
- $(DefaultItemExcludes);bin/**;obj/**
-
-
-
- $(OutputPath)$(TargetFramework.ToLowerInvariant())\
-
-
- $(IntermediateOutputPath)$(TargetFramework.ToLowerInvariant())\
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(MSBuildToolsPath)\Microsoft.CSharp.targets
- $(MSBuildToolsPath)\Microsoft.VisualBasic.targets
- $(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.FSharpTargetsShim.targets
-
- $(MSBuildToolsPath)\Microsoft.Common.targets
-
-
-
-
-
-
-
- $(MSBuildToolsPath)\Microsoft.CSharp.CrossTargeting.targets
-
-
-
-
- $(MSBuildToolsPath)\Microsoft.CSharp.CurrentVersion.targets
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
- $(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed\Microsoft.CSharp.DesignTime.targets
-
-
-
-
-
- true
- true
-
-
-
-
-
-
-
-
-
-
- <_ThisProjectBuildMetadata Include="$(MSBuildProjectFullPath)">
- @(_TargetFrameworkInfo)
- @(_TargetFrameworkInfo->'%(TargetFrameworkMonikers)')
- @(_TargetFrameworkInfo->'%(TargetPlatformMonikers)')
- $(_AdditionalPropertiesFromProject)
- false
- @(_TargetFrameworkInfo->'%(IsRidAgnostic)')
-
-
- false
- $(Platform)
- $(Platforms)
-
-
-
-
-
- <_TargetFramework Include="$(TargetFrameworks)" />
-
- <_TargetFrameworkNormalized Include="@(_TargetFramework->Trim()->Distinct())" />
- <_InnerBuildProjects Include="$(MSBuildProjectFile)">
- TargetFramework=%(_TargetFrameworkNormalized.Identity)
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
- Build
-
-
-
-
-
-
-
-
-
-
-
- $([MSBuild]::IsRunningFromVisualStudio())
- $([MSBuild]::GetToolsDirectory32())\..\..\..\Common7\IDE\CommonExtensions\Microsoft\NuGet\NuGet.targets
- $(MSBuildToolsPath)\NuGet.targets
-
-
-
-
-
- true
-
- NuGet.Build.Tasks.dll
-
- false
-
- true
- true
-
- false
-
- WarnAndContinue
-
- $(BuildInParallel)
- true
-
- <_RestoreSolutionFileUsed Condition=" '$(_RestoreSolutionFileUsed)' == '' AND '$(SolutionDir)' != '' AND $(MSBuildProjectFullPath.EndsWith('.metaproj')) == 'true' ">true
-
- $(MSBuildInteractive)
-
- true
-
- true
-
- <_CentralPackageVersionsEnabled Condition="'$(ManagePackageVersionsCentrally)' == 'true' AND '$(CentralPackageVersionsFileImported)' == 'true'">true
-
-
-
-
- true
-
- low
-
- all
- direct
-
-
-
-
- true
- false
- true
- false
-
-
-
- <_GenerateRestoreGraphProjectEntryInputProperties>ExcludeRestorePackageImports=true
-
- <_GenerateRestoreGraphProjectEntryInputProperties Condition=" '$(RestoreUseCustomAfterTargets)' == 'true' ">
- $(_GenerateRestoreGraphProjectEntryInputProperties);
- NuGetRestoreTargets=$(MSBuildThisFileFullPath);
- RestoreUseCustomAfterTargets=$(RestoreUseCustomAfterTargets);
- CustomAfterMicrosoftCommonCrossTargetingTargets=$(MSBuildThisFileFullPath);
- CustomAfterMicrosoftCommonTargets=$(MSBuildThisFileFullPath);
-
-
- <_GenerateRestoreGraphProjectEntryInputProperties Condition=" '$(_RestoreSolutionFileUsed)' == 'true' ">
- $(_GenerateRestoreGraphProjectEntryInputProperties);
- _RestoreSolutionFileUsed=true;
- SolutionDir=$(SolutionDir);
- SolutionName=$(SolutionName);
- SolutionFileName=$(SolutionFileName);
- SolutionPath=$(SolutionPath);
- SolutionExt=$(SolutionExt);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(ContinueOnError)
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(ContinueOnError)
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(ContinueOnError)
- false
-
-
-
-
-
-
-
-
-
-
-
-
- <_FrameworkReferenceForRestore Include="@(FrameworkReference)" Condition="'%(FrameworkReference.IsTransitiveFrameworkReference)' != 'true'" />
-
-
-
-
-
-
- $(ContinueOnError)
- false
-
-
-
-
-
-
-
-
-
-
-
-
- $(ContinueOnError)
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- exclusionlist
-
-
-
- <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" Condition=" '%(RestoreGraphProjectInputItems.Extension)' == '.csproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.vbproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.fsproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.nuproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.proj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.msbuildproj' Or
'%(RestoreGraphProjectInputItems.Extension)' == '.vcxproj' " />
-
-
-
- <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" Condition=" '%(RestoreGraphProjectInputItems.Extension)' != '.metaproj'
AND '%(RestoreGraphProjectInputItems.Extension)' != '.shproj'
AND '%(RestoreGraphProjectInputItems.Extension)' != '.vcxitems'
AND '%(RestoreGraphProjectInputItems.Extension)' != '.vdproj'
AND '%(RestoreGraphProjectInputItems.Extension)' != '' " />
-
-
-
- <_FilteredRestoreGraphProjectInputItemsTmp Include="@(RestoreGraphProjectInputItems)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_GenerateRestoreGraphProjectEntryInput Include="@(FilteredRestoreGraphProjectInputItems)" Condition=" '$(RestoreRecursive)' != 'true' " />
- <_GenerateRestoreGraphProjectEntryInput Include="@(_RestoreProjectPathItems)" Condition=" '$(RestoreRecursive)' == 'true' " />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())" Condition=" '$(RestoreProjectStyle)' != 'Unknown' ">
- RestoreSpec
- $(MSBuildProjectFullPath)
-
-
-
-
-
-
- netcoreapp1.0
-
-
-
-
-
-
-
-
-
-
- <_HasPackageReferenceItems Condition="'@(PackageReference)' != ''">true
-
-
- <_HasPackageReferenceItems Condition="@(PackageReference->Count()) > 0">true
-
-
-
-
-
-
- <_HasPackageReferenceItems />
-
-
-
-
-
- true
-
-
-
-
-
- <_RestoreProjectFramework />
- <_TargetFrameworkToBeUsed Condition=" '$(_TargetFrameworkOverride)' == '' ">$(TargetFrameworks)
-
-
-
-
-
- <_RestoreTargetFrameworksOutputFiltered Include="$(_RestoreProjectFramework.Split(';'))" />
-
-
-
-
-
- <_RestoreTargetFrameworkItems Include="$(TargetFrameworks.Split(';'))" />
-
-
- <_RestoreTargetFrameworkItems Include="$(_TargetFrameworkOverride)" />
-
-
-
-
-
- $(SolutionDir)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_RestoreSettingsPerFramework Include="$([System.Guid]::NewGuid())">
- $(RestoreAdditionalProjectSources)
- $(RestoreAdditionalProjectFallbackFolders)
- $(RestoreAdditionalProjectFallbackFoldersExcludes)
-
-
-
-
-
-
-
- $(MSBuildProjectExtensionsPath)
-
-
-
-
-
-
- <_RestoreProjectName>$(MSBuildProjectName)
- <_RestoreProjectName Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(AssemblyName)' != '' ">$(AssemblyName)
- <_RestoreProjectName Condition=" '$(PackageReferenceCompatibleProjectStyle)' == 'true' AND '$(PackageId)' != '' ">$(PackageId)
-
-
-
- <_RestoreProjectVersion>1.0.0
- <_RestoreProjectVersion Condition=" '$(Version)' != '' ">$(Version)
- <_RestoreProjectVersion Condition=" '$(PackageVersion)' != '' ">$(PackageVersion)
-
-
-
- <_RestoreCrossTargeting>true
-
-
-
- <_RestoreSkipContentFileWrite Condition=" '$(TargetFrameworks)' == '' AND '$(TargetFramework)' == '' ">true
-
-
-
- <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
- ProjectSpec
- $(_RestoreProjectVersion)
- $(MSBuildProjectFullPath)
- $(MSBuildProjectFullPath)
- $(_RestoreProjectName)
- $(_OutputSources)
- $(_OutputFallbackFolders)
- $(_OutputPackagesPath)
- $(RestoreProjectStyle)
- $(RestoreOutputAbsolutePath)
- $(RuntimeIdentifiers);$(RuntimeIdentifier)
- $(RuntimeSupports)
- $(_RestoreCrossTargeting)
- $(RestoreLegacyPackagesDirectory)
- $(ValidateRuntimeIdentifierCompatibility)
- $(_RestoreSkipContentFileWrite)
- $(_OutputConfigFilePaths)
- $(TreatWarningsAsErrors)
- $(WarningsAsErrors)
- $(WarningsNotAsErrors)
- $(NoWarn)
- $(RestorePackagesWithLockFile)
- $(NuGetLockFilePath)
- $(RestoreLockedMode)
- <_CentralPackageVersionsEnabled>$(_CentralPackageVersionsEnabled)
- $(CentralPackageFloatingVersionsEnabled)
- $(CentralPackageVersionOverrideEnabled)
- $(CentralPackageTransitivePinningEnabled)
- $(NuGetAudit)
- $(NuGetAuditLevel)
- $(NuGetAuditMode)
- $(SdkAnalysisLevel)
- $(UsingMicrosoftNETSdk)
- $(RestoreUseLegacyDependencyResolver)
-
-
-
-
- <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
- ProjectSpec
- $(MSBuildProjectFullPath)
- $(MSBuildProjectFullPath)
- $(_RestoreProjectName)
- $(RestoreProjectStyle)
- $(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config
- $(MSBuildProjectDirectory)\packages.config
- $(RestorePackagesWithLockFile)
- $(NuGetLockFilePath)
- $(RestoreLockedMode)
- $(_OutputSources)
- $(SolutionDir)
- $(_OutputRepositoryPath)
- $(_OutputConfigFilePaths)
- $(_OutputPackagesPath)
- @(_RestoreTargetFrameworksOutputFiltered)
- $(NuGetAudit)
- $(NuGetAuditLevel)
-
-
-
-
- <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
- ProjectSpec
- $(MSBuildProjectFullPath)
- $(MSBuildProjectFullPath)
- $(_RestoreProjectName)
- $(RestoreProjectStyle)
- @(_RestoreTargetFrameworksOutputFiltered)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_RestoreGraphEntry Include="$([System.Guid]::NewGuid())">
- TargetFrameworkInformation
- $(MSBuildProjectFullPath)
- $(PackageTargetFallback)
- $(AssetTargetFallback)
- $(TargetFramework)
- $(TargetFrameworkIdentifier)
- $(TargetFrameworkVersion)
- $(TargetFrameworkMoniker)
- $(TargetFrameworkProfile)
- $(TargetPlatformMoniker)
- $(TargetPlatformIdentifier)
- $(TargetPlatformVersion)
- $(TargetPlatformMinVersion)
- $(CLRSupport)
- $(RuntimeIdentifierGraphPath)
- $(WindowsTargetPlatformMinVersion)
- $(RestoreEnablePackagePruning)
- $(RestorePackagePruningDefault)
- $(NuGetAuditMode)
-
-
-
-
-
-
-
-
-
-
-
-
- <_RestoreProjectPathItems Include="$(_RestoreGraphAbsoluteProjectPaths)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_GenerateRestoreProjectPathWalkOutputs Include="$(MSBuildProjectFullPath)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_RestorePackagesPathOverride>$(RestorePackagesPath)
-
-
-
-
-
- <_RestorePackagesPathOverride>$(RestoreRepositoryPath)
-
-
-
-
-
- <_RestoreSourcesOverride>$(RestoreSources)
-
-
-
-
-
- <_RestoreFallbackFoldersOverride>$(RestoreFallbackFolders)
-
-
-
-
-
-
-
-
-
-
-
-
- <_TargetFrameworkOverride Condition=" '$(TargetFrameworks)' == '' ">$(TargetFramework)
-
-
-
-
-
- <_ValidProjectsForRestore Include="$(MSBuildProjectFullPath)" />
-
-
-
-
-
-
-
-
- true
-
-
-
-
- $(MSBuildExtensionsPath)\Microsoft.TestPlatform.Build.dll
- $(MSBuildAllProjects);$(MSBuildThisFileFullPath)
-
-
-
-
-
-
- <_TestTfmsInParallel>$([MSBuild]::ValueOrDefault('$(TestTfmsInParallel)', '$(BuildInParallel)'))
-
-
- <_TargetFramework Include="$(TargetFrameworks)" />
- <_ProjectToTestWithTFM Include="$(MSBuildProjectFile)" Properties="TargetFramework=%(_TargetFramework.Identity);VSTestNoBuild=true" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- VSTest
-
-
-
-
-
-
-
-
-
-
- false
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(RepositoryUrl)
- $(ScmRepositoryUrl)
-
-
-
- %(SourceRoot.ScmRepositoryUrl)
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
- local
-
-
-
-
-
-
-
-
-
-
- git
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_SourceLinkGitHubAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\net472\Microsoft.SourceLink.GitHub.dll
- <_SourceLinkGitHubAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\core\Microsoft.SourceLink.GitHub.dll
-
-
-
-
- $(SourceLinkUrlInitializerTargets);_InitializeGitHubSourceLinkUrl
- $(SourceControlManagerUrlTranslationTargets);TranslateGitHubUrlsInSourceControlInformation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
- <_DirectoryBuildTargetsFile Condition="'$(_DirectoryBuildTargetsFile)' == ''">Directory.Build.targets
- <_DirectoryBuildTargetsBasePath Condition="'$(_DirectoryBuildTargetsBasePath)' == ''">$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildProjectDirectory), '$(_DirectoryBuildTargetsFile)'))
- $([System.IO.Path]::Combine('$(_DirectoryBuildTargetsBasePath)', '$(_DirectoryBuildTargetsFile)'))
-
-
-
- false
-
-
-
-
-
-
-
-
- TargetFramework
- TargetFrameworks
-
-
- true
-
-
-
-
-
-
-
-
- <_MainReferenceTargetForBuild Condition="'$(BuildProjectReferences)' == '' or '$(BuildProjectReferences)' == 'true'">.projectReferenceTargetsOrDefaultTargets
- <_MainReferenceTargetForBuild Condition="'$(_MainReferenceTargetForBuild)' == ''">GetTargetPath
- $(_MainReferenceTargetForBuild);GetNativeManifest;$(_RecursiveTargetForContentCopying);$(ProjectReferenceTargetsForBuild)
-
- <_MainReferenceTargetForPublish Condition="'$(NoBuild)' == 'true'">GetTargetPath
- <_MainReferenceTargetForPublish Condition="'$(NoBuild)' != 'true'">$(_MainReferenceTargetForBuild)
- GetTargetFrameworks;$(_MainReferenceTargetForPublish);GetNativeManifest;GetCopyToPublishDirectoryItems;$(ProjectReferenceTargetsForPublish)
-
- $(ProjectReferenceTargetsForBuild);$(ProjectReferenceTargetsForPublish)
- $(ProjectReferenceTargetsForRebuild);$(ProjectReferenceTargetsForPublish)
- GetCopyToPublishDirectoryItems;$(ProjectReferenceTargetsForGetCopyToPublishDirectoryItems)
-
-
- .default;$(ProjectReferenceTargetsForBuild)
-
-
- Clean;$(ProjectReferenceTargetsForClean)
- $(ProjectReferenceTargetsForClean);$(ProjectReferenceTargetsForBuild);$(ProjectReferenceTargetsForRebuild)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(MSBuildThisFileDirectory)..\tools\
- net10.0
- net472
- $(MicrosoftNETBuildTasksDirectoryRoot)$(MicrosoftNETBuildTasksTFM)\
- $(MicrosoftNETBuildTasksDirectory)Microsoft.NET.Build.Tasks.dll
-
- Microsoft.NETCore.App;NETStandard.Library
-
-
-
- <_IsExecutable Condition="'$(OutputType)' == 'Exe' or '$(OutputType)'=='WinExe'">true
- $(_IsExecutable)
-
-
-
- netcoreapp2.2
-
-
- Preview
-
-
-
-
-
-
- $(NuGetPackageRoot)\microsoft.net.sdk.compilers.toolset\$(NETCoreSdkVersion)
- $(RoslynTargetsPath)\Microsoft.Build.Tasks.CodeAnalysis.dll
- <_NeedToDownloadMicrosoftNetSdkCompilersToolsetPackage>true
- <_MicrosoftNetSdkCompilersToolsetPackageRootEmpty Condition="'$(NuGetPackageRoot)' == ''">true
-
-
-
-
-
-
-
-
- <_SourceLinkSdkSubDir>build
- <_SourceLinkSdkSubDir Condition="'$(IsCrossTargetingBuild)' == 'true'">buildMultiTargeting
-
- true
-
-
-
-
-
-
-
- local
-
-
-
-
-
-
-
-
-
-
-
- git
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(RepositoryUrl)
- $(ScmRepositoryUrl)
-
-
-
- %(SourceRoot.ScmRepositoryUrl)
-
-
-
-
-
-
-
- true
-
-
-
-
-
- <_SourceLinkGitHubAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.GitHub.dll
- <_SourceLinkGitHubAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.GitHub.dll
-
-
-
-
- $(SourceLinkUrlInitializerTargets);_InitializeGitHubSourceLinkUrl
- $(SourceControlManagerUrlTranslationTargets);TranslateGitHubUrlsInSourceControlInformation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_SourceLinkGitLabAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.GitLab.dll
- <_SourceLinkGitLabAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.GitLab.dll
-
-
-
-
- $(SourceLinkUrlInitializerTargets);_InitializeGitLabSourceLinkUrl
- $(SourceControlManagerUrlTranslationTargets);TranslateGitLabUrlsInSourceControlInformation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_SourceLinkAzureReposGitAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.AzureRepos.Git.dll
- <_SourceLinkAzureReposGitAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.AzureRepos.Git.dll
-
-
-
-
- $(SourceLinkUrlInitializerTargets);_InitializeAzureReposGitSourceLinkUrl
- $(SourceControlManagerUrlTranslationTargets);TranslateAzureReposGitUrlsInSourceControlInformation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_SourceLinkBitbucketAssemblyFile Condition="'$(MSBuildRuntimeType)' != 'Core'">$(MSBuildThisFileDirectory)..\tools\netframework\Microsoft.SourceLink.Bitbucket.Git.dll
- <_SourceLinkBitbucketAssemblyFile Condition="'$(MSBuildRuntimeType)' == 'Core'">$(MSBuildThisFileDirectory)..\tools\net\Microsoft.SourceLink.Bitbucket.Git.dll
-
-
-
-
- $(SourceLinkUrlInitializerTargets);_InitializeBitbucketGitSourceLinkUrl
- $(SourceControlManagerUrlTranslationTargets);TranslateBitbucketGitUrlsInSourceControlInformation
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_TranslatedSourceRoot Remove="@(_TranslatedSourceRoot)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_PublishTargetFrameworks Include="$(TargetFrameworks)" />
-
-
-
-
-
-
- <_GetAllRuntimeIdentifiersTargetFrameworks Include="$(TargetFrameworks)" />
- <_AllRuntimeIdentifiers Include="$(RuntimeIdentifiers);$(RuntimeIdentifier)" />
-
-
-
-
-
- @(_AllRuntimeIdentifiers->Distinct())
-
-
-
-
-
-
- {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- {F184B08F-C81C-45F6-A57F-5ABD9991F28F}
-
-
-
-
-
- $([System.IO.Path]::GetDirectoryName($(BundledRuntimeIdentifierGraphFile)))/PortableRuntimeIdentifierGraph.json
-
-
-
-
-
-
- $(MSBuildThisFileDirectory)..\tools\net472\Microsoft.DotNet.ApiCompat.Task.dll
- $(MSBuildThisFileDirectory)..\tools\net10.0\Microsoft.DotNet.ApiCompat.Task.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_UseRoslynToolsetPackage Condition="'$(ApiCompatUseRoslynToolsetPackagePath)' == 'true' and '@(PackageReference->AnyHaveMetadataValue('Identity', 'Microsoft.Net.Compilers.Toolset'))' == 'true'">true
-
- $([System.IO.Path]::GetDirectoryName('$(CSharpCoreTargetsPath)'))
-
- $(RoslynTargetsPath)
-
- $([System.IO.Path]::Combine('$(RoslynAssembliesPath)', 'bincore'))
-
-
-
- $(GenerateCompatibilitySuppressionFile)
-
-
-
-
-
-
- <_apiCompatDefaultProjectSuppressionFile>$([MSBuild]::NormalizePath('$(MSBuildProjectDirectory)', 'CompatibilitySuppressions.xml'))
-
- $(_apiCompatDefaultProjectSuppressionFile)
-
-
-
-
-
-
-
-
-
-
- <_ApiCompatValidatePackageSemaphoreFile>$(IntermediateOutputPath)$(MSBuildThisFileName).semaphore
-
- CollectApiCompatInputs;_GetReferencePathFromInnerProjects;$(RunPackageValidationDependsOn)
-
-
-
- $(PackageId)
- $([MSBuild]::NormalizePath('$(NuGetPackageRoot)', '$(PackageValidationBaselineName.ToLower())', '$(PackageValidationBaselineVersion)', '$(PackageValidationBaselineName.ToLower()).$(PackageValidationBaselineVersion).nupkg'))
- <_packageValidationBaselinePath Condition="'$(DisablePackageBaselineValidation)' != 'true'">$(PackageValidationBaselinePath)
-
-
- <_PackageTargetPath Include="@(NuGetPackOutput->WithMetadataValue('Extension', '.nupkg'))" Condition="!$([System.String]::new('%(Identity)').EndsWith('.symbols.nupkg'))" />
-
-
-
-
-
-
-
-
-
- $(TargetPlatformMoniker)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(MSBuildThisFileDirectory)..\..\..\NuGet.Build.Tasks.Pack.targets
- true
-
-
-
-
-
- Sdks\Microsoft.NET.Sdk\tools\net472\NuGet.Build.Tasks.Pack.dll
- NuGet.Build.Tasks.Pack.dll
-
-
-
-
-
-
-
-
- $(AssemblyName)
- $(Version)
- true
- _LoadPackInputItems; _GetTargetFrameworksOutput; _WalkEachTargetPerFramework; _GetPackageFiles; $(GenerateNuspecDependsOn)
- $(Description)
- Package Description
- false
- true
- true
- tools
- lib
- content;contentFiles
- $(BeforePack); _GetRestoreProjectStyle; _IntermediatePack; GenerateNuspec; $(PackDependsOn)
- true
- symbols.nupkg
- DeterminePortableBuildCapabilities
- false
- false
- .dll; .exe; .winmd; .json; .pri; .xml
- $(DefaultAllowedOutputExtensionsInPackageBuildOutputFolder) ;$(AllowedOutputExtensionsInPackageBuildOutputFolder)
- .pdb; .mdb; $(AllowedOutputExtensionsInPackageBuildOutputFolder); $(AllowedOutputExtensionsInSymbolsPackageBuildOutputFolder)
- .pdb
- false
-
-
- $(GenerateNuspecDependsOn)
-
-
- Build;$(GenerateNuspecDependsOn)
-
-
-
-
-
-
- $(TargetFramework)
-
-
-
- $(MSBuildProjectExtensionsPath)
- $(BaseOutputPath)$(Configuration)\
- $(BaseIntermediateOutputPath)$(Configuration)\
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectFrameworks />
-
-
-
-
-
- <_TargetFrameworks Include="$(_ProjectFrameworks.Split(';'))" />
-
-
-
-
-
-
- <_PackageFilesToDelete Include="@(_OutputPackItems)" />
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(PrivateRepositoryUrl)
- $(SourceRevisionId)
- $(SourceBranchName)
-
-
-
-
-
-
- $(MSBuildProjectFullPath)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ProjectPathWithVersion Include="$(MSBuildProjectFullPath)">
- $(PackageVersion)
- 1.0.0
-
-
-
-
-
- <_ProjectsWithTFM Include="$(MSBuildProjectFullPath)" AdditionalProperties="TargetFramework=%(_TargetFrameworks.Identity)" />
- <_ProjectsWithTFMNoBuild Include="$(MSBuildProjectFullPath)" AdditionalProperties="TargetFramework=%(_TargetFrameworks.Identity);BuildProjectReferences=false" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_TfmWithDependenciesSuppressed Include="$(TargetFramework)" Condition="'$(SuppressDependenciesWhenPacking)' == 'true'" />
-
-
-
-
-
- $(TargetFramework)
-
-
-
-
-
-
-
-
-
-
-
-
- %(TfmSpecificPackageFile.RecursiveDir)
- %(TfmSpecificPackageFile.BuildAction)
-
-
-
-
-
- <_TargetPathsToSymbolsWithTfm Include="@(DebugSymbolsProjectOutputGroupOutput)">
- $(TargetFramework)
-
-
-
- <_TargetPathsToSymbolsWithTfm Include="@(TfmSpecificDebugSymbolsFile)" />
-
-
-
-
-
- <_PathToPriFile Include="$(ProjectPriFullPath)">
- $(ProjectPriFullPath)
- $(ProjectPriFileName)
-
-
-
-
-
-
- <_PackageFilesToExclude Include="@(Content)" Condition="'%(Content.Pack)' == 'false'" />
-
-
-
- <_PackageFiles Include="@(Content)" Condition=" %(Content.Pack) != 'false' ">
- Content
-
- <_PackageFiles Include="@(Compile)" Condition=" %(Compile.Pack) == 'true' ">
- Compile
-
- <_PackageFiles Include="@(None)" Condition=" %(None.Pack) == 'true' ">
- None
-
- <_PackageFiles Include="@(EmbeddedResource)" Condition=" %(EmbeddedResource.Pack) == 'true' ">
- EmbeddedResource
-
- <_PackageFiles Include="@(ApplicationDefinition)" Condition=" %(ApplicationDefinition.Pack) == 'true' ">
- ApplicationDefinition
-
- <_PackageFiles Include="@(Page)" Condition=" %(Page.Pack) == 'true' ">
- Page
-
- <_PackageFiles Include="@(Resource)" Condition=" %(Resource.Pack) == 'true' ">
- Resource
-
- <_PackageFiles Include="@(SplashScreen)" Condition=" %(SplashScreen.Pack) == 'true' ">
- SplashScreen
-
- <_PackageFiles Include="@(DesignData)" Condition=" %(DesignData.Pack) == 'true' ">
- DesignData
-
- <_PackageFiles Include="@(DesignDataWithDesignTimeCreatableTypes)" Condition=" %(DesignDataWithDesignTimeCreatableTypes.Pack) == 'true' ">
- DesignDataWithDesignTimeCreatableTypes
-
- <_PackageFiles Include="@(CodeAnalysisDictionary)" Condition=" %(CodeAnalysisDictionary.Pack) == 'true' ">
- CodeAnalysisDictionary
-
- <_PackageFiles Include="@(AndroidAsset)" Condition=" %(AndroidAsset.Pack) == 'true' ">
- AndroidAsset
-
- <_PackageFiles Include="@(AndroidResource)" Condition=" %(AndroidResource.Pack) == 'true' ">
- AndroidResource
-
- <_PackageFiles Include="@(BundleResource)" Condition=" %(BundleResource.Pack) == 'true' ">
- BundleResource
-
-
-
-
-
-
- <_IsNotSetContainersTargetsDir>false
- <_IsNotSetContainersTargetsDir Condition=" '$(_ContainersTargetsDir)'=='' ">true
- <_ContainersTargetsDir Condition="$(_IsNotSetContainersTargetsDir)">$(MSBuildThisFileDirectory)..\..\..\Containers\build\
-
-
-
-
- true
- tasks
- net10.0
- net472
- containerize
-
- $(MSBuildThisFileDirectory)..\$(ContainerTaskFolderName)\$(ContainerTaskFramework)\
- $(MSBuildThisFileDirectory)..\$(ContainerizeFolderName)\
-
- $(ContainerCustomTasksFolder)$(MSBuildThisFileName).dll
-
-
-
-
-
-
-
-
-
- <_IsSDKContainerAllowedVersion>false
-
- <_IsSDKContainerAllowedVersion Condition="$([MSBuild]::VersionGreaterThan($(NetCoreSdkVersion), 7.0.100))
OR ( $([MSBuild]::VersionEquals($(NetCoreSdkVersion), 7.0.100))
AND (
$(NETCoreSdkVersion.Contains('-preview.7'))
OR $(NETCoreSdkVersion.Contains('-rc'))
OR $(NETCoreSdkVersion.Contains('-')) == false
)
)">true
- <_ContainerIsTargetingNet8TFM>false
- <_ContainerIsTargetingNet8TFM Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And $([MSBuild]::VersionGreaterThanOrEquals($(_TargetFrameworkVersionWithoutV), '8.0'))">true
- <_ContainerIsSelfContained>false
- <_ContainerIsSelfContained Condition="'$(SelfContained)' == 'true' or '$(PublishSelfContained)' == 'true'">true
- true
-
-
-
-
-
-
-
-
-
-
-
- $(RuntimeIdentifier)
- $(RuntimeIdentifiers)
- linux-$(NETCoreSdkPortableRuntimeIdentifier.Split('-')[1])
-
- <_InitialContainerBaseImage>$(ContainerBaseImage)
-
-
- <_TargetRuntimeIdentifiers Include="$(ContainerRuntimeIdentifier)" Condition="'$(ContainerRuntimeIdentifier)' != ''" />
- <_TargetRuntimeIdentifiers Include="$(ContainerRuntimeIdentifiers)" Condition="@(_TargetRuntimeIdentifiers->Count()) == 0" />
-
-
-
-
-
- <_TargetRuntimeIdentifiers Remove="$(_TargetRuntimeIdentifiers)" />
-
-
-
-
-
-
- $(RegistryUrl)
-
- $(PublishImageTag)
-
- $([System.DateTime]::UtcNow.ToString('yyyyMMddhhmmss'))
-
-
-
-
-
-
-
-
-
-
- $(ContainerImageName)
-
- $(AssemblyName)
-
- latest
- $([System.DateTime]::UtcNow.ToString('yyyyMMddhhmmss'))
-
-
-
-
-
-
-
-
-
-
-
-
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
- true
-
-
- $(Description)
- $(Authors)
- $(PackageProjectUrl)
- $(PackageProjectUrl)
- $(PackageVersion)
- $(PackageLicenseExpression)
- $(Title)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_TrimmedRepositoryUrl Condition="'$(RepositoryType)' == 'git' and '$(PrivateRepositoryUrl)' != '' and $(PrivateRepositoryUrl.EndsWith('.git'))">$(PrivateRepositoryUrl.Substring(0, $(PrivateRepositoryUrl.LastIndexOf('.git'))))
- <_TrimmedRepositoryUrl Condition="'$(_TrimmedRepositoryUrl)' == '' and '$(PrivateRepositoryUrl)' != ''">$(PrivateRepositoryUrl)
-
-
-
-
-
-
-
-
- _ContainerVerifySDKVersion;
- ComputeContainerConfig;
- _CheckContainersPackage;
-
-
-
-
-
-
- <_ContainerIsTargetingWindows>false
- <_ContainerIsTargetingWindows Condition="$(ContainerRuntimeIdentifier.StartsWith('win'))">true
-
- /app/
- C:\app\
- <_ContainerIsUsingMicrosoftDefaultImages Condition="'$(_InitialContainerBaseImage)' == ''">true
- <_ContainerIsUsingMicrosoftDefaultImages Condition="'$(_InitialContainerBaseImage)' != ''">false
-
-
-
- ContainerUser
-
-
-
-
-
-
-
-
-
-
-
- <_ContainersPackageIdentity>Microsoft.NET.Build.Containers
- <_WebDefaultSdkVersion>7.0.300
- <_WorkerDefaultSdkVersion>8.0.100
- <_ConsoleDefaultSdkVersion>8.0.200
-
- <_SdkCanPublishWeb>$([MSBuild]::VersionGreaterThanOrEquals('$(NETCoreSdkVersion)', '$(_WebDefaultSdkVersion)'))
- <_SdkCanPublishWorker>$([MSBuild]::VersionGreaterThanOrEquals('$(NETCoreSdkVersion)', '$(_WorkerDefaultSdkVersion)'))
- <_SdkCanPublishConsole>$([MSBuild]::VersionGreaterThanOrEquals('$(NETCoreSdkVersion)', '$(_ConsoleDefaultSdkVersion)'))
-
- <_ContainerPackageIsPresent>false
- <_ContainerPackageIsPresent Condition="@(PackageReference->AnyHaveMetadataValue('Identity', '$(_ContainersPackageIdentity)'))">true
- <_IsWebProject>false
- <_IsWebProject Condition="@(ProjectCapability->AnyHaveMetadataValue('Identity', 'DotNetCoreWeb'))">true
- <_IsWorkerProject>false
- <_IsWorkerProject Condition="@(ProjectCapability->AnyHaveMetadataValue('Identity', 'DotNetCoreWorker'))">true
-
-
-
-
-
-
- $(NetCoreRoot)
- dotnet
- dotnet.exe
-
-
-
-
-
-
-
-
-
-
-
-
-
- $(GeneratedContainerManifest)
- $(GeneratedContainerConfiguration)
- $(GeneratedContainerDigest)
- $(GeneratedContainerMediaType)
-
-
-
-
-
-
-
-
- <_SkipContainerPublishing>false
- <_SkipContainerPublishing Condition="$(ContainerArchiveOutputPath) != '' or ( $(ContainerRegistry) == '' and ( $(LocalRegistry) == '' or $(LocalRegistry) == 'Docker' ) )">true
-
- <_SkipCreateImageIndex>false
- <_SkipCreateImageIndex Condition="$(ContainerArchiveOutputPath) == '' and $(ContainerRegistry) == '' and $(LocalRegistry) == 'Podman'">true
-
-
- <_SingleImageContainerFormat Condition="'$(ContainerImageFormat)' != ''">$(ContainerImageFormat)
-
- <_SingleImageContainerFormat Condition="$(_SkipContainerPublishing) == 'true' ">OCI
-
-
- <_rids Include="$(ContainerRuntimeIdentifiers)" Condition="'$(ContainerRuntimeIdentifiers)' != ''" />
- <_rids Include="$(RuntimeIdentifiers)" Condition="'$(ContainerRuntimeIdentifiers)' == '' and '$(RuntimeIdentifiers)' != ''" />
- <_InnerBuild Include="$(MSBuildProjectFullPath)" AdditionalProperties="
ContainerRuntimeIdentifier=%(_rids.Identity);
RuntimeIdentifier=%(_rids.Identity);
ContainerBaseRegistry=$(ContainerBaseRegistry);
ContainerBaseName=$(ContainerBaseName);
ContainerBaseTag=$(ContainerBaseTag);
ContainerBaseDigest=$(ContainerBaseDigest);
ContainerRegistry=$(ContainerRegistry);
_ContainerImageTags=@(ContainerImageTags, ';');
ContainerRepository=$(ContainerRepository);
_ContainerLabel=@(ContainerLabel->'%(Identity):%(Value)');
_ContainerPort=@(ContainerPort->'%(Identity):%(Type)');
_ContainerEnvironmentVariables=@(ContainerEnvironmentVariable->'%(Identity):%(Value)');
ContainerGenerateLabels=$(ContainerGenerateLabels);
ContainerGenerateLabelsImageBaseDigest=$(ContainerGenerateLabelsImageBaseDigest);
_SkipContainerPublishing=$(_SkipContainerPublishing);
ContainerImageFormat=$(_SingleImageContainerFormat);
_IsMultiRIDBuild=false;
_IsSingleRIDBuild=true;
_InitialContainerBaseImage=$(_InitialContainerBaseImage)
" />
- <_rids Remove="$(_rids)" />
-
-
-
-
-
-
-
-
-
-
-
-
-
- <_ParsedContainerLabel Condition="'$(_ContainerLabel)' != ':'" Include="$(_ContainerLabel)" />
-
- <_ParsedContainerPort Condition="'$(_ContainerPort)' != ':'" Include="$(_ContainerPort)" />
-
- <_ParsedContainerEnvironmentVariables Condition="'$(_ContainerEnvironmentVariables)' != ':'" Include="$(_ContainerEnvironmentVariables)" />
-
-
-
-
-
- <_IsMultiTFMBuild Condition="'$(TargetFrameworks)' != '' and '$(TargetFramework)' == ''">true
-
- <_HasCRIDsAndNoCRID Condition="'$(ContainerRuntimeIdentifiers)' != '' and '$(ContainerRuntimeIdentifier)' == ''">true
- <_HasRIDs Condition="'$(RuntimeIdentifiers)' != ''">true
- <_NoCRIDsOrCRIDorRID Condition="'$(ContainerRuntimeIdentifiers)' == '' and '$(ContainerRuntimeIdentifier)' == '' and '$(RuntimeIdentifier)' == ''">true
-
- <_IsMultiRIDBuild Condition="'$(BuildingInsideVisualStudio)' != 'true' and ('$(_HasCRIDsAndNoCRID)' == true or ('$(_HasRIDs)' == 'true' and '$(_NoCRIDsOrCRIDorRID)' == 'true'))">true
- <_IsSingleRIDBuild Condition="'$(_IsMultiRIDBuild)' == ''">true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
From 7e475514c350e3f572bb4067bef858a6ec3547ce Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Mar 2026 03:14:53 +0000
Subject: [PATCH 4/5] Remove duplicate test helper method per code review
feedback
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
---
.../Server/McpServerToolTests.cs | 13 +------------
1 file changed, 1 insertion(+), 12 deletions(-)
diff --git a/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs b/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
index 22ee805c2..18d889099 100644
--- a/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
+++ b/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
@@ -659,7 +659,7 @@ public void OutputSchema_Attribute_WithType_GeneratesSchema()
[Fact]
public async Task OutputSchema_Attribute_CallToolResult_PreservesStructuredContent()
{
- McpServerTool tool = McpServerTool.Create(ToolWithOutputSchemaReturningCallToolResult);
+ McpServerTool tool = McpServerTool.Create(ToolWithOutputSchemaAttribute);
Assert.NotNull(tool.ProtocolTool.OutputSchema);
Assert.Equal("object", tool.ProtocolTool.OutputSchema.Value.GetProperty("type").GetString());
@@ -791,17 +791,6 @@ private static CallToolResult ToolWithOutputSchemaAttribute()
};
}
- [McpServerTool(UseStructuredContent = true, OutputSchema = typeof(Person))]
- private static CallToolResult ToolWithOutputSchemaReturningCallToolResult()
- {
- var person = new Person("John", 27);
- return new CallToolResult()
- {
- Content = [new TextContentBlock { Text = $"{person.Name}, {person.Age}" }],
- StructuredContent = JsonSerializer.SerializeToElement(person, McpJsonUtilities.DefaultOptions),
- };
- }
-
[McpServerTool(UseStructuredContent = false, OutputSchema = typeof(Person))]
private static CallToolResult ToolWithOutputSchemaButNoStructuredContent()
{
From f958a0e0ada2b1d3b7df711c37a293736668e431 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 11 Mar 2026 03:20:26 +0000
Subject: [PATCH 5/5] Rename McpServerToolAttribute.OutputSchema to
OutputSchemaType
Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
---
.../Server/AIFunctionMcpServerTool.cs | 2 +-
.../Server/McpServerToolAttribute.cs | 2 +-
tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs | 4 ++--
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs
index 98896e198..700d9d26d 100644
--- a/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs
+++ b/src/ModelContextProtocol.Core/Server/AIFunctionMcpServerTool.cs
@@ -206,7 +206,7 @@ private static McpServerToolCreateOptions DeriveOptions(MethodInfo method, McpSe
newOptions.UseStructuredContent = toolAttr.UseStructuredContent;
- if (toolAttr.OutputSchema is Type outputSchemaType)
+ if (toolAttr.OutputSchemaType is Type outputSchemaType)
{
newOptions.OutputSchema ??= AIJsonUtilities.CreateJsonSchema(outputSchemaType,
serializerOptions: newOptions.SerializerOptions ?? McpJsonUtilities.DefaultOptions,
diff --git a/src/ModelContextProtocol.Core/Server/McpServerToolAttribute.cs b/src/ModelContextProtocol.Core/Server/McpServerToolAttribute.cs
index 0edb310e7..d67bac18c 100644
--- a/src/ModelContextProtocol.Core/Server/McpServerToolAttribute.cs
+++ b/src/ModelContextProtocol.Core/Server/McpServerToolAttribute.cs
@@ -284,7 +284,7 @@ public bool ReadOnly
/// must also be set to for this property to take effect.
///
///
- public Type? OutputSchema { get; set; }
+ public Type? OutputSchemaType { get; set; }
///
/// Gets or sets the source URI for the tool's icon.
diff --git a/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs b/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
index 18d889099..045a5d72f 100644
--- a/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
+++ b/tests/ModelContextProtocol.Tests/Server/McpServerToolTests.cs
@@ -780,7 +780,7 @@ public async Task OutputSchema_Options_OverridesReturnTypeSchema_InvokeAndValida
AssertMatchesJsonSchema(tool.ProtocolTool.OutputSchema.Value, result.StructuredContent);
}
- [McpServerTool(UseStructuredContent = true, OutputSchema = typeof(Person))]
+ [McpServerTool(UseStructuredContent = true, OutputSchemaType = typeof(Person))]
private static CallToolResult ToolWithOutputSchemaAttribute()
{
var person = new Person("John", 27);
@@ -791,7 +791,7 @@ private static CallToolResult ToolWithOutputSchemaAttribute()
};
}
- [McpServerTool(UseStructuredContent = false, OutputSchema = typeof(Person))]
+ [McpServerTool(UseStructuredContent = false, OutputSchemaType = typeof(Person))]
private static CallToolResult ToolWithOutputSchemaButNoStructuredContent()
{
return new CallToolResult()