前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >刚刚我从服务器回滚了 dotnet 5 的环境

刚刚我从服务器回滚了 dotnet 5 的环境

作者头像
林德熙
发布2020-11-19 14:12:34
6220
发布2020-11-19 14:12:34
举报
文章被收录于专栏:林德熙的博客

今天是 2020.11.13 我在 CI 服务器上更新 dotnet 到 dotnet 5 以及 VS 到 16.8.1 最新版本,但是我在刚刚不得不回滚了环境…… 因为构建不通过

现象

使用经典的 NuGet 还原加上 msbuild 的构建,如以下代码将会构建失败

代码语言:javascript
复制
nuget restore
msbuild /p:Configuration=Release

构建失败核心提示如下

代码语言:javascript
复制
C:\Program Files\dotnet\sdk\5.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targets(241,5): error NETSDK1005: 资产文件“C:\gitlab\builds\SKH4KvNc\0\Lindexi\Lindexi-Doubi\demo\Lindexi.Doubi.DesktopModeDemo\obj\project.assets.json”没有“net45”的目标。确保已运行还原,且“net45”已包含在项目的 TargetFrameworks 中。 [C:\gitlab\builds\SKH4KvNc\0\Lindexi\Lindexi-Doubi\demo\Lindexi.Doubi.DesktopModeDemo\Lindexi.Doubi.DesktopModeDemo.csproj]

原因

本质原因是 NuGet 没有跟上步伐,因为通过 dotnet restore 是可以的

不完美解决方法

如果项目里面不存在旧项目格式,以及 VS 插件项目等等项目,试试用 dotnet 命令构建

代码语言:javascript
复制
dotnet build -c release

或者使用 dotnet 的还原配合 msbuild 的构建

代码语言:javascript
复制
dotnet restore
msbuild /p:Configuration=Release

但是以上方法都有缺点,在一些使用旧版本格式的 csproj 项目文件里面,以及一些 VSTO 项目,或者引用了 COM 的项目和 VS 插件项目等类型里面,将因为 dotnet restore 的不支持导致后续构建不通过。或者在 dotnet build 里面使用了 dotnet core 版本的 msbuild 丢失了旧版本 dotnet framework 版本的 msbuild 支持的旧版本功能,让一些旧版本项目构建不通过

我当前的 CI 服务器上依然承担了一定数量的旧版本项目的任务,因此 dotnet 5 环境暂时还不能支持,只能回滚了

彻底的解决方法

彻底的解决方法是: 再等几天

更新到 NuGet 5.8 就能解决

这是全网首个能支持 .NET 5 的 NuGet 版本,在 https://dist.nuget.org/win-x86-commandline/v5.8.0/nuget.exe 可以下载


本文会经常更新,请阅读原文: https://blog.lindexi.com/post/%E5%88%9A%E5%88%9A%E6%88%91%E4%BB%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%9B%9E%E6%BB%9A%E4%BA%86-dotnet-5-%E7%9A%84%E7%8E%AF%E5%A2%83.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现象
  • 原因
  • 不完美解决方法
  • 彻底的解决方法
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档