我有一个从空模板创建的准系统ASP.net 5 Web项目。
我在文件系统中发布它。我在/ bin / WebsiteName / Release / PublishOutput中有文件夹/ approot,/ logs和/ wwwroot。
/ approot文件夹本身就是103MB。
这似乎有点多了。如何降低?
如果是这样的话,我可能不知道哪些新概念?
答案 0 :(得分:0)
该文件夹包含应用程序,其依赖项和运行时。基本上,您运行应用程序所需的一切。将它移动到另一台机器,它运行,没有其他需要。如果应用程序在CoreCLR上运行,那么该文件夹的很大一部分很可能只是运行时。
现在,有几种方法可以减少部署包的大小,但是您必须在目标服务器上获取依赖项和/或运行时。
所以,一个完整的应用程序,所有内容都将以dnu
发布,如下所示:
dnu publish --runtime <runtime1> ... --runtime <runtimeN> --no-source`
仅针对特定框架发布。如果您的应用同时定位dnxcore50
(CoreCLR)和dnx451
(桌面CLR),则可以选择仅使用dnu publish
发布其中一个:
dnu publish --framework dnxcore50 --runtime <the framework for dnxcore50>
不要发布运行时。保留运行时并在目标计算机上以其他方式获取它(Azure WebSites的功能):
dnu publish
(否--runtime
)
我不推荐这个,但如果你真的想要,你可以在服务器上编译目标应用程序,只发布源代码。然后,您可以在服务器上恢复(dnu restore
)。
检查您是否确实需要应用包含的所有软件包。例如,您是否包含System.Linq.Expressions
但不使用它?它将被发布,因为发布算法无法确定实际使用的内容。