59

クリーンなソリューションを実行して再構築した後、MVC 4WebAPIプロジェクトが機能しなくなります。Newtonsoft.Jsonが見つかりません。

MSがこれをデフォルトのJSONシリアライザーとして使用していることはわかっていますが、プロジェクトの参照リストには含まれていません。また、既にインストールされていると表示されているため、NuGetから追加することはできません。

何がうまくいかないのか、誰かがここで何か考えを持っていますか?

フルスタックトレース:

[FileNotFoundException:ファイルまたはアセンブリ'Newtonsoft.Json、Version = 4.5.0.0、Culture = neutral、PublicKeyToken=30ad4fe6b2a6aeed'またはその依存関係の1つを読み込めませんでした。指定されたファイルが見つかりません。]
d:\ Data \ Source Controlled Projects \ georace \ georace \ Server \ GeoRaceServer \ MvcWebRole1 \ Global.asax.cs:70のMvcWebRole1.WebApiApplication.Application_Error()

[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)+175System.Web
。 HttpApplication.InitSpecial(HttpApplicationState状態、MethodInfo []ハンドラー、IntPtr appContext、HttpContextコンテキスト)+304
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContextコンテキスト)+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

4

13 に答える 13

81

わかりました-他の誰かがこのMSバグに悩まされた場合に備えて投稿して、自分自身の回避策を見つけました。問題は、既定でパッケージに既に含まれているため、NuGet 参照を追加できないことです。そう...

  1. packages.config を開く
  2. Newtonsoft.Json エントリを削除します。
  3. 保存してビルド
  4. NuGet から Newtonsoft.Json を再度追加します。
  5. ビルドして実行する
于 2012-08-19T15:35:37.387 に答える
47

NuGet によって既にインストールされているパッケージを再インストールする場合は、 Package Manager Consoleで次のコマンドを入力するだけです。

任意のプロジェクトで更新:

Update-Package Newtonsoft.Json -Reinstall

特定のプロジェクトで更新する

Update-Package Newtonsoft.Json -Reinstall -Project My.App
于 2013-01-16T20:16:28.270 に答える
4

私は同じ問題を抱えていました(VS2012で)。答えはありませんでした。最後に、これで解決しました:

1) [ツール] -> [拡張機能と更新プログラム] に移動し、[NuGet パッケージ マネージャー] を更新 (またはインストール) します。次に、[オンライン] に移動し、[NuGet の簡易追加] と [NuGet 参照] をインストールします。

2)すべてをインストールした後、1)プロジェクトで「参照」を右クリックし、「インストール済みパッケージ」で「Nugetパッケージの管理」を選択して、Json.NETを見つけます。[アンインストール] をクリックします。今は実行できませんが、最初にアンインストールする必要があるもの (一部の ASP Web Api クライアント) が表示されます。したがって、これらをすべてアンインストールしてから、「Json.NET」をもう一度アンインストールしてみてください。「オンライン」に移動し、「Json.NET」、「ASP.NET WEB API クライアント ライブラリ」、および「ASP.NET WEB API クライアント OData」をインストールします。

3) Global.asax で、行 "WebApiConfig.Register(GlobalConfiguration.Configuration);" を削除します。

ソリューションを構築すれば、すべて問題ありません..これが誰かの助けになることを願っています:) gl

于 2014-03-04T13:44:57.020 に答える
4

他の SO 貢献者が述べたいくつかのオプションと、新しいオプションを組み合わせました。

まず、Nuget 2.1 にはいくつかの問題があり、この問題はバグに記録され、2.2.2 で修正されたことが判明しました。ここを参照してください: https://nuget.codeplex.com/workitem/3050

そこで、次の手順を実行しました。

  1. リンクに従ってNugetバージョンを2.2.2に更新しました
  2. NUget からアンインストールして、プロジェクト内の Json へのすべての参照を削除しました (プロジェクトを右クリックしてパッケージを検索し、アンインストールします (これでも実行しませんでした)。
  3. コンピューターからパッケージ ファイルを物理的に削除しました。ここでパッケージ ファイルを見つけました: //projectdir/packages/Newtonsoft.JSON
  4. packages.config ファイルを物理ディレクトリ (//projectname/packages.config) から削除しました。
  5. これがすべて完了したら、Nuget を介して Newtonsoft を再度追加し、再構築を行ったところ、機能しました。
于 2013-03-11T01:00:43.947 に答える
3

プロジェクトに埋め込まれた古いローカルコピーを指すJSON.NETへの「古いスタイル」(プレナゲット)参照があるかどうかを確認します。

Reference\Lib\JSON.NET参照パスにあり、優先される古いものがありました。

JSON.NETプロパティページが予想されるNugetパッケージバージョンを指していることを確認します。

ライブでデプロイされたTeamServerビルドでこの問題が発生しました。元のソリューションを修正し、クリーンビルドを実行して、古いReference\Lib\DLLが取得されていないことを確認する必要がありました。

于 2012-11-15T02:58:28.117 に答える
1

私は同じ FileNotFoundException を抱えていましたが、プロジェクトで既に Newtonsoft.Json への参照を持っていることがわかりましたが、「ローカルのコピー」プロパティが TRUE に設定されていませんでした。これをTRUEに設定するだけで、dllが出力ディレクトリにコピーされるようになります。

于 2014-01-24T15:15:54.517 に答える
1

私の場合、同僚のプロジェクトをチェックアウトしたところ、何らかの形で Newtonsoft.Json の参照がおかしくなったので、それを削除する必要がありました。プロジェクトを右クリック -> NuGet パッケージの管理。左側で [Installed Packages] をクリックし、Json.NET を選択してアンインストールします。私の場合、他の依存パッケージ (Microsoft ASP.Net Web API など) もアンインストールする必要がありました。左側で「オンライン」を選択し、Json.Net を検索して再インストールします。

于 2012-12-18T20:40:52.330 に答える
1

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 になります。

于 2014-03-16T14:13:49.480 に答える
0

私は誤ってこれを行いましたが、うまく整理されました。

新しい VS 2012 プロジェクトを開始したので、NuGet を使用して Newtonsoft.JSON をインストールしました。バージョン 4.5.6 は既にインストールされていますが、これがアンインストールされ、4.5.10 がインストールされていることに感銘を受けました。

甘い。

于 2012-10-26T15:10:35.393 に答える
0

私はVS2012 Expressで同じ問題を抱えていました.

ツール -> NuGet パッケージ マネージャー -> ソリューションの NuGet パッケージの管理

そこで、Newtonsoft Json を見つけてインストールしました。それまでに、ソリューションのどのプロジェクトにもインストールされていませんでした。

于 2016-07-16T12:09:28.340 に答える