microsoft / botbuilder-dotnet

Welcome to the Bot Framework SDK for .NET repository, which is the home for the libraries and packages that enable developers to build sophisticated bot applications using .NET.
https://github.com/Microsoft/botframework
MIT License
872 stars 480 forks source link

Ensure dotnet framework minimum version is netstandard 2.1 or greater #5135

Closed scheyal closed 3 years ago

scheyal commented 3 years ago

Orchestrator requires netstandard 2.1 or greater for support of LPUTF8Str (Unicode etc).

mrivera-ms commented 3 years ago

@mrivera-ms to follow up.

mrivera-ms commented 3 years ago

Per offline discussion with @scheyal, this needs to be addressed by the Orchestrator dev team. Closing as no further action is needed from the SDK team.

scheyal commented 3 years ago

More info:

So sniffing a bit more, it looks like all our SDKs are targeting netstandard2.0. Orchestrator assembly is the odd one out targeting netcoreapp3.1, and it cannot go below netstandard2.1 due to native Unicode dependency. If I get this right, it’d create a bit of friction out of the box when dev is trying to use Orchestrator having to align their targets.

So I guess, the work here is to ensure all our assemblies are targeting the same framework version e.g.:

  1. Bring Orchestrator to 2.1
  2. Bring all SDK assembly to 2.1

Other considerations:

Adapters\Microsoft.Bot.Builder.Adapters.Facebook\Microsoft.Bot.Builder.Adapters.Facebook.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Adapters\Microsoft.Bot.Builder.Adapters.Slack\Microsoft.Bot.Builder.Adapters.Slack.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Adapters\Microsoft.Bot.Builder.Adapters.Twilio\Microsoft.Bot.Builder.Adapters.Twilio.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Adapters\Microsoft.Bot.Builder.Adapters.Twilio\Microsoft.Bot.Builder.Adapters.Twilio.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Adapters\Microsoft.Bot.Builder.Adapters.Webex\Microsoft.Bot.Builder.Adapters.Webex.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
AdaptiveExpressions\AdaptiveExpressions.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
integration\Microsoft.Bot.Builder.Integration.ApplicationInsights.WebApi\Microsoft.Bot.Builder.Integration.ApplicationInsights.WebApi.csproj:    <TargetFramework>net461</TargetFramework>
integration\Microsoft.Bot.Builder.Integration.AspNet.WebApi\Microsoft.Bot.Builder.Integration.AspNet.WebApi.csproj:    <TargetFramework>net461</TargetFramework>
Microsoft.Bot.Builder\Microsoft.Bot.Builder.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.AI.LUIS\Microsoft.Bot.Builder.AI.Luis.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.AI.Orchestrator\Microsoft.Bot.Builder.AI.Orchestrator.csproj:    <TargetFramework>netcoreapp3.1</TargetFramework>
Microsoft.Bot.Builder.AI.QnA\Microsoft.Bot.Builder.AI.QnA.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.ApplicationInsights\Microsoft.Bot.Builder.ApplicationInsights.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Azure\Microsoft.Bot.Builder.Azure.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Azure.Blobs\Microsoft.Bot.Builder.Azure.Blobs.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Azure.Queues\Microsoft.Bot.Builder.Azure.Queues.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Dialogs\Microsoft.Bot.Builder.Dialogs.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Dialogs.Adaptive\Microsoft.Bot.Builder.Dialogs.Adaptive.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Dialogs.Adaptive.Teams\Microsoft.Bot.Builder.Dialogs.Adaptive.Teams.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Dialogs.Adaptive.Testing\Microsoft.Bot.Builder.Dialogs.Adaptive.Testing.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Dialogs.Debugging\Microsoft.Bot.Builder.Dialogs.Debugging.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Dialogs.Declarative\Microsoft.Bot.Builder.Dialogs.Declarative.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.LanguageGeneration\Microsoft.Bot.Builder.LanguageGeneration.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.TemplateManager\Microsoft.Bot.Builder.TemplateManager.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Builder.Testing\Microsoft.Bot.Builder.Testing.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Configuration\Microsoft.Bot.Configuration.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Connector\Microsoft.Bot.Connector.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Schema\Microsoft.Bot.Schema.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Microsoft.Bot.Streaming\Microsoft.Bot.Streaming.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
Parsers\Microsoft.Bot.Builder.Parsers.LU\Microsoft.Bot.Builder.Parsers.LU.csproj:    <TargetFramework>netstandard2.0</TargetFramework>
EricDahlvang commented 3 years ago

From: https://docs.microsoft.com/en-us/dotnet/standard/net-standard#which-net-standard-version-to-target

netstandard2.0 is contained within netstandard2.1

We recommend you target the lowest version of .NET Standard possible.

The higher the version, the more APIs are available to your library's code.
The lower the version, the more apps and libraries can use your library.

It seems odd to change the minimum requirements for the underlying sdk, because one consuming package has a higher minimum requirement.

Also, raising this to 2.1 in the sdk would be a breaking change, and require a major version bump?

sgellock commented 3 years ago

I think we can close this issue out, as we have discussed an R12 plan. if we need to address this in R13, it will be part of a larger work item and we will track that with new tickets.