2017-04-24 82 views
0

我从xproj升级的csproj和我不断收到什么是restore.dg文件?它的语法是什么?

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

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

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

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

  1. 回复到xproj结构。你应该有project.jsonproject.lock.json,从您的解决方案文件夹的根目录yourporject.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的所有(或几乎所有)信息 - 但仔细检查,有时会丢失一些软件包属性,如“版权”,“公司”等 - 您将需要通过项目属性将它们放回VS 。对于asp.net项目 - runtimeconfig.template.json可能出现太大(与"gcServer": true指令)
  6. 现在你应该可以在2017年VS我建议开始之前删除.vsbinobj文件夹打开项目,以确保VS将恢复包和重建项目从地面。

对于多项目解决方案 - 我所有的迁移与转换误差测试项目,其中引用了“主”项目时失败。我没有时间去调试,所以为了解决这个问题,我手动从测试项目中删除project.lock.json,手动从project.json中删除对原始代码项目的引用,然后从解决方案根目录运行迁移(对于所有项目运行一次)。

+0

vs2017迁移者告诉我一切正常。当我删除文件时,它无法找到项目。当且仅当我在网站项目的目录中创建文件时,它会将错误更改为我在原始文章中列出的其他内容。我的融合只是打开项目并让它转换。我不认为这是不确定的。主线索 - 问题:为什么vs2017为dotnetcore安装最新的SDK,因为我没有单独安装它? – doker

+0

在VS 2017中,是否安装SDK取决于您选择的工作负载。 您可以通过打开Visual Studio安装程序来检查是否安装了哪个版本,然后在“Invididual Components”下检查相应的Visual Studio安装。 – imps

+0

@doker我更新了我的答案,并提供了手动项目移植的步骤 – Dmitry