ASP.NET Core与ASP.NET vNext之间的区别是什么?

13

aspnetcidevaspnetvnext之间有什么区别?

我看到aspnetcidev上写着“快速构建”,但这是什么意思?

2个回答

35

2016年1月29日编辑:

这些信息现在已经包含在ASP.NET维基中:https://github.com/aspnet/Home/wiki/NuGet-feeds


ASP.NET构建系统对于每个分支+nuget.org使用3个myget源。

  • aspnetvolatile<branch>aspnetvolatiledev/aspnetvolatilerelease
  • aspnetci<branch>aspnetcidev/aspnetcirelease
  • aspnetvnext(dev分支)/aspnetrelease(发布分支)

在github.com/aspnet下的每个仓库成功构建后,由其生成的每个软件包都会推送到相应的易失性源。

构建完仓库图后,我们触发Coherence构建。此构建验证包的版本是否匹配以及它们的引用是否正确(即它们是一致的)。然后,将它们推送到aspnetci<branch>

一旦通过了Coherence构建,我们会在aspnetci<branch>源中的软件包上运行所有测试。如果测试通过,我们会签署这些软件包并将它们发送到aspnetvnextaspnetrelease

所以区别在于:

  • aspnetvolatile<branch>

    • 最新的软件包
    • 可能不一致
    • 未经过测试
    • 未签署
    • 每次检入都会更新
    • 主要用于诊断构建失败
  • aspnetci<branch>

    • 可能不是最新的
    • 协同一致的
    • 未经测试的
    • 未签名的
    • 所有仓库成功构建后更新
    • 被我们的构建系统使用
  • aspnetvnext/ (aspnetrelease|nuget.org)

    • 可能不是最新的
    • 协同一致的
    • 已签名的
    • 已测试的
    • 在所有工作正常的情况下更新
    • 用于稳定的包

一旦aspnetcirelease源稳定,我们就会将其中的包推送到nuget.org中。

除非你正在开发ASP.NET的新功能,否则我建议你使用aspnetvnext(用于开发版本)或nuget.org(用于发布版本)。发布源(aspnetrelease)只是一个暂存源,它并不总是处于良好状态。

编辑:

我认为从表格中更容易理解: enter image description here


这些信息很有帮助,但它并没有解释为什么例如aspnetcidev具有castle.core.netcore v3.3.4-beta8,而在aspnetvnext中不存在,以及为什么CoreCLR v1.0.0-beta6-10444存在于aspnetvnext中,但不在aspnetcidev中。为什么aspnetcidevCultureInfoGenerator v1.0.0-rc1-15822EntityFramework.Commands v7.0.0-rc2-16668m,但是"nightly"的 aspnetvnext只有 CultureInfoGenerator v1.0.0-rc1-15732EntityFramework.Commands v7.0.0-rc2-16649(版本差异相对较大)。请参见 https://www.myget.org/gallery/aspnetcidev 和 /aspnetvnext。 - Oleg
我们定期从该源清除软件包,但如果某个软件包不再存在于源中或被重命名,可能会有一些残留物。 - Victor Hurdugaci
在 https://www.myget.org/gallery/aspnetvnext 的版本 v7.0.0-rc2-16649 和 https://www.myget.org/gallery/aspnetcidev 的版本 v7.0.0-rc2-16668 中,EntityFramework.Commands 有什么区别?为什么它们的版本号相差如此之大? - Oleg
16649已于2015年12月28日18:48完成;16668已于2016年1月4日04:36完成。在这两个版本之间,EF每次都构建成功了。不幸的是,上游发生了一些测试失败。如果我们有任何测试失败,我们就不会从aspnetcidev推送任何软件包到aspnetvnext。现在Security存储库中存在一个测试失败。 - Victor Hurdugaci
这是另一个小问题,但根据我的经验,使用不同的 NuGet 源最大的问题是使用本地缓存的程序包。所有程序包都将保存在 %USERPROFILE%\.dnx\packages 中。如果我们构建一个使用 NuGet feed1 的 EntityFramework.Commands 项目,它会将版本保存在本地,然后如果我们构建另一个使用 另一个 NuGet feed2 的项目,那么即使 feed2(我们想要使用的)没有该版本,Visual Studio 也会从缓存中获取最新的版本。这会引起许多问题,必须经常删除完整的 %USERPROFILE%\.dnx\packages - Oleg
显示剩余2条评论

2
我很抱歉,你只能从微软那里得到确切的问题答案。你可以打开https://www.myget.org/gallery,例如过滤“aspnet”,会发现许多其他为不同团队发布的存储库。
对我来说更有趣的是.NET版本管理器显示的信息:dnvm(无参数):

enter image description here

因此,对于我来说,https://www.myget.org/F/aspnetvnext/api/v2/(或https://www.myget.org/F/aspnetvnext/api/v3/index.json)是 ASP.NET 5 夜间构建的“官方”来源。
另一方面,通过筛选 https://www.myget.org/gallery 中的“aspnet”,您可以看到 aspnetvnext 包含更多不同的软件包,而 aspnetcidev 则不同。

enter image description here

很明显,这两个仓库可能包含不同的软件包。
其中一个重要的例子是 https://www.myget.org/gallery/aspnetcidev 仓库可用于新的 .NET 命令行接口(.NET CLI),您可以在 here 的 GitHub 上找到它。新的 dotnet 实用工具同时使用 https://www.myget.org/F/aspnetcidev/api/v3/index.json 和其他许多源在 https://github.com/dotnet/cli/blob/master/NuGet.Config 中。
我认为AspNetCIDev是.NET CLI所需包的存储库。它是该实用程序,应该在ASP.NET 5的RC2中取代dnx和dnu。请参见这篇文章这篇文章和其他一些文章。

aspnetcidev 是我们协同但未经测试的软件包存放的地方。请查看我的答案获取详细信息。 - Victor Hurdugaci
@VictorHurdugaci:谢谢你的信息!在我看来,有很多不同的NuGet存储库提供相同或不同的软件包,这使得许多用户感到困惑。更多关于公共 NuGet 存储库的信息将非常有帮助。 - Oleg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接