Packages: Microsoft.Teams.Core, Microsoft.Teams.Apps, Microsoft.Teams.Apps.BotBuilder, Microsoft.Teams.Cards, Microsoft.Teams.M365Extensions
Highlights
New package: Microsoft.Teams.M365Extensions (#652) — bridges the Microsoft 365 Agents SDK and Microsoft.Teams.Apps in a single ASP.NET Core app. Teams-channel turns route to a TeamsBotApplication when a Teams route matches; everything else flows through the Agents SDK pipeline. Outbound Teams API calls authenticate via the Agents SDK connection manager, so no separate AzureAd section is required. Now depends on the stable Agents SDK.
Receive files in personal scope (#645) — context.Files.ListAsync() / FirstAsync() map inbound file.download.info attachments to IncomingFile, with lazy DownloadAsync(), StreamAsync(), TextAsync(), and SaveAsAsync(). Download URLs are tempauth and short-lived.
Targeted messages are now stable (#654) — the ExperimentalTeamsTargeted gate is removed from ChannelAccount.IsTargeted, MessageActivityInput, ActivityClient, ConversationApiClient, and TargetedMessageInfoEntity.
Features
- Resolve Agentic User file bytes through Graph
/shares(#669) - Teams route matching and API client registration (#644)
setCachePolicycard action type (#663)
Fixes
- Reject null file download URLs (#673)
- Stop emitting Adaptive Card schema defaults in serialized payloads (#671)
- Allow targeted messages in personal chats (#667)
- Preserve
textFormatthroughTeamsStreamingWriterintermediate and final activities (#661) - Support installation upgrade activity (#666)
- Don't require
selectedChannelwhen deserializing channel data (#655) - Fix HTML widget black gap and MessageBack forced scroll (#646)
- Omit
sequencefrom final stream messages (#633)
API changes
IncomingFile.WebUrlrenamed toContentUrl(#662). Not a breaking change — the files feature landed after 2.1.0 was cut, so the property was never published.
Samples & docs
- New
AIFileAnalysisBotsample (#651) - Consolidated message interaction samples (#647)
- Removed internal naming from comments and docs (#658)
- Documented cross-platform filesystem requirements (#636)
Build & infrastructure
- Core product tree moved to the repository root (#639, #643)
- Azure pipelines onboarded to CFS NuGet (#637, #640);
CFSCleannetwork isolation removed so the Public stage can reachapi.nuget.org(#679) - GitHub Actions pinned to full-length commit SHAs (#656), plus dependency bumps (#641, #657, #665, #668)
Full changelog: v2.1.0...v2.1.1