作者: "zyl910" 一、緣由 最近遇到了一個奇怪的問題——明明已經在VS2017里裝好了 .NET Core 2.0 SDK,且測試過新建一個 .NET Core 2.0控制台項目能成功使用。但是在項目目錄中實際使用新建.NET Core 2.0控制台項目時,會遇到不支持 .NET Core ...
作者: zyl910
一、緣由
最近遇到了一個奇怪的問題——明明已經在VS2017里裝好了 .NET Core 2.0 SDK,且測試過新建一個 .NET Core 2.0控制台項目能成功使用。但是在項目目錄中實際使用新建.NET Core 2.0控制台項目時,會遇到不支持 .NET Core 2.0 的錯誤提示。
Severity Code Description Project File Line Suppression State
Error The current .NET SDK does not support targeting .NET Core 2.0. Either target .NET Core 1.1 or lower, or use a version of the .NET SDK that supports .NET Core 2.0. ConsoleExample.netcore20 C:\VS2017\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.TargetFrameworkInference.targets 112
而且此時項目屬性里,“目標框架”下拉框的當前值變為空。該下拉框中只能選 1.0、1.1 這2個版本。
曾經懷疑是不是 .NET Core 2.0 SDK文件被破壞了。但發現其他目錄下的 .NET Core 2.0 項目打開正常。
二、解決
找來找去,發現上上級目錄中有一個 global.json。於是猜測是該文件的問題,嘗試將該文件刪除到回收站。果然,刪掉該文件後,VS2017就能正常使用 .NET Core 2.0 了。
global.json 是 VS2015 + .NET Core 1.0 SDK 時代的配置文件,VS2017中已經不用該文件了。且該文件位於上上級目錄,本來以為它不會影響VS2017項目,結果還是被影響了。
三、處理 global.json
但是刪除 global.json後,VS2015中的 .NET Core 1.0 項目會報錯——
The following error occurred attempting to run the project model server process (2.0.0).
Unable to start the process. No executable found matching command "dotnet-projectmodel-server"
The project model server process provides intellisense, build, and reference information to Visual Studio and without it your experience will be very limited. Please try closing and reopening Visual Studio to see if that corrects the problem. Alternatively, check that the .NET Core SDK is properly installed."
這裡有2個辦法——
- 將解決方案中的 .NET Core 1.0 的 sln、global.json 抽離出去。移到某個子目錄去。然後在該子目錄另外新建專用的解決方案,註意修改project.json 來引用上級兄弟目錄中的文件。詳見 《[C#] .NET Core項目修改project.json來引用其他目錄下的源碼等文件的辦法 & 解決多框架時 project.json 與 app.config衝突的問題》。
- 乾脆不用 .NET Core 1.0。全部升級為 VS2017 + .NET Core 2.0 。
參考文獻
- zyl910《[C#] .NET Core項目修改project.json來引用其他目錄下的源碼等文件的辦法 & 解決多框架時 project.json 與 app.config衝突的問題》. http://www.cnblogs.com/zyl910/p/project_json_include.html