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

What is restore.dg file and what is its syntax?

我已经从 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. 文档在哪里?

看起来转换出错了。由于 dotnet migrate,不应有任何 restore.dg 文件。恢复到原始 xproj 并尝试重新运行 迁移。

当然你可以简单地尝试删除这个 restore.rg,但是一旦迁移看起来不成功 - 你可能有 incomplete/bad csproj 文件。

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

  1. 还原为 xproj 结构。您应该有 project.jsonproject.lock.jsonyourporject.xproj 和可选的 youproject.xproj.user
  2. 从解决方案文件夹的根目录中手动删除 global.json 并确保它不存在于 upper/parent 目录中(它可能 "pin" 你到旧的 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 将从中恢复包并重建项目地面。

对于 多项目 解决方案 - 在转换引用 "main" 项目的测试项目时,我的所有迁移都失败并出现错误。我没有时间调试这个,所以为了解决这个问题,我手动从测试项目中删除 project.lock.json,从他们的 project.json 中手动删除对原始代码项目的引用,然后从 运行 迁移解决方案根目录(所有项目一次)。