ASP.net 5发布的输出太大了吗?

时间:2015-12-16 02:31:40

标签: asp.net asp.net-core publish

我有一个从空模板创建的准系统ASP.net 5 Web项目。

我在文件系统中发布它。我在/ bin / WebsiteName / Release / PublishOutput中有文件夹/ approot,/ logs和/ wwwroot。

/ approot文件夹本身就是103MB。

这似乎有点多了。如何降低?

如果是这样的话,我可能不知道哪些新概念?

1 个答案:

答案 0 :(得分:0)

该文件夹包含应用程序,其依赖项和运行时。基本上,您运行应用程序所需的一切。将它移动到另一台机器,它运行,没有其他需要。如果应用程序在CoreCLR上运行,那么该文件夹的很大一部分很可能只是运行时。

现在,有几种方法可以减少部署包的大小,但是您必须在目标服务器上获取依赖项和/或运行时。

所以,一个完整的应用程序,所有内容都将以dnu发布,如下所示:

dnu publish --runtime <runtime1> ... --runtime <runtimeN> --no-source`
  1. 仅针对特定框架发布。如果您的应用同时定位dnxcore50(CoreCLR)和dnx451(桌面CLR),则可以选择仅使用dnu publish发布其中一个:

    dnu publish --framework dnxcore50 --runtime <the framework for dnxcore50>

  2. 不要发布运行时。保留运行时并在目标计算机上以其他方式获取它(Azure WebSites的功能):

    dnu publish(否--runtime

  3. 我不推荐这个,但如果你真的想要,你可以在服务器上编译目标应用程序,只发布源代码。然后,您可以在服务器上恢复(dnu restore)。

  4. 检查您是否确实需要应用包含的所有软件包。例如,您是否包含System.Linq.Expressions但不使用它?它将被发布,因为发布算法无法确定实际使用的内容。