当前位置:首页 > 教育

完成packages 自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference

前一段时间,我写了一篇关于迁移csproj格式的博客,将WPF、UWP和其他类型的旧csproj迁移到基于微软的新csproj中。NET.Sdk,但是整个过程都是手工进行的,最后处理XAML问题还是很头疼的。

现在,我们可以使用工具自动完成这个过程。当然,该工具不迁移csproj格式,而是在不迁移格式的情况下使用PackageReference模式NuGet引用。

本文内容

自动升级检查升级后的兼容性问题 install.ps1 脚本将失效 使用 content 方式指定的内容资产将失效 XDT 变换将失效 lib 根目录中的程序集将被忽略解决升级后的编译错误 参考资料 自动升级

下载并安装Visual Studio插件NuGet包参考升级程序。安装完成后,再次启动Visual Studio,即可开始迁移。

更新:迁移工具从Visual Studio 2017的15.7版开始带入Visual Studio。有关详细信息,请参见:从package.config迁移到包参考格式-微软文档。

只有一个步骤:右键单击packages.config文件并选择升级到PackageReference。

在弹出的界面中,选择包版本,确认完成项目的迁移。

与之前编写的手动迁移相比,自动迁移模式并没有改变csproj的格式,只是将NuGet的引用模式改为PackageReference。要了解具体的好处,您可以阅读关于将WPF、UWP和其他类型的旧csproj迁移到基于Microsoft.NET.Sdk的新csproj

升级后检查兼容性问题

packages.config的NuGet包的管理模式有一些PackageReference没有的功能。当然,这些功能不可用,是因为“不需要”,而不是“还不支持”;因此,大部分迁移都不会成为问题(除非发布包使用了特别老的nuget.exe,或者发布者使用了一些疯狂的黑技术)。

在15.7版以上的Visual Studio 2017迁移工具中,会自动列出可能存在的兼容性问题。

install.ps1脚本将无效

使用PackageReference,install.ps1脚本将不再在安装和写入过程中执行。如果某些行为依赖于此脚本,则此NuGet包的行为可能不正常。

不过不用担心!install.ps1的存在是因为packages.config不支持PackageReference中的一些新特性(比如NuGet包中的新目录结构,比如包中的msbuild目标)。因此,如果NuGet包在发布时满足目录要求,即使不需要执行install.ps1,也能保证包的正常行为。

使用Content方法指定的内容资产将无效

PackageReference使用内容文件来管理内容资产,这些内容资产可以在多个依赖包之间更好地传输和共享。之前内容指定的资产将无效。

建议检查所有相关的NuGet包。如果您有权限修改某些依赖包,请使用内容文件而不是内容。

XDT转型将会失败

使用PackageReference,在安装和写入期间不会执行XDT转换。xdt文件将被忽略。

Web应用开发中要多注意这个问题。

lib根目录中的程序集将被忽略

lib文件夹中的程序集根据目标框架应该是子文件夹,比如net45、netstandard2.0、netcoreapp2.0,PackageReference要求只能引用某个目标框架下的程序集。

如果默认创建NuGet包,基本不会遇到这样的问题。除非您在创建NuGet包时有自定义操作,否则请将程序集放在根目录中。

升级后解决编译错误

最有可能的编译问题是NuGet包引用的版本冲突。

packages.config模式中的包引用需要在csproj文件中显式指定依赖包的版本,因此无论哪个版本用于依赖,最终都是由显式指定的版本指定的。

PackageReference的引用模式是自动管理依赖版本。只要每个包都在允许的版本范围内,版本就会被自动选择并显示在解决方案的引用中。

PackageReference依赖项冲突提示通常如下:

检测到版本冲突。请直接从项目中引用包来解决此问题。

NuGet。包装3 . 5 . 0->;NuGet。版本控制(= 3.5.0)

NuGet。配置4 . 0 . 0->;NuGet。版本控制(= 4.0.0)

也就是说,被引用的两个不同的包需要同一个包的不同版本,所以PackageReference不能隐式推断依赖包的版本。这时候就需要把项目的依赖模式改成之前的依赖模式。

当然,在制作和发布NuGet包时,要尽量使用非特定版本的依赖包,这样可以大大避免这个问题的影响。您可以阅读版本范围和通配符版本范围和通配符,了解如何指定没有特定版本的依赖包。

参考数据

Migrating from package.config to PackageReference formats - Microsoft Docspackages.config (PC) to PackageReference (PR) Migrator · NuGet/Home Wiki

原地址:https://Walter LV . com/post/migrate-packages-config-to-package-reference . html

1.《完成packages 自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《完成packages 自动将 NuGet 包的引用方式从 packages.config 升级为 PackageReference》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/jiaoyu/787947.html

上一篇

麦冬的功效与作用禁忌 麦冬泡水,对身体有5大好处,但5大禁忌要牢记

下一篇

中国有几座核电站 2019中国核电站分布图,截止2018年共计22座

u盘文件夹删不掉 u盘文件删不了怎么办

  • u盘文件夹删不掉 u盘文件删不了怎么办
  • u盘文件夹删不掉 u盘文件删不了怎么办
  • u盘文件夹删不掉 u盘文件删不了怎么办

u盘删不掉 u盘文件删不了怎么办

  • u盘删不掉 u盘文件删不了怎么办
  • u盘删不掉 u盘文件删不了怎么办
  • u盘删不掉 u盘文件删不了怎么办

地球公社 为什么装配式建筑被追捧?新型建筑模式打造“地球公社”

上海光明随心订 上海品牌创新发展,光明随心订发力探索互联网新零售模式

  • 上海光明随心订 上海品牌创新发展,光明随心订发力探索互联网新零售模式
  • 上海光明随心订 上海品牌创新发展,光明随心订发力探索互联网新零售模式
  • 上海光明随心订 上海品牌创新发展,光明随心订发力探索互联网新零售模式

福建一女子家门口贴霸气对联 内容曝光令人狂笑不止 网友:懒人必备!

  • 福建一女子家门口贴霸气对联 内容曝光令人狂笑不止 网友:懒人必备!
  • 福建一女子家门口贴霸气对联 内容曝光令人狂笑不止 网友:懒人必备!
  • 福建一女子家门口贴霸气对联 内容曝光令人狂笑不止 网友:懒人必备!
抖音内测版 抖音内测新版本曝光:适用于PC、平板端的大屏幕刷视频

抖音内测版 抖音内测新版本曝光:适用于PC、平板端的大屏幕刷视频

知道了手机网的消息,颤音是目前国内最火的短视频娱乐应用软件,不仅在国内非常流行,而且国际版的颤音TikTok也受到了国外很多网友的追捧。目前颤音主要集中在手机客户端,对于人来说可以用在大屏幕产品上,但是适应程度一般,体验效果不如手机屏幕舒服。好在颤音团队已经开始在大...

1019 从文件到系统级的备份分享“全能王”,体验群晖DS1019+

  • 1019 从文件到系统级的备份分享“全能王”,体验群晖DS1019+
  • 1019 从文件到系统级的备份分享“全能王”,体验群晖DS1019+
  • 1019 从文件到系统级的备份分享“全能王”,体验群晖DS1019+
360yun 智造中国360云平台: “三端一体化”的创新模式

360yun 智造中国360云平台: “三端一体化”的创新模式

科技是综合国力竞争的重要因素 成为国家发展过程中不可忽视的一部分 制造业是立国兴国之本 在这个场合, 我们推出了“智能中国360云平台” 为传统产业提供 三端集成智能制造解决方案 01 关于“知识中国360” 为了给传统产业的智能化转型提供解决方案,满足各产业智能化...