Bot Framework DotNet SDK 4.15.2
This is a January 2022 patch release containing bug fixes and performance improvements.
4.15.2 SDK Change Logs
- Add top level lazy load on LanguageGeneratorManager by @gabog and @Danieladu in #6123
- Fix null ref exception and outlying issues in ForEachElement by @carlosscastro @gabog @lauren-mills @EricDahlvang in #6092 and #6143
- Removes URL from OnComputId method by @gabog #6110
Breaking changes in this release:
This release introduces some minor breaking changes in the Adaptive libraries that greatly improve the bot's cold start times. These changes should not impact composer bots that haven't been customized. Customized bots will be impacted only if they extended the following classes:
TemplateEngineLanguageGenerator
- We removed the
loadOnConstructor
optional parameter from the class constructor. Templates are now only loaded as needed and not at bot startup. This parameter is no longer necessary and should be removed.
LanguageGeneratorManager
- We removed the
loadOnConstructor
optional parameter from the class constructor. Most templates are now processed as needed and not at bot startup. This parameter is no longer necessary and should be removed.
Templates that use the lg@exports
feature are still loaded on startup, a bot with a large number of templates that use the@exports
directive will experience longer startup times.
LanguageGeneratorManager
- The
LanguageGenerators
property type has changed fromConcurrentDictionary<string, LanguageGenerator>
toConcurrentDictionary<string, Lazy<LanguageGenerator>>
to allow on demand initialization and the property is now read only.
MultiLanguageGenerator
- The
LanguageGenerators
property type has changed fromConcurrentDictionary<string, LanguageGenerator>
toConcurrentDictionary<string, Lazy<LanguageGenerator>>
to allow on demand initialization and the property is now read only.
MultiLanguageGeneratorBase
- The
TryGetGenerator(DialogContext dialogContext, string locale, out LanguageGenerator generator)
method signature has changed toMultiLanguageGeneratorBase.TryGetGenerator(DialogContext dialogContext, string locale, out Lazy<LanguageGenerator> generator)
and the classes that derive from it have been updated accordingly.
Developers that need to access thelanguageGenerator
instance right away after callingTryGetGenerator()
can force the initialization by accessing theValue
property of the returnedLazy<LanguageGenerator>
.