ASP.NET 5: 发布时我的输出 DLL 在哪里?

ASP.NET 5: Where are my output DLLs when publishing?

发布 ASP.NET 5 网络应用程序时我的输出 DLL 在哪里?

当 运行 MSBuild 的 FileSystemPublish 时,发布目录如下所示:

MSBuild.exe "C:/MyApplication/MyProj.xproj" /t:Build,FileSystemPublish /p:PublishConfiguration=Release /p:PublishOutputPathNoTrailingSlash="C:/a/MyApplication"

从日志输出我可以看到 dnu publish 被调用:

dnu publish "C:/MyApplication" --out "C:/a/MyApplication" --configuration Release --runtime dnx-clr-win-x86.1.0.0-beta6 --quiet

如果我查看内部 web.cmd 我可以看到 DNX 确实是 运行 来自源代码的应用程序:

@"%~dp0approot\runtimes\dnx-clr-win-x86.1.0.0-beta6\bin\dnx.exe" --appbase "%~dp0approot\src\MyApplication" Microsoft.Framework.ApplicationHost web %*

我能够成功地将 IIS 指向 wwwroot 目录。

IIS 如何知道调用 web.cmd?这是在生产环境中提供 ASP.NET 5 应用程序的正确方法吗?

  1. IIS 不调用 web.cmd。 IIS 知道如何从 wwwroot 文件夹加载 AspNet.Loader
  2. 在生产环境中,您可能不想从源代码编译,因为启动速度非常慢。您应该发布预编译的二进制文件。您可以通过将 --no-source 传递给 dnu publish:

dnu publish "C:/MyApplication" --out "C:/a/MyApplication" --configuration Release --runtime dnx-clr-win-x86.1.0.0-beta6 --no-source

问题已过时

根据最新的社区站会(请参阅 Announcement),IIS 和 asp.net 5 之间的 HELIOS 集成已停止。正在进行的 MS 提供的唯一服务器是 kestrel。 IIS 本身不会识别 DNX 项目。

您必须通过使用 HttpPlatformHandler (IIS8+) 进行反向代理来启动 kestrel 并将其集成到 IIS 中。