クリーンなソリューションを実行して再構築すると、MVC 4 Web APIプロジェクトが機能しなくなります。 Newtonsoft.Jsonが見つかりません。
現在、MSはこれをデフォルトのJSONシリアライザーとして使用していることを知っていますが、プロジェクトの参照リストには含まれていません。また、NuGetからは既にインストールされていると言うため追加できません。
何が間違っている可能性があるかについて、誰もがここで考えていますか?
完全なスタックトレース:
[FileNotFoundException:ファイルまたはアセンブリ 'Newtonsoft.Json、Version = 4.5.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。]
MvcWebRole1.WebApiApplication.Application_Error()in d:\ Data\Source Controlled Projects\georace\georace\Server\GeoRaceServer\MvcWebRole1\Global.asax.cs:70[HttpException(0x80004005):ファイルまたはアセンブリ 'Newtonsoft.Json、Version = 4.5.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context、HttpApplication app)+12838633
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext、HttpContext context、MethodInfo [] handlers)+175
System.Web.HttpApplication.InitSpecial(HttpApplicationState状態、MethodInfo []ハンドラー、IntPtr appContext、HttpContextコンテキスト)+304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext context)+404
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)+475[HttpException(0x80004005):ファイルまたはアセンブリ 'Newtonsoft.Json、Version = 4.5.0.0、Culture = neutral、PublicKeyToken = 30ad4fe6b2a6aeed'またはその依存関係の1つをロードできませんでした。システムは、指定されたファイルを見つけることができません。]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context)+12851296 System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context)+159 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr、HttpContext context)+12679949
わかりました-他の誰かがこのMSバグによってcanられた場合に投稿する、私の周りの仕事を見つけました。問題は、デフォルトですでにパッケージに含まれているため、NuGet参照を追加できないことです。そう...
再インストールするNuGetによってインストールされたパッケージalreadyについては、Package Manager Consoleに次のコマンドを入力するだけです。
プロジェクトの更新:
Update-Package Newtonsoft.Json -Reinstall
特定のプロジェクトで更新する
Update-Package Newtonsoft.Json -Reinstall -Project My.App
私にとって、このエラーを修正した唯一のことは、web.configファイルに不足しているセクションを追加することでした。これは https://.com/a/20414714/940783
追加する必要があるものは次のとおりです。
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
他のSO貢献者が述べたオプションと、新しいオプションをいくつか組み合わせました。
まず、Nuget 2.1にはいくつかの問題があり、この問題はバグとして記録され、2.2.2で修正されました。こちらをご覧ください: https://nuget.codeplex.com/workitem/305
そこで、次の手順を実行しました。
同じ問題がありました(VS2012)。答えはありませんでした。最後に私はこれでそれを解決しました:
1)[ツール]-> [拡張機能と更新プログラム]に移動し、[NuGetパッケージマネージャー]を更新(またはインストール)し、次に[オンライン]に移動し、[NuGet参照の追加]および[NuGet参照のクイック追加]
2)insttal all in 1)プロジェクトで[参照]を右クリックし、[インストールされたパッケージ]で[Nugetパッケージの管理]を選択してJson.NETを見つけます。 [アンインストール]をクリックします-これは今は実行できませんが、最初にアンインストールする必要があるものが表示されます(ASP Web Apiクライアント)。 「オンライン」に移動して、「Json.NET」、「ASP.NET WEB APIクライアントライブラリ」、および「ASP.NET WEB APIクライアントOData」をインストールします。
3)Global.asaxで行「WebApiConfig.Register(GlobalConfiguration.Configuration);」を削除します
ソリューションを構築し、すべてが大丈夫です..これが誰かを助けることができることを願っています:) gl
プロジェクトに埋め込まれた古いローカルコピーを指すJSON.NETへの「古いスタイル」(nuget以前)の参照があるかどうかを確認します。
古いReference\Lib\JSON.NET
これは私の参照パスにあり、優先度を取得しています。
JSON.NETプロパティページが、予想されるNugetパッケージバージョンを指していることを確認します。
ライブで展開したTeam Serverビルドでこの問題が発生しました。元のソリューションを修正し、クリーンビルドを実行して古いReference\Lib\
DLLはピックアップされていませんでした。
私は同じFileNotFoundExceptionを抱えていましたが、プロジェクトですでにNewtonsoft.Jsonへの参照を持っていることがわかりましたが、「ローカルコピー」プロパティがTRUEに設定されていませんでした。 TRUEに設定するだけで、dllも出力ディレクトリにコピーされます。
Newtonsoft.jsonで問題が発生した原因はわずかに異なりました。 .Net 4.5に対して構築されたWindowsアプリを開発しました。後で、顧客の環境が.Net 4.0のみをサポートしていることがわかりました。 .Net 4.5の作業を維持するためにソリューションを新しい領域にコピーし、ソリューションプロパティをMicrosoft.Net 4.0に変更しました。 Newtonsoft.jsonが見つからないというエラーが表示され、参照がありませんでした。
Packages.configを削除するには、上記の手順に従いました。 Newtonsoft.jsonの削除。 Newtonsoft.jsonが\ packagesディレクトリから削除されたことを確認します。次に、NuGetからNewtonsoft.jsonを再インストールします。 .Net 4.0でアプリケーションをコンパイルして実行できました
これに先立ち、packages.configファイルは、Newtonsoft.jsonが対象とする.Netのバージョンが.Net 4.5であることを示していました。 Newtonsoft.jsonを削除して追加すると、ターゲットは.Net 4.0になります。
ここで述べたすべてをテストしたが、何も機能しなかった。私の場合、このようなパスフォルダーがありました。
#私の問題の原因。 #を削除して正常に動作しました。
私の場合、同僚のプロジェクトをチェックアウトしたため、Newtonsoft.Jsonの参照が何らかの形で悪くなったため、削除する必要がありました。プロジェクトを右クリック-> NuGetパッケージの管理。左側で[インストール済みパッケージ]をクリックし、Json.NETを選択してアンインストールします。私の場合、他の依存パッケージ(Microsoft ASP.Net Web APIなど)もアンインストールする必要がありました。左側の[オンライン]を選択してJson.Netを検索し、再インストールします。
私はこれを誤って行いましたが、それをうまく解決しました。
新しいVS 2012プロジェクトを開始した後、NuGetを使用してNewtonsoft.JSONをインストールしました。前述のように、バージョン4.5.6は既にインストールされています。
甘い。
‑IgnoreDependenciesフラグを指定してSocialAuth.Netパッケージをインストールしてから、依存関係を手動でインストールし、Json.Netライブラリの最新バージョンのみをインストールするようにしてください。
その後、実行時にSocialAuth.Netパッケージはアセンブリリダイレクトを尊重し、古いバージョンではなくJson.Net(v4.5)をロードします。
私はVS2012 Expressで同じ問題を抱えていましたが、
ツール-> NuGetパッケージマネージャー->ソリューションのNuGetパッケージの管理
そこでNewtonsoft Jsonを見つけてインストールしました。それまでにソリューションのどのプロジェクトにもインストールされていませんでした。