对于包含 ASP.NET 项目的 .NET 框架解决方案,迁移到 "new project system" (包参考) 是否安全/可行?



根据文档,ASP.NET项目(目前(不支持新的PackageReferencehttps://learn.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files

但是ASP.NET所依赖的类库呢?假设我有以下.NET框架解决方案:

  • 食品领域
  • Foo.PublicApi.Contract
  • Foo.服务
  • Foo.AspNetWebApp(引用了以上所有内容(

我无法迁移到PackageReference Foo.AspNetWebApp,因为它不支持ASP.NET非核心项目。但我能迁移其他所有东西吗?是否支持该场景?我至少会赢得其他一切的合并:-(

这是可行的,并且在执行NuGet包还原(较短的CI构建(时可以节省大量时间,你可以在这里阅读更多关于收益的详细信息。

此外,您还可以使用以下有用的扩展来轻松地进行转换。

我在asp.net项目的转换过程中使用了以下PowerShell脚本,目前在20多个项目中取得了成功。必须首先在"工具">"NuGet包管理器">"包管理器设置">"默认包管理格式"中将PackageReference更改为Visual Studio的默认行为。然后,您可以在Package Manager控制台窗口中运行powershell脚本,替换要迁移的项目的名称。

$packages = Get-Package -ProjectName MyProjectName
$packages | %{ Uninstall-Package -Id $_.Id -ProjectName $_.ProjectName -RemoveDependencies -Force}
$packages | %{ Install-Package -Id $_.Id -Version $_.Versions[0] -ProjectName $_.ProjectName }

在卸载步骤中,预计会出现一些无害的错误,因为此脚本将尝试按列出的顺序而不是依赖项的顺序强制卸载所有内容。最后,它确实删除了它们,并为您删除了您的软件包.config。然后脚本的最后一行将它们全部添加回PackageReference。有时,如果卸载遗漏了一些本应删除的目标或包文件夹引用,则需要进行一些项目文件维护。

最新更新