什么是 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.
- 那么这个文件是什么,有什么用?
- 里面应该有什么?
- 文档在哪里?
看起来转换出错了。由于 dotnet migrate
,不应有任何 restore.dg
文件。恢复到原始 xproj
并尝试重新运行 迁移。
当然你可以简单地尝试删除这个 restore.rg
,但是一旦迁移看起来不成功 - 你可能有 incomplete/bad csproj
文件。
如果迁移再次失败,您可以尝试运行从命令行(而不是从 VS)手动迁移。以下是单项目解决方案的说明:
- 还原为 xproj 结构。您应该有
project.json
、project.lock.json
、yourporject.xproj
和可选的 youproject.xproj.user
- 从解决方案文件夹的根目录中手动删除
global.json
并确保它不存在于 upper/parent 目录中(它可能 "pin" 你到旧的 dotnet
版本) .
- 启动命令行并导航到您的项目文件夹(
project.json
所在的文件夹)。
- 确保您拥有最新的 SDK - 运行
dotnet --info
- 它不应显示任何 preview
版本,必须是 1.0.0 或更高版本 (1.0.3 is current)
- 运行
dotnet migrate
。它必须 运行 成功(绿色文本),#1 中列出的所有 4 个文件都应该消失,一个新文件 youproject.csproj
应该出现。在内部,它将包含来自 project.json
的所有(或几乎所有)信息 - 但仔细检查这一点,有时它会丢失一些包属性,如 "Copyright"、"Company" 等 - 你需要把他们稍后通过 VS 中的项目属性返回。对于 asp.net 项目 - runtimeconfig.template.json
也可能出现(使用 "gcServer": true
指令)
- 现在你应该可以在 VS 2017 中打开项目了。我建议在开始之前删除
.vs
、bin
和 obj
文件夹,以确保 VS 将从中恢复包并重建项目地面。
对于 多项目 解决方案 - 在转换引用 "main" 项目的测试项目时,我的所有迁移都失败并出现错误。我没有时间调试这个,所以为了解决这个问题,我手动从测试项目中删除 project.lock.json
,从他们的 project.json
中手动删除对原始代码项目的引用,然后从 运行 迁移解决方案根目录(所有项目一次)。
我已经从 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.
- 那么这个文件是什么,有什么用?
- 里面应该有什么?
- 文档在哪里?
看起来转换出错了。由于 dotnet migrate
,不应有任何 restore.dg
文件。恢复到原始 xproj
并尝试重新运行 迁移。
当然你可以简单地尝试删除这个 restore.rg
,但是一旦迁移看起来不成功 - 你可能有 incomplete/bad csproj
文件。
如果迁移再次失败,您可以尝试运行从命令行(而不是从 VS)手动迁移。以下是单项目解决方案的说明:
- 还原为 xproj 结构。您应该有
project.json
、project.lock.json
、yourporject.xproj
和可选的youproject.xproj.user
- 从解决方案文件夹的根目录中手动删除
global.json
并确保它不存在于 upper/parent 目录中(它可能 "pin" 你到旧的dotnet
版本) . - 启动命令行并导航到您的项目文件夹(
project.json
所在的文件夹)。 - 确保您拥有最新的 SDK - 运行
dotnet --info
- 它不应显示任何preview
版本,必须是 1.0.0 或更高版本 (1.0.3 is current) - 运行
dotnet migrate
。它必须 运行 成功(绿色文本),#1 中列出的所有 4 个文件都应该消失,一个新文件youproject.csproj
应该出现。在内部,它将包含来自project.json
的所有(或几乎所有)信息 - 但仔细检查这一点,有时它会丢失一些包属性,如 "Copyright"、"Company" 等 - 你需要把他们稍后通过 VS 中的项目属性返回。对于 asp.net 项目 -runtimeconfig.template.json
也可能出现(使用"gcServer": true
指令) - 现在你应该可以在 VS 2017 中打开项目了。我建议在开始之前删除
.vs
、bin
和obj
文件夹,以确保 VS 将从中恢复包并重建项目地面。
对于 多项目 解决方案 - 在转换引用 "main" 项目的测试项目时,我的所有迁移都失败并出现错误。我没有时间调试这个,所以为了解决这个问题,我手动从测试项目中删除 project.lock.json
,从他们的 project.json
中手动删除对原始代码项目的引用,然后从 运行 迁移解决方案根目录(所有项目一次)。