• 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 >

  • 相关阅读:
    AdvDataList分页 例码
    问一个关于生成静态页面的问题
    使用XMLDataSource简单实现多级下拉菜单
    简单的封装一个HTML 弹出对话框的空间
    JS 语言强大, 动态修改标准库
    Eclipse IDE 学习
    分布式程序的开发
    Http request Post pk Put
    Forward: X Forwarding with Putty on Windows
    转载: 颠覆了对于design 的认识
  • 原文地址:https://www.cnblogs.com/abeam/p/15999176.html
Copyright © 2020-2023  润新知