web-dev-qa-db-ja.com

VS Code dotnet core C#のエラー:「タイプまたはネームスペース名 'System'が見つかりませんでした」が、ビルドは成功します。

C#DotNet Core MVCアプリケーションでVisual Studio Codeを使用しようとすると、Visual Studioコードを機能させるのに多くの問題が発生します。 C#に関連するものを見つけるのに問題があり、 'Using System;'とさえマークします。無効として、見つからないという。

ただし、dotnetビルドを実行すると、警告もエラーもなく成功し、プロジェクトが実行されます。

私のproject.json:

 {
  "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"
    }
  }
}

何か案は?私はこれで本当に髪を引き抜いています。

32
MStudley

Visual Studio CodeのC#(OmniSharpを使用)が混乱することがあります。

OmniSharpを再起動してください。次の2つの方法があります。

  1. Visual Studio Codeを閉じて再度開く、または
  2. コマンドパレットを開き、Restart Omnisharp

Visual Studio Code内からではなくコマンドラインから依存関係を復元すると、OmniSharpが混乱する傾向があります。

93
Shaun Luttin

わかりました、私は問題の原因を理解しました。 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"
      ]
    }
  } 

私はWindows 8マシンを使用していますが、何らかの理由で「dnxcore50」は無効ですが、「dotnet5.6」と「portable-net45 + win8」は有効です。この質問のwhyを見続けるつもりですが、誰かがこの問題に対処している場合に備えて、この回答を投稿しています。

1
MStudley

「システムの使用」に関するエラーが発生する可能性のある別の原因は、.vscodeディレクトリをgitリポジトリに保存していることです(.gitignoreに追加していません)。

VSCodeでソリューションフォルダーを開くと、上記のようなクロスバージョンの問題が発生する可能性があり、.vscodeディレクトリを削除するだけで解決できます。

0
esj51

VS2019では、ソリューションをクリーンおよび再構築しました。簡単です。

[ビルド]タブで...

0
Allstar