2017-04-24 78 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