当前的.NET SDK在Visual Studio 2017更新15.3中不支持定位.NET Standard 2.0错误


119

我想使用Target Framework .NET Standard 2.0创建一个类库项目。

我已经将我更新Visual Studio 2017为Version,15.3并且还在Visual Studio安装程序中检查.NET Framework 4.7 SDK.NET Framework 4.7 targeting pack手动安装了它们。

.NET Standard 2.0在“项目/应用程序”窗口的“目标框架”组合框中仍然没有任何选项。因此,我将.csproj文件中的TargetFramework标记手动更改为netstandard2.0,但是尝试构建后出现此错误:

当前的.NET SDK不支持定位.NET Standard 2.0。目标.NET Standard 1.6或更低版本,或者使用支持.NET Standard 2.0的.NET SDK版本。


4
您是否有global.json将.NET Core SDK固定到1.x的文件?您是否已单独安装.NET Core 2.0 SDK?(我希望它包含在VS中,但是无论如何安装它都不会受到损害。)
Jon Skeet

1
@JonSkeet单独安装.NET Core 2.0 SDK。如果您在此处添加建议作为答案,那将很好。
萨哈尔

Answers:


144

听起来像为该特定版本安装VS2017更新没有安装.NET Core 2.0 SDK。您可以在此处下载。

要检查您已经安装了哪个版本的SDK,请运行

dotnet --info

从命令行。请注意,如果global.json您当前的工作目录或任何祖先目录中都有一个文件,它将覆盖运行哪个版本的SDK。(例如,如果要为项目强制使用特定版本,这很有用。)

从注释来看,某些版本的VS2017更新确实安装了.NET Core SDK。我怀疑它可能会随时间变化。


1
@Marwie:我想你瞄准netstandard2.0。我没有尝试使用1.0 SDK来定位它,但是如果失败了,我不会感到惊讶。当然,您仍然可以使用1.0 SDK来定位netstandard1.X。
乔恩·斯基特

6
好的-我是这个主题的新手-我对.net核心和.net标准之间的紧密关系感到惊讶-是不是创建.net标准来忽略此类依赖关系的原因吗?为什么不将其单独包装?
Marwie

1
@Marwie:好吧,.NET Core SDK与.NET Core Runtime是分开的,而.NET Core Runtime与.NET Standard是分开的。但是SDK会“知道”一组目标框架,对于将来的目标框架,我不会感到惊讶。就像期望Visual Studio 2013编译C#7代码一样。虽然MS对其进行工程设计可能是可行的,这样您就不需要.NET Core 2.0 SDK来瞄准netstandard2.0,但无论如何,IMO是一个奇怪的用例。
乔恩·斯凯特

3
卸载所有.net Core 1.x SDK之后,我收到错误消息。我仍然有微软。已安装.NET Core SDK 2.0.2、2.0.3、2.1.1和2.1.2以及VS 2017 5.2。一次,我手动安装了当前的Microsoft。.NET core SDK(2.1.3)我可以再次编译我的项目。我不知道在删除1.x SDK时会破坏2.x SDK。
SOHO开发人员

2
@Justin:好的,听起来好像2.1.4 SDK未正确安装,或者您有一个global.json文件将其固定到旧版本。
乔恩·斯基特

20

而以上答案并不能解决我的问题。我终于通过专门转到此链接https://www.microsoft.com/net/download/visual-studio-sdks并下载Visual Studio所需的sdk来解决了该问题。这真的很令人困惑,我不知道为什么,但这解决了我的问题


我不能只是对此表示赞同,这也解决了我的问题,但我希望有人能阐明这项工作背后的原因。
贝坦·库尔特

这个解决方案也对我有用。对我而言,这是与最新SDK不兼容的问题。如果您使用的是Visual Studio 2017,则不能使用最新版本的.NET Core SDK。
零时

11

对我来说,解决方案是更改版本global.json以反映已安装的版本。

就像其他人说的那样,该版本可以dotnet --info在cmd中运行

这个:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.0.3"
  }
}

成为:

{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "2.1.4"
  }
}

您还可以通过运行以下命令创建global.json文件

dotnet new globaljson --sdk-version 2.1.4

在项目的根源


2
如果global.json存在该文件,将在哪里找到?
布鲁诺·比耶里

我认为ms已删除该文件,请检查您的.sln和.csproj文件:)
lsp

2
该文件global.json将在解决方案文件旁边。我通常将其作为解决方案项包含在解决方案本身中。我在实验中发现,如果不关闭并重新加载解决方案,则更改版本global.json可能会导致奇怪的构建错误。我的评论适用于带有.NET Core SDK 2.2.100的VS2018版本15.9.2。
曼弗雷德

从文档 .NET Core SDK looks for a global.json file in the current working directory ... or one of its parent directories。因此就像一个继承类型文件。
StuartLC '19

10

有时在尝试打开旧项目时会发生这种情况,对我有所帮助的是更改项目目标框架。转到项目- > 项目名称属性...并更改目标框架已安装了一个。 项目性质


下拉菜单对我没有任何显示。有任何想法吗?
Danny

9

这对我有用

使用Visual Studio 的安装

在“工作负载”选项卡上,选中“ .Net Core跨平台开发”,然后单击“修改”。

在此处输入图片说明

不要忘记查看左侧菜单中的“ .NET Core 2.0开发工具”。

资源

注意

我之前安装过Asp Net Core,但是没有出现在我的Visual Studio中,只是在我使用Visual Studio安装后才出现。


1
或者,您可以从此处安装所需的文件:dotnet.microsoft.com/download/…–
user2173353


3

卸载一些.NET Core 1.x预览SDK之后,我刚刚在15.8.3上安装了该软件,我的应用程序无法编译并显示错误。

即使我使用的是Windows 10 x64,也可以通过安装最新的x86版本的SDK进行修复。

我认为这是因为VS 2017仍然是x86程序,尽管这些程序作为x64运行,但编译器正在寻找合适的x86 SDK


3

我同时安装了Visual Studio 2019和2017.我尝试单独安装VS2017的.NET Core 2.X SDK,但没有运气。

问题是,我安装了.NET Core 3.0 SDK作为默认的sdk-version,VS2017不喜欢。

我的解决方案是为特定项目切换SDK版本。

  • 首先,列出您已安装的SDK以找到所需的版本
$ dotnet --info

.NET Core SDK (reflecting any global.json):
 Version:   3.1.100
 Commit:    cd82f021f4

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

Host (useful for support):
  Version: 3.1.0
  Commit:  65f04fb6db

.NET Core SDKs installed:
  1.1.14 [C:\Program Files\dotnet\sdk]
  2.1.202 [C:\Program Files\dotnet\sdk]
  2.1.509 [C:\Program Files\dotnet\sdk]
  2.2.110 [C:\Program Files\dotnet\sdk]
  3.0.100 [C:\Program Files\dotnet\sdk]
  3.1.100 [C:\Program Files\dotnet\sdk]
  • 从您的解决方案目录
$ dotnet new globaljson --sdk-version 2.2.110 --force

现在,dotnet将为该解决方案使用指定的SDK版本。

在没有弄乱我的3.0项目的情况下,我还没有找到一种在整个系统范围内进行操作的方法。


看来这是必要的,这很奇怪,但是扩展global.json(对于2.1.513版)也解决了我的问题。
8128

2

实际上,对我来说,它与其他答案的发生方式相反。

确实 在问题出现之前安装了最新的.NET Core SDK (在我的情况下为3.0.0-preview2),但没有最新版本的Visual Studio(不确定是否会有所不同)。

因此,解决方案就是卸载最新的.NET Core SDK。(如果需要,这不是完美的,因此您可以考虑将Visual Studio升级到最新版本,但至少可以解决当前的问题)。


1

我只是遇到了这个麻烦。就我而言,我有一个工作脚本

SET devenvPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\devenv.exe
"%devenvPath%" mySolution.sln /Rebuild "DebugWithUT|AnyCpu" /Out mySolution.Build.log

今天,我开始得到这个确切的错误。但是现在我记得前一天安装​​VS2019。看起来它改变了VS2017。我去了VS2017更新,安装了最新版本/更新并将其修复。


0

我遇到了同样的问题,并且拥有最新版本的Microsoft Visual Studio Community 2017版本15.7.3

我刚刚下载了最新的SDK 2.1,没有其他定位问题。 https://www.microsoft.com/net/download/thank-you/dotnet-sdk-2.1.301-windows-x64-installer

信息:Microsoft Visual Studio Community 2017版本15.7.3 VisualStudio.15.Release / 15.7.3 + 27703.2026 Microsoft .NET Framework版本4.7.03056

安装版本:社区

C#工具2.8.3-beta6-62923-07。提交哈希:IDE中使用的7aafab561e449da50712e16c9e81742b8e7a2969 C#组件。根据您的项目类型和设置,可以使用不同版本的编译器。

通用Azure工具1.10提供通用服务,供Azure移动服务和Microsoft Azure工具使用。

NuGet软件包管理器4.6.0 Visual Studio中的NuGet软件包管理器。有关NuGet的更多信息,请访问http://docs.nuget.org/

ProjectServicesPackage扩展1.0 ProjectServicesPackage Visual Studio扩展详细信息

ResourcePackage扩展1.0 ResourcePackage Visual Studio扩展详细信息

Visual Basic工具2.8.3-beta6-62923-07。提交哈希:IDE中使用的7aafab561e449da50712e16c9e81742b8e7a2969 Visual Basic组件。根据您的项目类型和设置,可以使用不同版本的编译器。

Visual Studio Code调试适配器主机程序包1.0 Interop层,用于在Visual Studio中托管Visual Studio Code调试适配器

适用于Unity的Visual Studio工具3.7.0.1适用于Unity的Visual Studio工具


0

请确保您下载的是x86 SDK,而不是Visual Studio的x64 SDK。


0

我遇到了同样的问题,因为当前的.NET SDK不支持定位.NET Core 3.1。目标.NET Core 1.1或更低版本,或者使用支持.NET Core 3.1的.NET SDK版本。

1)确保您的计算机上安装了.Net core SDK。下载.NET

2)设置PATH环境变量如下 路径


0

尝试在TFS中构建解决方案时遇到了这个问题。我们正在使用“点网发布”任务。使用msbuild为我们破冰。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.