【问题标题】:ASP.NET 5: Where are my output DLLs when publishing?ASP.NET 5:发布时我的输出 DLL 在哪里?
【发布时间】:2015-09-17 06:32:46
【问题描述】:

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

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

  • approot 文件夹:包、运行时和源代码
  • wwwroot 文件夹:web.config 和 AspNet.Loader.dll
  • 网络
  • web.cmd

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 应用程序的正确方法吗?

【问题讨论】:

    标签: msbuild asp.net-core asp.net-core-mvc dnx dnu


    【解决方案1】:
    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

    【讨论】:

    • 感谢您的回答!首先,是否可以从 web.cmd 运行应用程序?其次,如何通过MSBuild提供--no-source
    • web.cmd 主要用于非 iis 平台上的自托管。
    【解决方案2】:

    问题已过时

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多