我installed .net core from this site,隨後用於測試的「Hello World」控制檯應用程序的三個步驟的說明:對.NET核心意外的NuGet行爲
dotnet new
dotnet restore
dotnet run
一切工作,和控制檯應用程序成功運行。
然而,restore
步驟做了兩件意想不到的事情。首先,它將軟件包恢復到NuGet的全局包文件夾(%userprofile%\.nuget\packages
)。這種全球安裝以前從未是NuGet的默認行爲。當然,如果dotnet restore
在內部使用nuget.exe ...此行爲可能是由於缺少Visual Studio解決方案文件。
但是,這隻能強調第二個意想不到的行爲。 restore
操作將85個軟件包安裝到全局NuGet軟件包文件夾中。實際上,所有這些軟件包都不是示例控制檯應用程序所需要的。看起來,這完全違背了對.Net Core聲明的所有內容。
例如,對於這個簡單的 「Hello World」 控制檯應用程序,這裏有一些已安裝的軟件包:
- runtime.win7.System.Net.Sockets
- System.Globalization.Calendars
- System.Linq的
所以這沒有什麼,我的意思是簡單的「Hello World」控制檯應用程序,這裏是整個程序的疑問:
using System;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
我期望的是示例控制檯應用程序所需的包數量將介於0和3-ish之間。再次,根據.Net Core的聲明,我預計NuGet包將在本地安裝 - 與示例控制檯應用程序本身位於同一文件夾中。
有人能澄清一下爲什麼這個行爲與.Net Core的主張不矛盾嗎?
我認爲值得注意的是,在.NET Core中,所有的依賴關係都是可傳遞的。這意味着如果您在應用程序中包含軟件包,則還會包含依賴關係所依賴的所有軟件包。像一個包(如標準庫或Asp.NET MVC包)一樣,可以導入完整的應用程序模型或基礎庫。有龍:) – Thomas