什么是restore.dg文件,它的语法是什么?

时间:2017-04-24 13:31:57

标签: asp.net-core nuget visual-studio-2017

我已经从xproj升级到csproj并且我一直在

dotnet restore  restore.dg
MSBUILD : error MSB1009: Project file does not exist.
Switch: restore.dg

如果我将文件添加到我的项目目录,那么它会说

C:\Git\XX\WebSite\restore.dg(1,1): error MSB4025: The project file could not be loaded. Data at the root level is invalid. Line 1, position 1.

C:\Git\XX\WebSite>dotnet restore restore.dg
C:\Git\XX\WebSite\restore.dg : error MSB4025: The project file could not be loaded. Root element is missing. 
  1. 那么这个文件是什么?它的用途是什么?
  2. 应该包括什么?
  3. 文件在哪里?

1 个答案:

答案 0 :(得分:1)

看起来转换出错了。 restore.dg的结果不应包含任何dotnet migrate个文件。恢复原始xproj并尝试重新运行迁移。

当然,您可以简单地尝试删除此restore.rg,但只要迁移看起来不成功,您就可能有不完整/错误的csproj文件。

如果迁移再次失败,您可以尝试从命令行手动运行迁移(而不是从VS)。以下是单项目解决方案的说明:

  1. 恢复为xproj结构。您应该有project.jsonproject.lock.jsonyourporject.xproj和可选的youproject.xproj.user
  2. 从解决方案文件夹的根目录中手动删除global.json,并确保它在上/父目录中不存在(它可能会将您“固定”到旧的dotnet版本)。
  3. 启动命令行并导航到项目文件夹(project.json所在的位置)。
  4. 确保您拥有最新的SDK - 运行dotnet --info - 它不应显示任何preview版本,必须为1.0.0或更高版本(1.0.3 is current
  5. 运行dotnet migrate。它必须成功运行(绿色文本),#1中列出的所有4个文件都应该消失,应该出现一个新文件youproject.csproj。在内部,它将包含来自project.json的所有(或几乎所有)信息 - 但仔细检查一下,有时会丢失一些包属性,如“Copyright”,“Company”等 - 您需要通过项目将它们放回去VS中的属性。对于asp.net项目,runtimeconfig.template.json也可能出现(使用"gcServer": true指令)
  6. 现在您应该可以在VS 2017中打开项目。我建议在开始之前删除.vsbinobj文件夹,以确保VS将从地面恢复包并重建项目。
  7. 对于多项目解决方案 - 在转换引用“主”项目的测试项目时,我的所有迁移都失败并出现错误。我没有时间调试这个,所以要解决这个问题,我从测试项目中手动删除project.lock.json,从他们的project.json手动删除对原始代码项目的引用,然后从解决方案根目录运行迁移(一次)对于所有项目)。