windows Visual Studio代码Dotnet核心C#中的错误:“未能找到类型或命名空间名称”System“”,但生成成功

628mspwn  于 2023-02-05  发布在  Windows
关注(0)|答案(8)|浏览(536)

当我尝试在C# DotNet Core MVC应用程序上使用Visual Studio代码时,我在使用Visual Studio代码时遇到了很多麻烦,它很难找到任何与C#相关的东西,甚至连“使用系统”都标记不出来。'无效,表示找不到。
但是,当我运行Dotnet构建时,它成功了,没有警告或错误,并且项目运行。
我的项目。

{
  "version": "1.0.0-*",
  "buildOptions": {
    "debugType": "portable",
    "emitEntryPoint": true
  },
  "dependencies": {
    "Microsoft.NETCore.App": {
      "version": "1.1.0",
      "type": "platform"
    },
    "Microsoft.EntityFrameworkCore.Sqlite": "1.1.0",
    "Microsoft.EntityFrameworkCore.Design": {
      "version": "1.1.0",
      "type": "build"
    },
    "Microsoft.AspNetCore.Mvc": "1.1.0",
    "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
    "Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
    "Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
    "Microsoft.Extensions.Configuration.FileExtensions": "1.1.0",
    "Microsoft.Extensions.Configuration.Json": "1.1.0",
    "Microsoft.Extensions.Logging": "1.1.0",
    "Microsoft.Extensions.Logging.Console": "1.1.0",
    "Microsoft.Extensions.Logging.Debug": "1.1.0",
    "Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
    "Microsoft.AspNetCore.StaticFiles": "1.1.0"
  },

  "frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  }
}

有什么主意吗?我真的很想知道。

of1yzvn4

of1yzvn41#

有时C# for Visual Studio代码(由OmniSharp提供支持)会变得混乱。
尝试重新启动OmniSharp。以下是两种方法:
1.关闭并重新打开Visual Studio代码,或者
1.打开命令托盘并键入Restart Omnisharp
如果我们从命令行而不是从Visual Studio代码中恢复依赖项,OmniSharp往往会感到困惑。

q3aa0525

q3aa05252#

在使用.NET Core 3.0的Fedora 30上的VS代码中,我在使用dotnet new worker创建一个worker项目后遇到了同样的问题
第一个问题是OmniSharp服务器找不到Sdks文件夹,解决方案是将此行包含到**~/.bashrc**中:

export MSBuildSDKsPath="/usr/share/dotnet/sdk/$(dotnet --version)/Sdks"

然后重新启动VS代码,但C#扩展显示了一些消息,如:
命名空间“System”中不存在类型或命名空间名称“Collections”(是否缺少程序集引用?)
该解决方案首先是在最终运行中:

dotnet build

然后使用命令面板(Ctrl+Shift+P)重新启动OmniSharp服务器:

OmniSharp: Restart OmniSharp

然后我重新启动VS代码,C#扩展和所有依赖项都工作正常。

cld4siwp

cld4siwp3#

好了,我已经找到了问题的原因,我引用了project.json文件框架部分的错误导入。
这一点:

"frameworks": {
    "netcoreapp1.1": {
      "dependencies": {
        "Microsoft.NETCore.App": {
          "type": "platform",
          "version": "1.1.0"
        }
      },
      "imports": "dnxcore50"
    }
  }

应该是这样的:

"frameworks": {
    "netcoreapp1.1": {
      "imports": [
        "dotnet5.6",
        "portable-net45+win8"
      ]
    }
  }

我在一台windows8机器上,由于某种原因,"dnxcore50"无效,但"dotnet5.6"和"portable-net45 + win8"有效。我将继续寻找这个问题的"为什么",但我现在发布这个答案,以防其他人正在处理这个问题。

zhte4eai

zhte4eai4#

如果您收到此错误,则可能丢失了一个包。
“未能找到类型或命名空间名称”System“”
要添加软件包,可以在终端中运行以下命令:

dotnet add package

示例:将Newtonsoft.Json NuGet包添加到项目:

dotnet add package Newtonsoft.Json

然后,转到曲线,通过单击灯泡添加缺少的参考。
您也可以安装Nuget Package Manager扩展来查找您需要的软件包。请参阅此答案以了解更多信息:
Install a Nuget package in Visual Studio Code

bnlyeluc

bnlyeluc5#

我在Mac中使用VS代码与OmniSharp和单声道和问题消失后,做以下:
对于安装了Mono的MacOS和Linux用户,这意味着您需要将omnisharp.useGlobalMono设置为从不,直到Mono版本随MSBuild 16.7一起发布。

ccgok5k5

ccgok5k56#

在我的例子中,vscode只显示了一个文件的错误,这个问题是通过将丢失的文件添加到Assembly-CSharp.csproj中解决的,我不确定什么时候文件是自动添加的,什么时候我必须手动添加,但它解决了这个问题。

...
<ItemGroup>
    <Compile Include="Assets/Scripts/data/MissingFile.cs" />
...
uwopmtnx

uwopmtnx7#

同样的问题在我身上发生了很多次。
在我的情况下,我以管理员身份打开Visual Studio代码,然后运行终端命令donet buid(如果需要)重新启动OmniSharp(ctrl +shift + p)
那么它工作正常!!!

ymdaylpp

ymdaylpp8#

另一个可能导致“using System”错误的原因是将.vscode目录存储在git仓库中(我没有将其添加到.gitignore)。
使用VSCode打开解决方案文件夹可能会产生类似上面的跨版本问题,只需删除.vscode目录即可解决。

相关问题