前几天使用了一次ants memory profiler软件,之后发现VS无法创建.net core项目了,只有framework项目。不确定是不是它带来的冲突。
没找到办法,于是卸载VS,重装,这一弄不得了。直接把VS弄坏了,重装后,VS无法编译任何项目,打开项目之后,发现所有NuGet引用包都是这样。中间还有一次没弄好,搞得VS2019无法安装,卸载干净之后才装上。
目前已安装VS2019 ,VS2022
之后,便是无尽的惆怅!!!没想到这么个小事情,把我这几年的程序猿能难到不行!!!
更新的时候发现提示要包源映射。还有的是红色叉号,当时没有截图
各种乱象丛生:
1:打开项目nuget包无法自动更新
2:手动更新,提示失败,要么是手动更新一个包,结果所有包都来了一次更新,等半天最后提示失败.,如NuGet 错误 NU1101、"ResolvePackageAssets" task failed unexpectedly due to max path limitation of NuGet package cache.....
3:NuGetPackages未找到
4:更新包:提示“需要包源映射”,设置了映射之后,依然无法工作。
以上报错,有些可以通过错误提示来解决,比如NuGetPackages未找到,一般是放在了“C:\Program Files (x86)\Microsoft Visual Studio\Shared”下,如果没有该文件夹,手动创建一个即可。nuget的包会下载到这个文件夹,但依然不能解决我遇到的问题。
最后的现象就卡在这里了,“需要包源映射”!!!NuGetPackages文件夹下不知道何时已经下载了很多包,但为什么它就识别不到呢,很奇怪!你都把东西放进口袋里了,不知道从口袋里拿???
痛定思痛,实在不想重装系统!我觉得这只是个很小的错误,于是想设置包源怎么会没用呢???一定是哪里配置不对,于是去官网寻找答案
官方介绍也很简单,跟着操作就行了,但我试了很多遍都不行。
最后,时间从昨天来到今天上午,按照文档,我把默认全局包文件夹的位置换个位置
修改配置文件C:\Program Files (x86)\NuGet\Config\Microsoft.VisualStudio.Offline.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\"/>
</packageSources>
<!-- 加入该配置,自定义位置E:\NuGet\packages -->
<config>
<add key="globalPackagesFolder" value="E:\NuGet\packages" />
</config>
</configuration>
我是想,以前的位置既然不行,那换个位置,于是呢,原来的项目还是不能编译,“需要包源映射”依然提示!!!于是重新创建个项目试试,发现其实从nuget下载的包是可以到达E:\NuGet\packages下的,看来还是设置上存在猫腻!
下一步找到配置文件NuGet.Config,也许每个人的机器上会不一样,我的是在:“C:\Users\用户名\AppData\Roaming\NuGet”下,用Everything搜到的。打开配置文件发现,与官方的不太一样,其中packageSources项和packageManagement项呈现的是父子关系(当时没截图,没备份),而官方配置看起来是平级的
看官方文档介绍:
- 在
nuget.config
文件中声明所需的包源。 - 在源声明之后,添加
<packageSourceMapping>
元素,它指定每个源的所需映射。 - 为每个正在使用的源声明一个
packageSource
元素。- 根据需要添加任意数量的模式。
mapping关系每次修改,都会存在这里。
简单点,我直接把官方这段拿过来用,稍作修改。重启VS 2022
啊!美好的事情发生了,竟然OK了。黄色感叹号都消失了。编译通过!
之后打开VS2019,有些引用在经过手动调整后,也好了。
整个过程,还是有点糊涂的。这个节点官方说是适用于PackageRefrence的项目,但我的其实是Package.config。
总之,就先这样吧。。。不敢再折腾了!
参考: