更新到ASP NET 5 beta5打破了一切

Snæ*_*ørn 5 c# dnx dnvm asp.net-core

我在更新到beta5时遵循了本指南,并且更新过程似乎有效.

http://blogs.msdn.com/b/webdev/archive/2015/06/30/asp-net-5-beta5-now-available.aspx

要更新到ASP.NET 5 Beta5,请使用以下步骤:

  • 如果您还没有安装.NET版本管理器(DNVM)(它预装了Visual Studio 2015 RC,或者您可以获得最新版本)
  • 从命令提示符处将DNX_FEED环境变量设置为https://www.nuget.org/api/v2
  • 运行"dnvm upgrade"在您的应用程序中更新您的global.json以指向beta5版本的.NET执行环境(DNX)
  • 你的project.json也指向beta5包版本
  • 运行"dnu restore"运行"dnu build"并将代码迁移到需要的beta5

但是我遇到构建错误,说我丢失了程序集.它抱怨System.Void,这样就丢失了.它也找不到来自Microsoft.AspNet.MVC的Controller:/

如果我恢复到beta4然后再次工作.

我错过了什么步骤?

DNVM列表(这将恢复为beta4)

Active Version           Runtime Architecture Location                      Ali
                                                                            as
------ -------           ------- ------------ --------                      ---
       1.0.0-beta4       clr     x64          C:\Users\MySelf\.dnx\runtimes
  *    1.0.0-beta4       clr     x86          C:\Users\MySelf\.dnx\runtimes
       1.0.0-beta4       coreclr x64          C:\Users\MySelf\.dnx\runtimes
       1.0.0-beta4       coreclr x86          C:\Users\MySelf\.dnx\runtimes
       1.0.0-beta5       clr     x86          C:\Users\Myself\.dnx\runtimes def
       1.0.0-beta5-12103 clr     x86          C:\Users\MySelf\.dnx\runtimes
Run Code Online (Sandbox Code Playgroud)

Sha*_*tin 8

我刚刚将Visual Studio 2015 ASP.MVC Web应用程序从beta4升级到beta5,现在已经运行了.以下是您遵循的说明的一些补充.

运行"dnvm upgrade"

在这之后,这dnvm list将是输出.

Active Version           Runtime Architecture Location                       Alias
------ -------           ------- ------------ --------                       -----
       1.0.0-beta4       clr     x64          C:\Users\BigFont\.dnx\runtimes
       1.0.0-beta4       clr     x86          C:\Users\BigFont\.dnx\runtimes
       1.0.0-beta4       coreclr x64          C:\Users\BigFont\.dnx\runtimes
       1.0.0-beta4       coreclr x86          C:\Users\BigFont\.dnx\runtimes
  *    1.0.0-beta5       clr     x86          C:\Users\BigFont\.dnx\runtimes default
       1.0.0-beta5-12087 clr     x86          C:\Users\BigFont\.dnx\runtimes
Run Code Online (Sandbox Code Playgroud)

在您的应用中,将global.json更新为指向beta5

global.json指向特定 beta5的构建的:

{
    "projects": [ "src", "test" ],
    "sdk": {
        "version": "1.0.0-beta5"
    }
}
Run Code Online (Sandbox Code Playgroud)

你的project.json也指向beta5包版本

project.json参考beta5.这将使dnu恢复最新版本(好吧,有点 - David Fowl在这里描述了"浮动版本"的细微差别.)

"dependencies": {
  "Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
  "Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
  "Microsoft.AspNet.StaticFiles": "1.0.0-beta5"
},
Run Code Online (Sandbox Code Playgroud)

...根据需要将代码迁移到beta5

一旦您停止收到有关丢失基本对象的System.Void错误,您可能会收到有关更改错误的错误.这可能需要一些研究来解决,具体取决于您的代码库使用的内容.例如,如果您使用的是ASP.NET身份,则需要更改此设置:

SignInManager.PasswordSignInAsync(
    model.Email, model.Password, model.RememberMe, shouldLockout: false);
Run Code Online (Sandbox Code Playgroud)

对此:

SignInManager.PasswordSignInAsync(
    model.Email, model.Password, model.RememberMe, lockoutOnFailure: false);
Run Code Online (Sandbox Code Playgroud)

最后的注释:Visual Studio

在Visual Studio中关闭并重新打开解决方案可以解决更新global.jsonpackage.json文件后的还原/构建问题.

另请参阅:ASP.NET 5(vNext)Web项目:库冲突从beta4升级到beta6

  • 1.0.0-beta5问世.这是beta5的最后一个版本.无需指定构建号或浮动版本.这毫无意义. (2认同)
  • 是的!你说对了!顺便说一下,你想要在实际测试版发布时删除 - *的原因是因为当我们部署到NuGet.org以便于安装官方版本时我们会做一些奇怪的事情.当我们发布到nuget.org时,我们会删除内部版本号.这意味着1.0.0-beta5- {somebuild}> 1.0.0-beta5,这不是很好,但它可以更容易地找到正确的软件包版本. (2认同)
  • 不,那真的不重要.它会减少噪音,但大部分都是无害的. (2认同)