FEATURED · 精选文章

AutoGen for .NET 的 NuGet 分发机制详解:包族构成、版本策略与本地打包实操

发布时间 / 2026/9/6 21:45:44
来源 / 创域科博编辑部
栏目 / 资讯中心
AutoGen for .NET 的 NuGet 分发机制详解:包族构成、版本策略与本地打包实操 AutoGen for .NET 的 NuGet 分发机制详解包族构成、版本策略与本地打包实操【免费下载链接】autogenA programming framework for agentic AI项目地址: https://gitcode.com/GitHub_Trending/au/autogen本文以 AutoGen for .NET 发布到 NuGet 时的页面说明文件 NUGET.md 为主线结合仓库中真实的打包配置完整讲解 AutoGen .NET SDK 的 NuGet 包族构成、双轨版本策略、包元数据配置以及本地打包与 nightly build 订阅的完整流程。读完本文你可以明确应该安装哪一个包、版本号从何而来、dotnet pack之后产物如何生成并能在本地复现一次完整的 NuGet 打包过程。1. NUGET.md 是什么NuGet 包页面的门面NUGET.md 是 AutoGen for .NET 发布到 NuGet 时展示在包详情页的 readme 文件。按 dotnet/nuget/README.md 的说明dotnet/nuget/目录专门存放打包所需的资源与元数据icon.pngNuGet 包图标NUGET.md展示在 NuGet 包详情页的 readmenuget-package.props定义打包设置的 MSBuild 属性文件。NUGET.md 正文传递了三条关键信息也是理解 AutoGen .NET SDK 分发方式的起点AutoGen for .NET是 AutoGen 的官方 .NET SDK用于创建 LLM Agent 并构建多 Agent 工作流同时提供对 OpenAI、Semantic Kernel、LM Studio 等流行平台的集成完整文档与示例见官方文档站通过 nightly build feed 可以消费每日构建版本详见 dotnet/README.md 与 安装指南。这个文件并不是手写维护的普通文档——它是被 MSBuild 直接打进.nupkg的。在 nuget-package.props 中可以看到对应的声明!-- Use icon and NUGET readme from dotnet/nuget folder -- PackageIconicon.png/PackageIcon PackageReadmeFileNUGET.md/PackageReadmeFile ... None Include$(RepoRoot)nuget/icon.png Linkicon.png Packtrue PackagePath. / None Include$(RepoRoot)nuget/NUGET.md LinkNUGET.md Packtrue PackagePath. /PackageReadmeFile与Packtrue的None项共同作用使 NUGET.md 在打包时位于包根目录安装后用户在 NuGet 网站看到的说明即来源于此。换言之修改 NUGET.md 并重新打包就能更新所有包的对外展示内容。2. AutoGen for .NET 的包族构成NUGET.md 提到 SDK 集成了 OpenAI、Semantic Kernel、LM Studio 等平台这些能力在 NuGet 上被拆分为一族功能清晰的包。根据 安装指南包族如下包名职责AutoGenAll-in-one 包依赖AutoGen.Core、AutoGen.OpenAI、AutoGen.LMStudio、AgenticSemanticKernel即AutoGen.SemanticKernel、AutoGen.SourceGenerator等AutoGen.Core核心包提供消息类型、Agent 与群聊group chat的抽象AutoGen.OpenAIOpenAI 模型集成 AgentAutoGen.MistralMistral.AI 模型集成 AgentAutoGen.OllamaOllama 本地模型集成 AgentAutoGen.AnthropicAnthropic 模型集成 AgentAutoGen.LMStudioLM Studio 集成 AgentAutoGen.SemanticKernelSemantic Kernel 集成 AgentAutoGen.GeminiGoogle Gemini 集成 AgentAutoGen.AzureAIInferenceAzure AI Inference 集成 AgentAutoGen.SourceGenerator源生成器提供类型安全的函数定义生成AutoGen.DotnetInteractive基于 dotnet interactive 的代码执行支持C#、F#、PowerShell、Python指南给出的选型建议同样值得保留只装一个包就用AutoGen只想用核心抽象、避免引入Azure.AI.OpenAI等额外依赖就用AutoGen.Core此时需自行实现 Agent但群聊、内置消息类型、workflow 与 middleware 仍可用只想要类型安全的函数调用源生成、连 AutoGen 抽象都不要则单独选AutoGen.SourceGenerator。安装命令为dotnet add package AUTOGEN_PACKAGES两代包并行AutoGen.* 与 Microsoft.AutoGen.*从 dotnet/README.md 可以确认当前仓库中存在两套包AutoGen.*由 AutoGen 0.2 for .NET 派生的旧包将逐步弃用并移植到新包中Microsoft.AutoGen.*采用事件驱动模型的新包API 尚未稳定、可能发生变化。这一双轨事实在仓库源码中可以直接印证dotnet/src/下既有 AutoGen.Core 等旧目录也有 Microsoft.AutoGen/Core、Microsoft.AutoGen/AgentChat、Microsoft.AutoGen/Contracts 等新目录且这些项目同样 import 了 nuget-package.props 参与打包。新包的入门示例位于 samples/Hello其中包含 HelloAgent、HelloAIAgent 等基于 .NET Aspire 的完整样例含 AppHost、appsettings.json与agent_events.proto协议定义。All-in-one 包的内部构成AutoGen.csproj 展示了AutoGen这个聚合包的组织方式它通过ProjectReference聚合了AutoGen.Core、AutoGen.OpenAI以及 Anthropic、AzureAIInference、Mistral、Ollama、Gemini、SemanticKernel 等集成项目并以OutputItemTypeAnalyzer的方式挂接AutoGen.SourceGenerator同时引用Azure.AI.OpenAI外部包。项目内还覆写了Description为 The all-in-one package for AutoGen...覆盖 props 中的默认描述。3. 双版本号的来龙去脉仓库的包版本策略定义在 eng/MetaInfo.propsVersionPrefix0.4.0/VersionPrefix VersionPrefixForAutoGen0_20.2.3/VersionPrefixForAutoGen0_2即两条版本线0.4.0与0.2.3。dotnet/PACKAGING.md 说明包版本由VersionPrefix与VersionPrefixForAutoGen0_2共同决定——项目名以AutoGen.开头者使用VersionPrefixForAutoGen0_2否则使用VersionPrefix。该条件分支的实际实现在 dotnet/Directory.Build.propsPropertyGroup Condition$(MSBuildProjectName.StartsWith(AutoGen)) true VersionPrefix$(VersionPrefixForAutoGen0_2)/VersionPrefix IsAutoGen0_2true/IsAutoGen0_2 /PropertyGroup结合第 2 节的双轨说明可以完整理解这一设计AutoGen.*旧包延续 0.2.x 版本线当前为 0.2.3而Microsoft.AutoGen.*等新包走 0.4.x 版本线。这对用户的实际意义是即便两条线同时发布NuGet 上的版本号也不会互相碰撞升级旧代码时也应关注版本前缀所属的包代际而非单纯比较数字大小。4. 包元数据nuget-package.props 逐项解析dotnet/nuget/nuget-package.props 是所有发行包的公共元数据模板各 csproj 只需一行 import 即可继承PropertyGroup IsPackabletrue/IsPackable !-- Default description and tags. Packages can override. -- AuthorsMicrosoft/Authors ProductAutoGen/Product DescriptionA programming framework for agentic AI/Description PackageTagsAI, Artificial Intelligence, Agents, Multiagent, SDK/PackageTags PackageId$(AssemblyName)/PackageId !-- Required license, copyright, and repo information. Packages can override. -- PackageLicenseExpressionMIT/PackageLicenseExpression Copyright© Microsoft Corporation. All rights reserved./Copyright !-- Use icon and NUGET readme from dotnet/nuget folder -- PackageIconicon.png/PackageIcon PackageReadmeFileNUGET.md/PackageReadmeFile !-- Build symbol package (.snupkg) to distribute the PDB containing Source Link -- IncludeSymbolstrue/IncludeSymbols SymbolPackageFormatsnupkg/SymbolPackageFormat EmbedUntrackedSourcestrue/EmbedUntrackedSources /PropertyGroup关键属性逐项说明IsPackabletrue默认值在 Directory.Build.props 中是falseIsPackablefalse/IsPackable即仓库内所有项目默认不打包只有显式 import 了nuget-package.props的项目才会产出 NuGet 包。测试目录、sample 目录中的项目因此天然被排除在发行列表之外。PackageId$(AssemblyName)包 ID 直接取程序集名保证AutoGen.Core.csproj产出的就是AutoGen.Core包无需逐个声明这也解释了为何版本分支逻辑可以基于项目名前缀判断。PackageLicenseExpressionMIT与 MetaInfo.props 中的PackageLicenseExpression及仓库根目录 LICENSEMIT 协议一致。IncludeSymbolsSymbolPackageFormatsnupkg除.nupkg外还构建.snupkg符号包内含带 Source Link 的 PDB。props 中同时引用了Microsoft.SourceLink.GitHub包PrivateAssetsAll配合 PACKAGING.md 中提到的.nupkg/.snupkg双产物让用户在调试器中可以直接步进到 GitHub 上的托管源码。EmbedUntrackedSourcestrue把源码管理中未跟踪的源文件嵌入 PDB保证符号还原的完整性。GeneratePackageOnBuild条件属性PropertyGroup Condition $(Configuration) Release GeneratePackageOnBuildtrue/GeneratePackageOnBuild /PropertyGroup仅在 Release 配置下于构建时自动打包。此外MetaInfo.props 通过 Directory.Build.props 顶部的Import Project./eng/MetaInfo.props /全局注入Authors、PackageProjectUrl、RepositoryUrlgit等信息与nuget-package.props中的同名字段形成全局默认 包级覆写的两层结构。构建签名方面dotnet/Directory.Build.props 启用了SignAssembly并使用eng/opensource.snk强命名密钥当SignType为 Test/REAL 时eng/Sign.props 还会通过 MicroBuild 对AutoGen*.dll与AutoGen*.nupkg做 Authenticode 签名——这也解释了为何签名规则按AutoGen*通配匹配。5. 本地打包实操restore → build → pack按 dotnet/PACKAGING.md前提是安装 .NET SDK完整流程为# 1. 还原并构建 dotnet restore dotnet build --configuration Release --no-restore # 2. 生成 NuGet 包 dotnet pack --configuration Release --no-build执行后会在./artifacts/package/release目录生成.nupkg与.snupkg文件。这里两个细节与前面配置呼应产物落在artifacts/是因为 Directory.Build.props 设置了UseArtifactsOutputtrue/UseArtifactsOutputartifacts 布局由于GeneratePackageOnBuild在 Release 下为truebuild 阶段其实已经尝试产出包dotnet pack --no-build起到的是不重复编译、基于既有构建结果生成包的确认作用。打包目标框架Directory.Build.props 中定义PackageTargetFrameworksnetstandard2.0;net8.0/PackageTargetFrameworks即所有发行包默认同时面向netstandard2.0与net8.0。以 AutoGen.csproj 为例TargetFrameworks$(PackageTargetFrameworks)/TargetFrameworks正是引用了这一全局属性。新增项目进入发行列表PACKAGING.md 指出新加进AutoGen.sln的项目默认不会被打包需要在项目的.csproj中加一行 import 才能纳入Import Project$(RepoRoot)/nuget/nuget-package.props /$(RepoRoot)由 Directory.Build.props 中的RepoRoot$(MSBuildThisFileDirectory)/RepoRoot提供指向dotnet/目录。仓库中实际采用该方式的发行项目包括 AutoGen、AutoGen.Core、AutoGen.OpenAI、AutoGen.Gemini、AutoGen.Anthropic、AutoGen.SemanticKernel 以及 Microsoft.AutoGen.Contracts 等。6. 消费 Nightly Build订阅每日构建 feedNUGET.md 引导用户从 nightly build feed 消费每日构建版本。根据 安装指南 与 dotnet/README.mdnightly feed 托管在 Azure Artifacts 的AutoGen-Nightlyfeed端点为https://pkgs.dev.azure.com/AGPublish/AGPublic/_packaging/AutoGen-Nightly/nuget/v3/index.json。方式一项目级 NuGet.config。在项目根目录创建NuGet.config?xml version1.0 encodingutf-8? configuration packageSources clear / add keyAutoGen value$(FEED_URL) / !-- 替换为上述 feed 端点 -- !-- other feeds -- /packageSources disabledPackageSources / /configuration方式二全局 source。在终端执行dotnet nuget add source FEED_URL --name AutoGen # dotnet-tools 源包含 Microsoft.DotNet.Interactive.VisualStudio供 AutoGen.DotnetInteractive 使用 dotnet nuget add source https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json --name dotnet-tools之后即可按指定版本安装 nightly 包dotnet add package AUTOGEN_PACKAGES VERSION从 dotnet/README.md 可以看出该 feed 同时承载新旧两代包First and old packages 均从 feed 提供因此订阅后既可获得AutoGen.*的每日版本也可获得Microsoft.AutoGen.*的每日版本。注意 nightly 版本未经稳定发布校验仅建议用于提前跟进新特性。7. 小结从 NUGET.md 到一次完整打包回到 NUGET.md 本身它虽然只有寥寥数行但恰好锚定了 AutoGen .NET SDK 分发链路上的三个节点包是什么官方 .NET SDK 平台集成、去哪看文档站与仓库 issue、如何获取最新nightly feed。而仓库的打包体系把这三个节点全部落实为可验证的配置页面展示由 NUGET.md icon.png 经nuget-package.props注入包内包族与版本由 MetaInfo.props、Directory.Build.props 的AutoGen前缀条件分支共同决定0.2.3 / 0.4.0 双轨元数据、符号包与 Source Link 由 nuget-package.props 统一声明各 csproj 一行 import 接入本地复现只需 PACKAGING.md 的三步命令产物落于artifacts/package/release。掌握这条链路后无论是为项目选型安装、跟进 nightly 新特性还是本地修改 NUGET.md 后验证打包效果都有明确的配置依据与操作路径可循。【免费下载链接】autogenA programming framework for agentic AI项目地址: https://gitcode.com/GitHub_Trending/au/autogen创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻