メソッドが見つかりません: '!! 0 [] System.Array.Empty()'


123

VS 2015 RCとMVCテンプレートを使用して新しいアプリを作成しましたが、コード行を変更せずに次のエラーが発生しました。

Method not found: '!!0[] System.Array.Empty()'.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.MissingMethodException: Method not found: '!!0[] System.Array.Empty()'.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[MissingMethodException: Method not found: '!!0[] System.Array.Empty()'.]
   SAASApp.BundleConfig.RegisterBundles(BundleCollection bundles) in C:\Proyectos\SAASApp\SAASApp\App_Start\BundleConfig.cs:29
   SAASApp.MvcApplication.Application_Start() in C:\Proyectos\SAASApp\SAASApp\Global.asax.cs:18

[HttpException (0x80004005): Method not found: '!!0[] System.Array.Empty()'.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +483
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +176
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +350
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +305

[HttpException (0x80004005): Method not found: '!!0[] System.Array.Empty()'.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +661
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +96
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +189

初めて私に起こったので、今は行き詰まっています


回答:


232

開発マシンではすべて問題なく、本番サーバーでこの状況が発生しました。

ターゲットマシンに.NET Framework 4.6をインストールすると、問題が修正されました。


46
PCロードレター!
JeremyWeir

9
ありがとうございました。発生している可能性が最も高いのは、次のとおりです。-コードが.NET 4.6に対してコンパイルされ、参照アセンブリにArray.Empty <T>()が含まれている。-Roslynコンパイラーは、Array.Empty <T>が使用可能であることを確認し、パラメーターに必要な空の配列を生成するときにそれを使用します。-コンパイルされたアプリは、Array.Emptyが終了しない.NET 4.5で実行しようとしています。
wkalter 2017年

2
Windows 2008R2サーバーは、インストール後に一度再起動する必要がありました。
Karl

2
その答えを探しているが、この問題が発生している理由をいくつかのより多くの背景を提供します。このスレッド見つけたときgithub.com/dotnet/roslyn/issues/4889
Reuven Abliyev

.net461をインストールしましたが、それでも同じエラーが発生しました。net472をインストールするとうまくいきました
berniefitz

27

パーティーに遅れて申し訳ありませんが、TeamCityビルドを介して誰かがこの問題を受け取った場合に備えて、私たちがしなければならなかったことを説明できます。

.NET 4.6はビルドサーバーにインストールされ(アプリケーションサーバーにはインストールされていません)、RunnerTypeはVisual Studio(sln)で、Visual Studioオプションは2015に設定されていました。

これにより、ビルドで4.6を使用する必要があり、ビルドで4.5.2を使用するように強制するには、Visual Studioオプションを2013に変更する必要がありました。


5
私の同僚は、ビルドエージェントにDotNetFrameworkTargetingPack4.5.2_Pathの要件がある場合、Visual Studio 2015でビルドできることを指摘しました。4.6がインストールされている場合でも、
TeamCity

2
@gmanが提案したように、4.5.2開発パックを使用してこの問題を解決しました。4.6をインストールしたくない状況では、これはより良いソリューションのようです。
Dougc 2016年

長年の質問ですが、これはあなたのための@Dougcです。同様の状況ですが、4.6をインストールしたくなく、4.5.2をインストールしています。それでもこの問題が発生します。gmanが提案したのは何ですか?
singsuyash

@singsuyash、プロジェクト構成で、エージェント要件に移動します。そこで、[新しい要件を追加]をクリックします。パラメータ名にDotNetFrameworkTargetingPack4.5.2_Pathと入力し、存在する条件を設定します。
gautejohan

11

この状況に直面している他の人のために:

web.configファイルを見ると、<compilation>タグの値がtargetFramework4.6より前のバージョンに設定されていることがわかります。しかし実際には、ビルド時に.NET FrameWork 4.6以降(ASP.NET MVC 4.6以降に対応)を介してアプリケーションを公開しました。

したがって、値targetFrameworkを4.6に変更すると、エラーは次のように変化します。

「targetFramework」属性は現在、インストールされている.NET Frameworkのバージョンよりも新しいバージョンを参照しています。

これは実際のエラーであり、Webアプリの本番環境に適切なバージョンの.Net FrameWorkをインストールすることで、エラーを取り除くことができます。


ただし、これを行った後、アプリケーションの作成時に選択したプロジェクトテンプレートによっては、insightアプリケーションとcodeDomアプリケーションがインストールされている場合は、私と同じようにアンインストールする必要がある場合があります。roslynとMicrosoft Application Insightにさかのぼる配列エラーを受け取りました。
クラレンス

3

.NET Frameworkを最新(4.7.2)に更新すると、問題が解決しました。 解決策を提供してくれた@Andrey Kovalenkoに感謝します。

しかし、エラーが次のようであってはなりません、

ここに画像の説明を入力してください

.NET Frameworkの更新が該当するかどうかを各顧客に伝えるのはよくわかりません。この問題は、特にWindows Embedded OSがインストールされたシステムで、運用環境でのみ発生しました。

コードベース自体から、動作を克服する他の方法はありますか?


1
私のプロジェクトとすべてのDLLプロジェクトで古い.NET Framework(4.0クライアントプロファイル)をターゲットにすることもできました。:)
Naveen Kumar V

2

私は成功せずにこれらの解決策を試します。

私の解決策は、アプリケーションプールに移動し、2.0に切り替え、ブラウザーでサイトを実行し、エラーを確認し(バージョンが正しくないため)、4.0に戻し、「不正解」になりました。Webサイトを開きました。


2

遅すぎるかもしれませんが、同じ問題が発生し、以下のように修正しました。私はVisual Studio 2015を使用しています。web.configの構成コンパイルは、デフォルトで.NET FrameWork 4.6を指します。web.configファイルだけを編集することはできませんでした。サーバーに.NET FrameWork 4.6をインストールできず、アプリケーションがそれを使用しない場合。

  1. [デバッグ]> [[プロジェクト名]プロパティ]> [アプリケーション]に移動します。
  2. [ターゲットフレームワーク]ドロップダウンリストから.NET Framework 4.5(またはサーバーがサポートし、アプリケーションと互換性があるもの)を選択します。
  3. 再構築します。

0

私の場合、Windows Server 2012 R2で破損した.NETインストールがありました。より新しいバージョンの.NET(v4.7.1)をインストールする必要があり、サイトは現在機能しています。


0

私の場合、IIS自体にアクセスできず、.net 2からの特別なものだけがない特別な方法を使用していたときに、この問題が発生していました。

解決策:そのメソッドを抽出し、.net 2.0でクラスライブラリを作成しました。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.