Visual Studio 2019 常见问题及解决办法
Ø 简介
本文主要记录本人在工作中使用 VS2019 开发时所遇到的问题,以及对应的解决办法。
1. 无缘无故代码报红色波浪线
2. 解决 NU1605 包降级错误
3. 解决 MSB3021 编译报错
4. 配置私有 NuGet 源后使用时报错(401 Unauthorized)
1. 无缘无故代码报红色波浪线
Ø 错误描述
代码中引用的类,或引用的命名空间报红色波浪线,但是项目能正常生成成功,而且也能正常运行。
Ø 解决办法
1) 关闭 Visual Studio;
2) 删除解决方案目录下的 .vs 隐藏目录和文件(该目录和文件会在下次打开项目后自动创建);
3) VS 重新打开项目OK(注意:之前项目中打开的文件会被全部清除掉,需要重新打开)。
2. 解决NU1605 包降级错误
Ø 错误描述
NU1605 检测到包降级: System.Threading 从4.3.0 降级到4.0.11。直接从项目引用包以选择不同版本。
DataModel -> Jingle.HL.Common -> log4net 2.0.8 ->System.Console 4.0.0 -> runtime.unix.System.Console 4.3.0 ->System.Threading (>= 4.3.0)
DataModel -> Jingle.HL.Common -> log4net 2.0.8 ->System.Threading (>= 4.0.11)
Ø 错误原因
1) 从错误信息看出,是因为引用了第三方包"log4net",而导致依赖程序包之间的版本不一致所导致。
2) 在之前发布 Windows 环境时,是没有这个依赖错误的,现在发布到 Linux x64 才出现了这个错误,具体原因不详!?
Window Server 2019 发布选项
CentOS 7.6 发布选项
其实,两者唯一的区别也就是目标运行时,但发布或编译就有了明显区别。
Ø 解决办法
问题描述清楚了,下面是具体的解决办法:
1) 首先,将 log4net 更新为最高版本。
2) 在输出项目,也就需要发布项目".csproj"中添加以下引用声明:
<PackageReference Include="Microsoft.NETCore.Targets" Version="3.1.0" PrivateAssets="all" />
3) 参考官网文档
https://docs.microsoft.com/zh-cn/nuget/reference/errors-and-warnings/nu1605
3. 解决 MSB3021 编译报错
Ø 错误描述
MSB3021无法将文件“E:\Jingle\Projects\HanLin\Api\v1.0.1\Jingle.HL.Api\Jingle.HL.Api\Jingle.HL.Api\obj\Debug\netcoreapp3.1\Jingle.HL.Api.exe”复制到“bin\Debug\netcoreapp3.1\Jingle.HL.Api.exe”。对路径“bin\Debug\netcoreapp3.1\Jingle.HL.Api.exe”的访问被拒绝。 Jingle.HL.Api C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets 4643
Ø 解决办法
1) 这个错误很奇葩,找了两个小时也没找到具体是什么原因,包括搜了下国外的一些网站,也没有找到能解决的办法!
2) 尝试的办法就差重启电脑了,就是因为不想重启,很多应用都打开了不想关闭了重开。尝试了包括:清理解决方案、重新生成解决方案、重启VS、用管理员身份运行VS、删除 \netcoreapp3.1 目录下的文件(但是有3个怎么也删不掉,我想这就是罪魁祸首),还有些其他尝试,怎么都生成报错!
3) 最后,试了下把解决方案的目录名改了,再重新打开VS生成,结果可以了。虽然不是什么好办法,但是至少不用重启。下次重启了,再把路径改回来,不改也行。比如:Jingle.HL.Api 我改为 Jingle.HL.Api2,这是解决方案的根目录,所以不影响整个项目的生成。
4) 最后说明下:像这种 MSB302? 的错误代码,都可以这样尝试下,因为也不单指3021。
5) 看来得意的太早,生成是可以了,但是一运行:
就问尴尬不尴尬?打开这 html 啥也没有,没招了重启吧!
6) 重启就可以了么?答案是 NO
又花了20分钟,找到原因,这个错误其实跟之前的没关系,是因为以下两点导致:
不知道什么时候,在项目根目录下多了一个"App_Offline.htm"文件,该文件默认是空的,有了这个文件项目托管模型就不能设置为进程外,否者就提示上面的错误:
相反,如果要设置为进程外,把这个文件删除即可。
注:"App_Offline.htm" 文件还是有点用的,不过这里用不了就删除吧。
总结:其实最开始的错误提示"MSB3021",改文件目录名是可以的。跟这个"App_Offline.htm"有没有关系就不得而知了。
4. 配置私有 NuGet 源后报错(401 Unauthorized)
Ø 错误描述
[mynuget_source] “http://nuget.xxxx.com/xxxxxx”处的V2 源返回了意外的状态代码“401 Unauthorized”。
Ø 错误原因
是因为需要使用用户/密码来访问私有nuget 源,并没有在 NuGet.config中配置导致。
Ø 解决办法
打开 %appdata%\NuGet\NuGet.Config 文件,在<configuration>节点中加入以下配置信息,例如:
<mynuget_source >
<add key="Username" value="user_name"/>
<add key="ClearTextPassword" value="your password " />
</mynuget_source >
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?