单独清除某个包的本地缓存比较麻烦,没有专门的命令,为了省事,采用了下面的命令清除所有包的缓存
dotnet nuget locals all -c
清除所有包缓存需要重新构建很久
dudu大佬,你好。当初做毕业设计时在 ASP.NET Core 2.0 环境下做网站的过程中,对于nuget包管理我一般采用两种方案,希望对你有所帮助。因为对dnc不是很了解又是第一次接触开发,当时看微软参考文档自学的,所以不清楚缓存包的概念,希望没有浪费你的时间。
.NET Core 使用Nuget包一般是先写入csproj文件,然后下载保存在\bin\Debug\netcoreapp2.0\publish\下,所以可以采用如下方案进行删除操作。
第一种:修改配置和手动删除文件(不建议)
对于任何系统环境下都有效,直接修改csproj文件,nuget包都包含在这个文件下,修改后删除你本地相同包名称的文件就行。
例如:删除<PackageReference Include="Microsoft.AspNetCore.Session" Version="2.0.1" />这行代码后(本行删除后重新打开项目,该nuget包就被项目移除了),删除 项目位置\bin\Debug\netcoreapp2.0\publish\Microsoft.AspNetCore.Session.dll 文件就可以删除该nuget包。
第二种:采用 Nuget 包管理命令(建议)
使用如下命令进行Nuget包的删除操作(对于所有安装.NET Core 的系统都通用):
以删除Microsoft.AspNetCore.Session包为例:在项目目录下使用如下命令即可,由于没有安装Linux下的.NET Core
所以在Windows下做演示。
F:\文档\Visual Studio Code\MyWeb\MyWeb.Web>dotnet remove MyWeb.Web.csproj package Microsoft.AspNetCore.Session
info : Removing PackageReference for package 'Microsoft.AspNetCore.Session' from project 'MyWeb.Web.csproj'.
你可以参考官网说明:https://docs.microsoft.com/zh-cn/nuget/tools/dotnet-commands
其中移除命令的具体使用如下:
使用情况: dotnet remove <PROJECT> package [选项] <PACKAGE_NAME>
参数:
<PROJECT> 要操作的项目文件。如果未指定文件,则命令会在当前目录下搜索一个文件。
<PACKAGE_NAME> 要删除的包引用。
你这里说的是删除nuget包引起,我提的问题是删除nuget包本地缓存,从nuget服务器重新下载
@dudu:
谢谢,确实如此。
如果安装包时遇到问题或想要确保从远程库安装包,使用 locals --clear
选项 (dotnet.exe) 或 locals -clear
(nuget.exe),指定要清除的文件夹,或使用 all
清除所有文件夹。难怪我没用过这个命令,因为平时没关心过缓存文件夹里的文件,至少对正在使用的项目本身的影响我尚不理解,dudu大佬,按我个人理解项目不会添加没有写入配置文件里的缓存区的下Nuget 包,我们清除缓存是在缓存区某个Nuget包出现问题时,而使用该包的项目添加了这个存在问题的Nuget包从而导致项目无法执行目标操作,然后清除这些缓存包让项目重新添加正常的Nuget包吗?如果是解决某个包的问题建议参考以下解决方案:
nuget install <packageID | configFilePath> [options]
options: NoCache 防止 NuGet 使用缓存的包。
本人小白,有点爱钻牛角尖,如有冒犯多多包含,谢谢各位。
@河图书卦: 提问时对应的场景是:在nuget服务器上发布了同样版本号的nuget包,想让客户端重新从服务器下载
vs2022 依赖--》包--》找到要删除的包--》右键---》打开文件夹--》就会打开这个包在的文件夹 后退一下 删除之