使用 Visual Studio 2015 CTP 6 将 MVC 6 站点发布到 IIS

Publishing MVC 6 site with Visual Studio 2015 CTP 6 to IIS

我正在尝试将我正在使用 MVC6(测试版 3)和 Visual Studio 2015 (CTP 6) 开发的网站发布到 IIS。我已将发布设置为针对 KRE 的 x64 版本。发布一切顺利,没有报告任何错误,但我根本无法将网站设置为 运行。

第一个错误是无法找到 project.json,但我通过将 value 键添加到 web.config 中的 kre-app-base 来解决这个问题wwwroot文件夹,所以内容是:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="kpm-package-path" value="..\approot\packages" />
    <add key="bootstrapper-version" value="1.0.0-beta3" />
    <add key="runtime-path" value="..\approot\packages" />
    <add key="kre-version" value="1.0.0-beta3" />
    <add key="kre-clr" value="clr" />
    <add key="kre-app-base" value="..\approot\packages\ElectricFreedom.WebUI.0.0\root" />
  </appSettings>
</configuration>

然后我得到另一个错误:

在错误的页脚中,它声明它正在使用 Microsoft.AspNet.Loader.IIS 版本 "beta2"!当项目全部设置为使用 "beta3" 时,为什么要这样做?

我已经检查了我的项目的 project.json,并且所有依赖项都列为 "beta3" 版本,但是发布仍然复制了很多 "beta2" 除了"beta3" 个版本。例如,在目录中查找 Microsoft.AspNet.Loader.IIS 会显示两个子目录,一个用于 "beta2",另一个用于 "beta3"。如果我删除 "beta2" 目录,那么我会完全得到另一个错误:

如您所见,此错误表明它正在使用 Microsoft.AspNet.Loader.IIS 的 "beta3" 版本,但它现在却在抱怨依赖注入。

所有这些在 Visual Studio 2015 CTP5 with MVC 6 (beta 2) 中运行良好。我唯一需要做的就是将 value 键添加到 kre-app-base 中,因为某些原因发布未能做到这一点。在 IIS Express 中调试该站点时,该站点也能正常工作,并且在执行此操作时我得到了上面报告的 none 个错误。

是否有可能导致这些错误发生的任何配置文件或设置?我是否漏掉了一些明显的东西?

谢谢,

似乎有一些在发布过程中创建的临时文件没有在版本之间删除。它们位于 %temp%\AspNetPublish\[ProjectName],删除该文件夹消除了我看到的错误,因为它清除了所有不应该发布并且肯定与新版本冲突的旧 DLL 文件。

我可以通过在 CTP6 中打开 CTP5 项目来重现它。我清楚地看到了某些程序集的问题。

我做了以下事情。

  1. 在 Project.json 中将依赖项中的 beta2 替换为 beta3。

  2. 一旦您执行第 1 步,它会给您带来与迁移相关的问题,其背后的原因是命名空间和 AccountController 中某些方法的 return 类型发生了一些变化。如果您在发布后删除迁移目录和 AccountController,它将成功呈现 home/index.