Mac 上的 VS Code:“属性”类型是在未引用的程序集中定义的

Posted

技术标签:

【中文标题】Mac 上的 VS Code:“属性”类型是在未引用的程序集中定义的【英文标题】:VS Code on Mac: The type 'Attribute' is defined in an assembly that is not referenced 【发布时间】:2020-10-17 08:49:06 【问题描述】:

不确定是我的 VS Code 设置还是 .NET 中的问题。

在Mac上很久没用.NET了,我安装了最新版本。

dotnet --info

 提交:7feb845744

运行环境:
 操作系统名称:Mac OS X
 操作系统版本:10.15
 操作系统平台:达尔文
 RID:osx.10.15-x64
 基本路径:/usr/local/share/dotnet/sdk/3.1.301/

主机(用于支持):
  版本:3.1.5
  提交:65cd789777

.NET Core SDK 已安装:
  1.0.0-preview2.1-003155 [/usr/local/share/dotnet/sdk]
  1.0.0-preview2-003131 [/usr/local/share/dotnet/sdk]
  1.0.0-preview2-003148 [/usr/local/share/dotnet/sdk]
  1.0.3 [/usr/local/share/dotnet/sdk]
  2.0.0 [/usr/local/share/dotnet/sdk]
  2.1.4 [/usr/local/share/dotnet/sdk]
  2.1.200 [/usr/local/share/dotnet/sdk]
  2.1.301 [/usr/local/share/dotnet/sdk]
  2.1.500 [/usr/local/share/dotnet/sdk]
  3.1.301 [/usr/local/share/dotnet/sdk]

.NET Core 运行时安装:
  Microsoft.AspNetCore.All 2.1.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.All 2.1.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
  Microsoft.AspNetCore.App 2.1.1 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 2.1.6 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 3.1.5 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 1.0.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.0.2 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.0.4 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.0-preview1-001100-00 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 1.1.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.0 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.0.7 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.1 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 2.1.6 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
  Microsoft.NETCore.App 3.1.5 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]

然后我跑了:

dotnet new xunit -o leetcode
cd leetcode
code .

这将启动 VS Code。我打开单元测试示例,看到[Fact] 突出显示为错误:“类型'属性'是在未引用的程序集中定义的。您必须添加对程序集'netstandard,Version = 2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. [leetcode]"

还有一个问题指向~/nuget/packages/microsoft.net.test.sdk/16.5.0/build/netcoreapp2.1。相同的文本“在未引用的程序集中定义了类型'属性'。您必须添加对程序集'netstandard,Version = 2.0.0.0,Culture = Neutral,PublicKeyToken = cc7b13ffcd2ddd51'的引用。[leetcode]”

dotnet bulddotnet testdotnet restore 工作正常,但在 VS Code 中看到这些错误很烦人。

我怀疑原因是一些基本路径值或旧的 .NET 运行时。我想了解的是调试和解决此类问题的正确方法是什么。该项目实际上是<TargetFramework>netcoreapp3.1</TargetFramework>。将其更改为 <TargetFramework>netcoreapp2.0</TargetFramework> 看起来是错误的并且没有帮助。

提前谢谢你!

【问题讨论】:

向扩展开发者报告,github.com/OmniSharp/omnisharp-vscode/issues 【参考方案1】:

我向omnisharp-vscode 报告了issue,并得到了快速响应,解决了我的问题。问题似乎出在通过 brew 安装的 Mono 中。 提出了两种解决方案:

    从官方源https://www.mono-project.com/download/stable/安装Mono 添加设置"omnisharp.useGlobalMono": "never",

我尝试了第二个,它解决了问题。

附:感谢@lex-li 提供在 GitHub 上创建错误的建议。

【讨论】:

以上是关于Mac 上的 VS Code:“属性”类型是在未引用的程序集中定义的的主要内容,如果未能解决你的问题,请参考以下文章

VS Code 中的 Vue Array Prop JSDoc TypeScript 错误:“ArrayConstructor”类型缺少“MyCustomType []”类型中的以下属性

VS Code 上的错误,但 Dartpad 上没有。 - 字段 'percent' 应该被初始化,因为它的类型 'double' 不允许为空

VS Code 不会保存更改 - Mac

VS Code中的普通Mac选项-拖动块选择?

使用VS Code配合Remote Development插件连接远程服务器(Mac/Linux+Windows) | Using VS Code with Remote Development Co

VS code key shortcuts for windows