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)

clip_image002

Ø  错误原因

1)  从错误信息看出,是因为引用了第三方包"log4net",而导致依赖程序包之间的版本不一致所导致。

2)  在之前发布 Windows 环境时,是没有这个依赖错误的,现在发布到 Linux x64 才出现了这个错误,具体原因不详!?

Window Server 2019 发布选项

clip_image004

CentOS 7.6 发布选项

clip_image006

其实,两者唯一的区别也就是目标运行时,但发布或编译就有了明显区别。

Ø  解决办法

问题描述清楚了,下面是具体的解决办法:

1)  首先,将 log4net 更新为最高版本。

2)  在输出项目,也就需要发布项目".csproj"中添加以下引用声明:

<PackageReference Include="Microsoft.NETCore.Targets" Version="3.1.0" PrivateAssets="all" />

clip_image008

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)  看来得意的太早,生成是可以了,但是一运行:

clip_image010

就问尴尬不尴尬?打开这 html 啥也没有,没招了重启吧!

clip_image012

6)  重启就可以了么?答案是 NO

又花了20分钟,找到原因,这个错误其实跟之前的没关系,是因为以下两点导致:

clip_image013

不知道什么时候,在项目根目录下多了一个"App_Offline.htm"文件,该文件默认是空的,有了这个文件项目托管模型就不能设置为进程外,否者就提示上面的错误:

clip_image014

相反,如果要设置为进程外,把这个文件删除即可。

注:"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 >

posted @ 2022-03-12 23:32  Abeam  阅读(4346)  评论(0编辑  收藏  举报