我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