【问题标题】:Converting to VS 2017 .csproj format with PackageReference使用 PackageReference 转换为 VS 2017 .csproj 格式
【发布时间】:2018-11-03 00:24:06
【问题描述】:

我有一个一直在逐步升级的旧解决方案,现在想使用 PackageReference 而不是 packages.config 将 .csproj 和 .vbproj 文件升级到新的 2017 格式。

整个解决方案有大约 60 多个项目,因此手动迁移会非常痛苦。我一直在寻找一个实用程序来自动化这个过程,但没有成功。有谁知道有什么脚本可以做到这一点?

我尝试过使用NuGet PackageReference Upgrader,但 id 不起作用。我在输出窗口中收到以下错误

24/05/2018 8:37:22 AM: Update failed. Exceptions:
24/05/2018 8:37:22 AM: Message: Object reference not set to an instance of an object.
   at CloudNimble.PackageReferenceUpgrader.NuGetUpgraderPackage.<>c__DisplayClass9_1.<UpgradePackagesConfig>b__12(XElement c) in C:\projects\packagereferenceupgrader\src\CloudNimble.PackageReferenceUpgrader\NuGetUpgraderPackage.cs:line 187
   at System.Linq.Enumerable.<>c__DisplayClass6_0`1.<CombinePredicates>b__0(TSource x)
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at CloudNimble.PackageReferenceUpgrader.NuGetUpgraderPackage.<>c__DisplayClass9_0.<UpgradePackagesConfig>b__1(Int32 i) in C:\projects\packagereferenceupgrader\src\CloudNimble.PackageReferenceUpgrader\NuGetUpgraderPackage.cs:line 187
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object )
24/05/2018 8:37:43 AM: Backup created for D:\workspace\e5tfs\dataract461\e5 Releases\Dev\e5 Foundation\e5 Legacy\Source\SharedAssemblies\Repository\packages.config.
24/05/2018 8:37:43 AM: Update failed. Exceptions:
24/05/2018 8:37:43 AM: Message: Object reference not set to an instance of an object.
   at CloudNimble.PackageReferenceUpgrader.NuGetUpgraderPackage.<>c__DisplayClass9_1.<UpgradePackagesConfig>b__12(XElement c) in C:\projects\packagereferenceupgrader\src\CloudNimble.PackageReferenceUpgrader\NuGetUpgraderPackage.cs:line 187
   at System.Linq.Enumerable.<>c__DisplayClass6_0`1.<CombinePredicates>b__0(TSource x)
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at CloudNimble.PackageReferenceUpgrader.NuGetUpgraderPackage.<>c__DisplayClass9_0.<UpgradePackagesConfig>b__1(Int32 i) in C:\projects\packagereferenceupgrader\src\CloudNimble.PackageReferenceUpgrader\NuGetUpgraderPackage.cs:line 187
   at System.Threading.Tasks.Parallel.<>c__DisplayClass17_0`1.<ForWorker>b__1()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
   at System.Threading.Tasks.Task.<>c__DisplayClass176_0.<ExecuteSelfReplicating>b__0(Object )

【问题讨论】:

标签: vb.net visual-studio .net-core nuget csproj


【解决方案1】:

使用 PackageReference 转换为 VS 2017 .csproj 格式

我用packages.config 创建了一个简单的示例,我可以通过工具NuGet PackageReference Upgrader 将它迁移到PackageReference。根据错误日志很难弄清楚您收到该错误的原因。

如果您有兴趣,可以通过Q & A联系该扩展程序的所有者。

要完成将Packages.config迁移到PackageReference,您可以下载Visual Studio Version 15.7 Preview 3,它支持将项目从packages.config管理格式迁移到PackageReference格式.查看 Visual Studio 博客:Visual Studio 2017 version 15.7 Preview 3 了解更多详细信息。

【讨论】:

    猜你喜欢
    • 2018-08-15
    • 2018-10-23
    • 2017-11-29
    • 2021-12-12
    • 2017-07-30
    • 2017-08-02
    • 2021-07-31
    • 1970-01-01
    • 2017-07-07
    相关资源
    最近更新 更多