一:背景 1.講故事 前幾天群里很熱鬧,看了下在爭論兩個問題: 電腦里要不要裝殺毒軟體 ? 應該裝什麼殺毒軟體 ? 不管殺毒軟體流氓不流氓,在如今病毒肆虐的當下互聯網,裝一個還是能幫我們攔截很多意想不到的東西,為了眼見為實,這一篇我們就聊一個竊聽 鍵盤事件 的惡意代碼。 2. 思路 實現思路非常簡單 ...
問題
最近想閱讀 WorkflowCore 的源碼,苦於代碼量巨大,就想將項目回退到 Init Commit 版本 但是在回退版本後,工程內Project 顯示已卸載 重新載入後 提示:
不支持
This version of Visual Studio is unable to open the following projects. The project types may not be installed or this version of Visual Studio may not support them.
For more information on enabling these project types or otherwise migrating your assets, please see the details in the "Migration Report" displayed after clicking OK.
- WorkflowCore.TestHost, "C:\Users\Administrator\source\repos\workflow-core\src\WorkflowCore.TestHost\WorkflowCore.TestHost.xproj"
- WorkflowCore, "C:\Users\Administrator\source\repos\workflow-core\src\WorkflowCore\WorkflowCore.xproj"
- WorkflowCore.Persistence.MongoDB, "C:\Users\Administrator\source\repos\workflow-core\src\providers\WorkflowCore.Persistence.MongoDB\WorkflowCore.Persistence.MongoDB.xproj"
- WorkflowCore.Sample01, "C:\Users\Administrator\source\repos\workflow-core\src\samples\WorkflowCore.Sample01\WorkflowCore.Sample01.xproj"
需要非功能性更改
Visual Studio 將自動對下列項目進行非功能性更改以使它們能夠在 Visual Studio 2015、Visual Studio 2013、Visual Studio 2012 和 Visual Studio 2010 SP1 中打開。項目行為不會受到影響。
- WorkflowCore, "C:\Users\Administrator\source\repos\workflow-core\WorkflowCore.sln"
遷移報告 提示:
src\WorkflowCore\WorkflowCore.xproj:** 無法讀取“C:\Users\Administrator\AppData\Local\Temp\qaz4jqm1.ibt”處的遷移後報表。src\WorkflowCore\WorkflowCore.xproj: XProj 項目 WorkflowCore 遷移失敗。“dotnet migrate --skip-backup -s -x "C:\Users\Administrator\source\repos\workflow-core\src\WorkflowCore\WorkflowCore.xproj" "C:\Users\Administrator\source\repos\workflow-core\src\WorkflowCore\project.json" -r "C:\Users\Administrator\AppData\Local\Temp\qaz4jqm1.ibt" --format-report-file-json”退出時出現錯誤代碼 1。src\WorkflowCore\WorkflowCore.xproj: 無法執行,因為找不到指定的命令或文件。 可能的原因包括: *內置的 dotnet 命令拼寫錯誤。 *你打算執行 .NET 程式,但 dotnet-migrate 不存在。 *你打算運行全局工具,但在路徑上找不到具有此名稱且首碼為 dotnet 的可執行文件。src\WorkflowCore\WorkflowCore.xproj: 將 C:\Users\Administrator\source\repos\workflow-core\src\WorkflowCore\WorkflowCore.xproj 備份到 C:\Users\Administrator\source\repos\workflow-core\Backup10\WorkflowCore.xproj。src\WorkflowCore\project.json: 將 C:\Users\Administrator\source\repos\workflow-core\src\WorkflowCore\project.json 備份到 C:\Users\Administrator\source\repos\workflow-core\Backup10\project.json。
問題原因
VS2022,VS2019 無法打開xproj 類型的舊項目 ,只支持csproj 類型 ,同時高版本的dotNetCore 不支持 dotnet migrate 導致無法遷移成功[1]
解決辦法
-
找到可以打開的版本[2],這邊經過搜索,VS2019 Version >=16.3 的都無法使用 ,試過VS 2019 16.2 的沒有成功 也可能是未執行第二步 後來選擇的VS2017可以成功
-
根據[3]操作完成後使用 VS 打開工程應該已經可以正常載入
You can list your installed dotnet core sdk versions by this command:
dotnet --list-sdks
Then you can switch back to an older version of the dotnet core sdk (e.g.
2.0.2
) by this command:dotnet new globaljson --sdk-version 2.0.2
This should be performed in the folder where your xproj is located.
Finally you can migrate your project by:
dotnet migrate
註: 第二步生成的global.json 內容為 :
{
"sdk": {
"version": "2.0.2"
}
}
如果項目自帶 可以將這個節點加入即可