"C:\Program Files\dotnet\dotnet.exe" publish --configuration Release -r win10-x64 --self-contained
Microsoft (R) Build Engine version 15.3.409.57025 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Trimmed 191 out of 405 files for a savings of 31.62 MB
Final app size is 59.5 MB
[projectName] -> [path]\bin\Release\netcoreapp2.0\win10-x64\[projectName].dll
Trimmed 191 out of 405 files for a savings of 31.62 MB
Final app size is 59.5 MB
[projectName]-> [path]\bin\Release\netcoreapp2.0\win10-x64\publish\
3 回答
正如DavidG指出的那样,Microsoft.AspNetCore.All包只是一个元包 . 是的,它引用了涵盖ASP.NET Core 2.x和Entity Framework Core 2.x的所有软件包,是的,这意味着它非常庞大 . 但是,除非您考虑应用程序的运行时部分,否则这些程序包不会随您的应用程序一起部署 .
引入.All元数据包的原因之一是减少项目文件中的混乱,并且它做得很好 . 现在你仍然会在你的deps.json文件中获得大量的依赖项,除非你按照下面的描述进行修剪,但是不包括dll本身 .
这里有几个很好的资源:
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/metapackage
https://github.com/dotnet/standard/blob/release/2.0.0/Microsoft.Packaging.Tools.Trimming/docs/trimming.md
https://andrewlock.net/the-microsoft-aspnetcore-all-metapackage-is-huge-and-thats-awesome-thanks-to-the-net-core-runtime-store-2/ - 稍早一点,因为它引用预览1,但它仍然适用 .
希望有所帮助 .
以pcdev的答案为基础,其中包含对您目前可以阅读的有关此主题的内容的良好参考 .
为简单起见,请执行此操作以启用程序包修剪 .
在cs.proj文件中添加以下条目:
PropertyGroup:TrimUnusedDependencies,true
PackageReference:Microsoft.Packaging.Tools.Trimming
使用此解决方案,您仍然可以引用Microsoft.AspNetCore.All包,但占用空间更小 .
在我的情况下,我正在进行自包含部署(不使用运行时包存储,.net核心程序集的机器范围安装)
我使用cli命令构建我的应用程序:
要获得一个新的ASP.NET Core 2.0应用程序以.Net Framework为目标(例如,使用SpecFlow.NetCore for BDD),打开NuGet Manager以删除
Microsoft.AspNetCore.All
,然后添加Microsoft.AspNetCore
和Microsoft.AspNetCore.Mvc
包 . 建筑应突出显示您需要添加的任何其他包 . 我的最终结果是:您现在可以将.Net Framework 4.6.1作为目标 .
没有收到
Microsoft.AspNetCore.All 2.0.0 is not compatible with Net461
错误 .当然,你放弃了元包的所有优点 .