
ASP.NET Core Daily Builds 实践指南NuGet 每日构建源配置、运行时下载与 Visual Studio 调试【免费下载链接】aspnetcoreASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.项目地址: https://gitcode.com/GitHub_Trending/as/aspnetcore本文基于 ASP.NET Core 仓库的 DailyBuilds 官方文档 展开讲解如何获取和使用 ASP.NET Core 的每日构建Daily/Nightly Builds包括为项目配置指向 dnceng 每日构建 NuGet 源的 NuGet.Config、按平台下载最新的 ASP.NET Core 共享框架Shared Framework安装包与二进制文件以及配置 Visual Studio 以调试每日构建产物。读完本文你将能够把任意 ASP.NET Core 应用指向最新的每日构建包进行尝鲜验证并具备在无源码符号服务器上调试框架内部代码的能力。1. Daily Builds 是什么适用边界在哪里Daily builds 包含 ASP.NET Core 仓库中最新的源码变更。官方文档明确给出三点定位见 docs/DailyBuilds.md包含最新变更Daily builds 会持续纳入主干上的最新源码修改不用于生产它们不受支持not supported for production use且可能频繁变化尽力保证可用官方会尽力确保每日构建功能正确但出现问题时它只是定位新 bug 或验证修复的渠道不是稳定的发布渠道。从仓库当前状态可以推断其定位仓库的 eng/Versions.props 中定义了AspNetCoreMajorVersion为11且eng/Version.Details.props中各依赖包版本形如11.0.0-rc.1.26427.131——即当前主干处于 11.0 的预发布阶段这类 pre-release 版本只会发布到每日构建源而不会出现在 NuGet.org 的正式版中。因此Daily builds 的典型使用场景是在正式版本发布前验证某项新特性、复现上游刚修复的问题、或追踪某个 PR 合入后的实际行为。获取每日构建有两条互补的路径后文分别展开NuGet 包路线让应用项目从 dnceng 的每日构建 NuGet 源恢复Microsoft.AspNetCore.*预发布包适合自包含/框架引用方式开发验证运行时路线直接下载安装最新的 ASP.NET Core Shared Framework 安装包或二进制文件适合验证运行时行为、部署冒烟测试。两条路线都需要先准备好对应的 .NET SDK 每日构建因为新版 target framework 往往需要 prerelease 工具链支持。2. NuGet 路线为项目配置每日构建源2.1 前置条件SDK 每日构建第一步是获取最新的 .NET Core SDK 每日构建官方文档指向 dotnet 仓库的 builds table。如果使用的是稳定版 SDK可能无法识别每日构建包中的新 target framework 或新特性 API仓库自身也是这一做法的例证——其 global.json 固定使用11.0.100-rc.1.26420.103这一预发布 SDK 版本并给出明确的报错提示{ sdk: { version: 11.0.100-rc.1.26420.103, paths: [.dotnet, $host$], errorMessage: The .NET SDK could not be found, run ./restore.cmd or ./restore.sh first. } }其中paths中的.dotnet表示仓库期望把 SDK 安装到本地目录通过restore.sh/restore.cmd触发$host$则回退到全局安装的 SDK。2.2 各主版本的 NuGet.Config 配置官方文档为每个仍在维护的主版本提供了独立的每日构建 feed。以下配置需完整继承——将其保存为项目目录下的NuGet.Config注意大小写按 NuGet 约定文件名为NuGet.Config或nuget.config均可被识别NET 8?xml version1.0 encodingutf-8? configuration packageSources clear / add keydotnet8 valuehttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet8/nuget/v3/index.json / add keyNuGet.org valuehttps://api.nuget.org/v3/index.json / /packageSources /configuration.NET 9?xml version1.0 encodingutf-8? configuration packageSources clear / add keydotnet9 valuehttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet9/nuget/v3/index.json / add keyNuGet.org valuehttps://api.nuget.org/v3/index.json / /packageSources /configuration.NET 10?xml version1.0 encodingutf-8? configuration packageSources clear / add keydotnet10 valuehttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet10/nuget/v3/index.json / add keyNuGet.org valuehttps://api.nuget.org/v3/index.json / /packageSources /configuration.NET 11?xml version1.0 encodingutf-8? configuration packageSources clear / add keydotnet11 valuehttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet11/nuget/v3/index.json / add keyNuGet.org valuehttps://api.nuget.org/v3/index.json / /packageSources /configuration各配置项的作用元素作用clear /清除继承自用户级/机器级 NuGet 配置的既有源确保源列表是干净、可预期的add keydotnetX ... /添加对应主版本的 dnceng 每日构建 feed其中的Microsoft.AspNetCore.*包带有与主干匹配的 pre-release 版本号add keyNuGet.org ... /保留 NuGet.org 作为回退源用于恢复第三方依赖非 ASP.NET Core 的包关于版本选择由于每日构建的 pre-release 版本号通常高于正式版例如11.0.0-*高于11.0.x正式号只要项目未锁死版本号dotnet restore时 NuGet 会优先选中每日构建源中的最新 pre-release 包这正是吃到每日构建的机制。2.3 关键注意事项NuGet.Config 的作用域官方文档特别强调原文 NOTE这份 NuGet.Config 应当放在你的应用旁边除非你希望机器上的其他应用也开始恢复 nightly 包。也就是说放到项目目录或解决方案目录只有该项目的恢复行为受影响隔离性最好是推荐做法放到用户级/机器级配置位置本机所有项目的 restore 都可能开始解析到每日构建的 nightly 包造成环境污染一般只在专用的开发机上这样做。这一建议与仓库自身的组织方式一致ASP.NET Core 仓库根目录就有一份带dotnet8/dotnet9/dotnet10/dotnet11等每日构建源的 NuGet.config其中标注了Package sources managed by Dependency Flow automation——它只对该仓库的构建生效。对照 docs/UpdatingMajorVersionAndTFM.md 中的说明可以进一步看到该源配置的演进规则每新增一个主版本就需要把现有 feed如dotnet8和dotnet8-transport复制出对应新版本的条目dotnet9、dotnet9-transport并尽量移除旧 feed。这里出现了文档正文未展开的概念——transport feed2.4 仓库源码佐证transport feed 与版本命名仓库根 NuGet.config 中每个主版本 feed 都有一个形如dotnetX-transport的配对源例如add keydotnet11-transport valuehttps://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet11-transport/nuget/v3/index.json /从源码结构看transport feed 用于传递仓库构建期间需要、但尚未发布到正式 dotnetX feed 的跨仓库依赖。eng/Version.Details.props 中的MicrosoftInternalRuntimeAspNetCoreTransportPackageVersion当前值11.0.0-rc.1.26427.131经由MicrosoftInternalRuntimeAspNetCoreTransportVersion属性被 global.json 的tools.runtimes引用用于下载匹配版本的运行时。对普通使用者而言应用级配置通常只需要dotnetX主 feed NuGet.org 两个源即上文四个模板transport feed 主要服务于 ASP.NET Core 仓库自身及其构建链但若你的场景涉及恢复仓库内部的实验性组件则需要理解这一机制。3. 运行时路线下载 ASP.NET Core 每日构建的 Shared Framework除了 NuGet 包还可以直接下载 ASP.NET Core 共享框架的每日构建。官方文档指引到 README.md 的Nightly builds小节其中提供了一张按平台组织的下载表当前指向 11.0 每日构建平台Shared Framework安装包Shared Framework二进制Hosting Bundle安装包Windows x64InstallerBinariesInstallerWindows x86InstallerBinariesInstallerWindows arm64InstallerBinariesInstallermacOS x64N/ABinariesN/AmacOS arm64N/ABinariesN/ALinux x64Deb / RPMBinariesN/ALinux armN/ABinariesN/ALinux arm64RPMBinariesN/ALinux-musl x64/arm/arm64N/ABinaries 等N/AREADME 原文对三列的说明值得完整保留Hosting Bundle包含 ASP.NET Core Shared Framework、.NET Runtime Shared Framework 以及 IIS 插件ASP.NET Core Module如果不确定自己需要什么安装 SDK 即可——它包含除 IIS 插件之外的一切。表中 URL 采用aka.ms/dotnet/{版本}/daily/...短链形式会持续重定向到当天的最新构建因此无需每天抓取新链接。配套说明.NET Runtime 的每日构建与 .NET SDK 的每日构建分别在 dotnet/runtime 与 dotnet 仓库的对应文档中提供README 表格脚注给出。也就是说一次完整的每日构建尝鲜可能涉及三块组件——SDK编译、Runtime执行、AspNetCore Shared FrameworkWeb 运行时三者版本应保持在同一主干时间点上。4. 用 Visual Studio 调试 Daily Builds尝鲜每日构建后往往需要直接调试框架内部实现。官方文档给出了四项必须调整的 Visual Studio 设置docs/DailyBuilds.md启用 Source Link 支持Enable Source Link support使调试器能通过源码仓库还原源文件路径与内容启用 source server 支持Enable source server support允许调试器从远程 source server 拉取当时的源文件禁用 Just My CodeEnable Just My Code 应关闭否则调试器会跳过框架/库代码无法进入 ASP.NET Core 内部Symbols 中启用 Microsoft Symbol Servers从微软符号服务器下载与构建匹配的 PDB。这四项分别对应找到源码 → 拉取源码 → 不跳库代码 → 解析符号的调试闭环缺一环都可能导致断点变灰或栈帧无法显示源码。另外官方文档还提醒某些功能例如新的 target framework可能需要Visual Studio 的 prerelease 工具链才能支持这些工具链可通过 Visual Studio Preview 获取。这与第 2.1 节的SDK 每日构建是同一件事的两面SDK/VS 工具链决定你能编译到什么版本NuGet feed 决定你能引用到什么版本。5. 补充从本仓库本地构建 ASP.NET Core如果你不只是想使用每日构建而是想自己从源码构建本文仓库即 aspnetcore 仓库本身官方提供了一键恢复脚本。仓库根目录的 restore.sh 与 restore.cmd 做的事情完全一致# restore.sh $DIR/eng/build.sh --all --restore --no-build $:: restore.cmd PowerShell ... -Command ... %~dp0\eng\build.ps1 -all -nobuild -restore %*; exit $LASTEXECUTE ...即调用 Arcade 构建入口 eng/build.sh/eng/build.ps1以--all --restore --no-build恢复整棵依赖图。结合 docs/BuildFromSource.md 的说明restore完成后即可用eng/common/build.sh --all之类的命令进行完整构建。构建产物的版本由 eng/Versions.props 的VersionPrefix$(AspNetCoreMajorMinorVersion).$(AspNetCorePatchVersion)当前即11.0.0控制。6. 快速核对清单确认目标主版本8/9/10/11取得对应dotnetX每日构建 feed 的 NuGet.Config 模板本文 2.2 节四份配置将 NuGet.Config 放在应用/项目目录下而非用户级配置避免污染本机其他项目的 restore同步获取 .NET SDK 每日构建涉及新 TFM 时确认使用 Visual Studio Preview 工具链需要验证运行时行为时从 README.md Nightly builds 表下载对应平台的 Shared Framework不确定就装 SDK调试前按第 4 节开启 Source Link / source server关闭 Just My Code启用 Microsoft Symbol Servers记住边界daily builds 不适用于生产功能与行为可能随时变化。以上即 docs/DailyBuilds.md 覆盖的全部操作要素——NuGet 每日源配置四个主版本模板、SDK/Preview 工具链前置条件、项目级 NuGet.Config 作用域注意事项、Visual Studio 四项调试设置以及指向 README.md Nightly builds 表的下载入口——并补充了仓库自身的NuGet.config、Version.Details.props、global.json与 restore 脚本作为实现层面的佐证。【免费下载链接】aspnetcoreASP.NET Core is a cross-platform .NET framework for building modern cloud-based web applications on Windows, Mac, or Linux.项目地址: https://gitcode.com/GitHub_Trending/as/aspnetcore创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考