web-dev-qa-db-ja.com

ASP.NET 5のVisual Studio Onlineビルド中に、定義済みの型 'System.Void'が定義またはインポートされていません

Visual Studio Onlineでプロジェクトをビルドしようとすると、このエラーが発生します。

Frontend\src\Frontend\Startup.cs(65,49):エラーCS0518:事前定義されたタイプ 'System.Void'が定義またはインポートされていませんC:\ a\1\s\Frontend\src\Frontend\Startup.cs(65 、49):DNXCore、Version = v5.0エラーCS0518:事前定義されたタイプ 'System.Void'が定義またはインポートされていません[C:\ a\1\s\Frontend\src\Frontend\Frontend.xproj]

別のライブラリ(パッケージクラスライブラリ)を参照しているところにエラーが発生しているようです。

追伸私はこれについていくつかの会話をしました: Visual Studio Team ServicesでASP.NET 5を(Azureに)ビルドしてデプロイする簡単な方法 が、結局答えがなかったため、まだビルドできません。 ..

Web project.json:

"dependencies": {
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.FileProviderExtensions": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.UserSecrets": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
    "Web.Common": "1.0.0-*"
},

"frameworks": {
    "dnx451": { },
    "dnxcore50": { }
},

ライブラリproject.json

"frameworks": {
    "dnx451": { },
    "dnxcore50": {
        "dependencies": {
            "Microsoft.CSharp": "4.0.1-beta-23516",
            "System.Collections": "4.0.11-beta-23516",
            "System.Linq": "4.0.1-beta-23516",
            "System.Runtime": "4.0.21-beta-23516",
            "System.Threading": "4.0.11-beta-23516"
      }
    }
  },
"dependencies": {
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final"
  }

更新(問題と解決策):

問題は、ライブラリ参照が同じフォルダーになく、スクリプトがデフォルトでdnu-restoreを実行しないため、1つ上のレベルに移動して、そこにproject.jsonを再帰的に検索する必要がありました。

$SourceRoot = Split-Path -Path $PSScriptRoot -Parent

# run DNU restore on all project.json files in the src folder including 2>1 to redirect stderr to stdout for badly behaved tools
Get-ChildItem -Path $SourceRoot -Filter project.json -Recurse | ForEach-Object { & dnu restore $_.FullName 2>1 }

Eddieに感謝-MSFTの助けを借りて!

9

「PreBuild.ps1」スクリプトのコードを更新してWebプロジェクトの「project.json」ファイルのみを復元した後、この問題を再現しました。

元のコード(ビルド成功):

Get-ChildItem -Path $PSScriptRoot\src -Filter project.json -Recurse | ForEach-Object { & dnu restore $_.FullName 2>1 }

更新されたコード(ビルド失敗:事前定義されたタイプ 'System.Void'は定義またはインポートされていません):

Get-ChildItem -Path $PSScriptRoot\src\WebProjectName -Filter project.json -Recurse | ForEach-Object { & dnu restore $_.FullName 2>1 }

したがって、PreBuild.ps1スクリプトとPowerShellステップのビルドログを確認して、WebプロジェクトとLibraryプロジェクトのproject.jsonファイルが両方復元されているかどうかを確認する必要があります。

2

私自身の問題では、ソリューション全体を再構築しましたが、エラーは消えました。

2
superninja

私はそのバグ/問題について自分自身の経験を追加しています。

問題を解決するために、project.jsonから "System.Xml.XDocument": "4.0.10"を削除する必要がありました。

0
Hugo

このエラーを引き起こしている行のメソッドの定義に移動し、依存関係を更新すると、この問題が解決しました

0
Remy

私の経験では、binとobjフォルダーを削除しましたが、うまくいきました。ただし、私の同僚のために、彼はソリューションフォルダー全体を削除し、TFSから最新のものを取得しました。その後、彼はソリューションをコンパイルして再構築し、それが機能しました。

0
Gauravsa