我installed .net core from this site。使用它会导致一些相关的包管理问题:
dotnet restore 命令继续“安装”.net 核心 NuGet 包。这些软件包“安装”在哪里?未创建新文件夹。 “hello world”最小示例的 dotnet restore 需要大约一百个 NuGet 包,其中 99% 可能与“hello world”应用程序无关。诚然,.net 原生构建将删除所有不需要的东西——但我预计恢复也只会抓取很少的东西(三个或四个包,而不是一百个)。为什么会有这种行为?我创建了第二个“hello world”项目并再次运行 dotnet restore。这次根本没有安装任何软件包。似乎第一次安装的所有软件包都进入了某个全球位置以进行共享。我认为.Net Core 不是这样工作的。我认为 .Net Core 项目将所有依赖项都保存在本地。我针对的唯一框架是 dnxcore50。为什么会有这种行为?我想“卸载”所有这些全局包,然后再试一次(仅用于学习目的)。那怎么可能实现?请记住,如问题 #1 所述,我不知道所有这些文件的安装位置。几乎所有通过 restore 命令安装的软件包都被列为 beta。奇怪的。我认为 .Net Core 处于 RC1 中,而不是 beta 版。对此感到困惑。为什么会有这种行为?
我也很好奇哪些文档可以/会向我解释这一切。我尝试用谷歌搜索这些问题,但一无所获(也许只是可怕的 google-fu?)。
dotnet publish
生成部署包时,这些依赖才会成为本地的。自包含部署模式会将所有依赖项抓取到同一个文件夹中,docs.microsoft.com/en-us/dotnet/core/deploying 不幸的是,此线程是在 Microsoft 创建新的 Docs 站点之前发布的,因此任何未来的读者都应该去查看新的 Docs。
更新:
nuget 包安装在全局位置。默认情况下,它曾经是 ..\Users\[YourUserFolder]\.dnx\packages 但它似乎已更改为 ..\Users\[YourUserFolder]\.nuget\packages
在 NuGet 3+ 中,您可以使用 NuGet CLI 的以下命令来获取 global-packages 文件夹位置
nuget locals global-packages -list
查看以下链接以获取有关 NuGet 的更多详细信息
http://blog.nuget.org/20151008/NuGet-3-What-and-Why.html
https://docs.nuget.org/ndocs/consume-packages/configuring-nuget-behavior
https://docs.nuget.org/ndocs/tools/nuget.exe-cli-reference#locals
默认的 ASP.Net 模板有很多包。由于您第一次尝试,它尝试获取所有这 100 个包您已经在您的 nuget 全球位置拥有这些包,它跳过了恢复。删除 packages 文件夹下的所有内容(位置在 1 中指示)一些 beta 包在那里。您可以转到 project.json 文件(在 web 根目录下可用)并使用依赖项部分。
我刚刚发现 .NET 核心项目中使用的 NuGet 包还有另一个位置。它位于:
C:\Users\[User]\.nuget\packages
我认为这个位置包含常规的 .NET Framework 包。
更新:感谢 brappleye3,这是有关 dotnet restore 的文档的link。
我正在使用 .Net Core 2.x,我认为是 NuGet 4.x。在这里找到包裹位置:
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
dotnet restore
是为“hello world”控制台应用程序执行的,而不是 ASP.Net 应用程序。所以#2肯定有不同的答案。对于#3,是的,我同意他们去了一个全球位置……但这不是 NuGet 的默认行为,也不是 .Net Core 的广告行为。所以#3仍然需要更多的调查。但是,我会将您的回答标记为答案 - 我将再次作为单独的堆栈溢出问题提问。the console app has quite a bit of NuGet packages
。是的,这是绝对正确的。但我在问 为什么 它有很多依赖项。问题是为什么?此外,您的 github 文章链接不起作用。