當Visual Studio使用Empty模板創建一個ASP.NET Core 2.0項目時,它會自動引用一個依賴於所有東西(我能想到的每個ASP.NET相關包)的Microsoft.AspNetCore.All包。在我看來,它擊敗了ASP.NET Core的核心優勢(模塊化)。無需Microsoft.AspNetCore.All軟件包即可創建ASP.NET Core 2.0項目嗎?
我可以讓Visual Studio在每個項目中都不包含這個包嗎?
當Visual Studio使用Empty模板創建一個ASP.NET Core 2.0項目時,它會自動引用一個依賴於所有東西(我能想到的每個ASP.NET相關包)的Microsoft.AspNetCore.All包。在我看來,它擊敗了ASP.NET Core的核心優勢(模塊化)。無需Microsoft.AspNetCore.All軟件包即可創建ASP.NET Core 2.0項目嗎?
我可以讓Visual Studio在每個項目中都不包含這個包嗎?
正如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://andrewlock.net/the-microsoft-aspnetcore-all-metapackage-is-huge-and-thats-awesome-thanks-to-the-net-core-runtime-store-2/ - 因爲它引用第一個預覽版,但它仍然適用年紀大一點的。
希望有所幫助。
建立在pcdev的答案,其中包含很好的參考您目前可閱讀關於此主題。
爲簡單起見,請執行此操作以啓用封裝修剪。
在cs.proj文件中添加以下條目:
<PropertyGroup>
<TargetFramework>netcoreapp2.0</TargetFramework>
<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
<TrimUnusedDependencies>true</TrimUnusedDependencies>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Packaging.Tools.Trimming" Version="1.1.0-preview1-25818-01" />
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.3" />
</ItemGroup>
</Project>
有了這個解決方案,你仍然可以參考Microsoft.AspNetCore.All包年齡,但實現更小的佔地面積。
在我來說,我做自我包含的部署(不使用運行時包店,.NET的核心組件的計算機範圍安裝)
我建立我的應用程序CLI命令:
"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\
只需卸下參考元包... – DavidG
一旦你刪除Microsoft.AspNetCore.All你可能需要添加Microsoft.AspNetCore和Microsoft.AspNetCore.Mvc – borisdj
@DavidG它已經被安裝並且佔用空間在我的硬盤上......在當前狀態下刪除它是沒有意義的,因爲它會被重新下載,並且r每次創建項目時都會安裝。 – user2286759