对于包含ASP.NET项目的.NET框架解决方案,迁移到“新项目系统”(PackageReference)是否安全/可行?

时间:2018-07-25 10:34:15

标签: c# asp.net .net nuget csproj

根据文档,ASP.NET项目尚不支持新的PackageReference。 https://docs.microsoft.com/en-us/nuget/consume-packages/package-references-in-project-files

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

  • Foo.Domain
  • Foo.PublicApi.Contract
  • Foo.Services
  • Foo.AspNetWebApp(已引用了上面的所有内容)

我无法迁移到PackageReference Foo.AspNetWebApp,因为它不支持ASP.NET非核心项目。但是我可以迁移其他所有东西吗? 是否支持该方案?我将至少赢得其他所有项目的合并:-)

2 个答案:

答案 0 :(得分:1)

这是可行的,并且可以在执行NuGet软件包还原(缩短CI构建)时为您节省大量时间, 您可以阅读有关收益here的更多详细信息。

此外,您可以使用以下有用的extension轻松进行转换。

答案 1 :(得分:0)

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

__VA_ARGS__

在卸载步骤中会遇到一些无害的错误,因为此脚本将尝试按照列出的顺序(而不是依赖项的顺序)强制卸载所有内容。最后,它确实删除了所有包,并为您摆脱了packages.config。然后脚本的最后一行将它们这次全部重新添加为PackageReference。如果卸载错过了一些应该删除的目标或软件包文件夹引用,则有时需要做一些项目文件维护。