The current .NET SDK does not support targeting .N

2019-02-05 11:00发布

问题:

have tried upgrading to the professional version of visual studio 2017 v 15.6.0 (Preview 7.0)

and installed aspnetcore-runtime-2.1.0-preview1-final-win-x64 and .net core SDK 2.1.4.

When I created a new web application I get an error saying

"The current .NET SDK does not support targeting .NET Core 2.1. Either target .NET Core 2.0 or lower, or use a version of the .NET SDK that supports .NET Core 2.1."

When I try to build an existing project I get an error

"The current .NET SDK does not support targeting .NET Core 2.1. Either target .NET Core 2.0 or lower, or use a version of the .NET SDK that supports .NET Core 2.1."

I don't see ".net core 2.1" in my target framework

I don't have global.json file in my computer

When I try dotnet --info, I get this

c:\source\dnacloud\testapp>dotnet --info .NET Command Line Tools (2.1.100)

Product Information:
Version: 2.1.100
Commit SHA-1 hash: b9e74c6

Runtime Environment:
OS Name: Windows
OS Version: 10.0.16299
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.1.100\

Microsoft .NET Core Shared Framework Host

Version : 2.0.5
Build : 17373eb129b3b05aa18ece963f8795d65ef8ea54

回答1:

The problem here is that Microsoft confused a whole lot of people with how they numbered their .NET Core SDKs.

In the original poster's message the path C:\Program Files\dotnet\sdk\2.1.100\ DOES NOT appear to represent the .NET Core 2.1 runtime (but you'd think it does).

I came across this post The current .NET SDK does not support targeting .NET Core 2.1 on developercommunity.visualstudio.com where a Microsoft support person explains the confusion:

"Thank you for your feedback! We have determined that this issue is not a bug. The first SDK with .NET Core 2.1 support is 2.1.300-preview1. We know the versioning is confusing which is why starting in 2.1.300, the major.minor versions of the SDK will now be aligned with the major.minor versions of the runtime as well."

So ... in order to get .NET Core 2.1 support for building via the SDK you need to install the SDK with version 2.1.300 at least (since 2.1.2 is NOT .NET Core 2.1) ... yeah, confusing. Thank you Microsoft for some lost time on this.



回答2:

I resolved the problem. the cause was that i installed

  • aspnetcore-runtime-2.1.0-preview1-final-win-x64 and
  • .net core SDK 2.1.4-x64 versions.
  • The installation placed the sdk files in c:\Program Files\dotnet
  • but VS2017 32bit was looking for the sdk files in c:\Program Files(x86)\dotnet.

To resolve this i

  • installed the x86 version of the sdk and aspnetcore runtime,

  • set the MSBuildSDKsPath environmental variable to point to the new installation path.

  • deleted all obsolete sdks from control panel

The question VS2017 Update 3 'Microsoft.NET.Sdk.Web' could not be found helped in resolving this issue.



回答3:

Installing .NET Core SDK 2.1.300-preview2 did the trick for me:

UPDATE: just in case, there is a newer version has been released recently. You can download the new .NET Core SDK for 2.2.0-preview1 (which includes ASP.NET 2.2.0-preview1) here.

See also this answer when you are getting error like this in general:

The current .NET SDK does not support targeting .NET Core 2.X



回答4:

This happened to me after installing 2.2.100-preview3-009430 and then updating to Visual Studio 15.9.2.

I resolved by enabling the "Use previews of the .NET Core SDK" option.

  1. Go to: Tools > Options > Projects and Solutions > .NET Core

  2. Check the "Use previews of the .NET Core SDK" box

  3. Restart Visual Studio and rebuild the solution.

VS Preview Options



回答5:

I had the .Net Core SDK 2.1.4 installed and followed the other answers in this post without solving my problem. What finally did it for me was installing .Net Core SDK version 2.1.301, and uninstalling every other version. Seems like the SDK 2.1.4 cannot target .Net Core 2.1 but SDK 2.1.301 does the job.



回答6:

Stopping IIS for publishing solved the problem. But first I needed to install net core 2.1 SDK and update the Visual Studio.



回答7:

It looks like Microsoft are encouraging better coding practice for those early adopters of latest development software in Net Core 2.1 by removing the capability to use older software where bad habits prevail. Net Core 2.0 and the older versions are almost end of life so should not be being used at all. (https://blogs.msdn.microsoft.com/dotnet/2018/06/20/net-core-2-0-will-reach-end-of-life-on-september-1-2018/)

1) Microsoft have removed ServiceLocator since widely considered an anti-pattern resulting in difficult to understand code.

2) To improve MVC applications, the AccountController was removed from Authentication/Authorization to encourage use of Razor pages which implement the Single Responsibiity Principle.

It would not be considered best practice to circumvent these changes in order to increase perpetuation of software built to lower software engineering standards in the past.



回答8:

https://www.microsoft.com/net/download/visual-studio-sdks

You can download the SDK from the above site

check the SDK which is in your machine Path C:\Program Files\dotnet\sdk

Change or check the target framework in visual studio,

Right click on Startup Application or project => Application => Target Framework.

You can change the framework and build the solution and restore nugget packages.