web-dev-qa-db-ja.com

Visual Studio 2012 Web APIプロジェクトは実行されません-Newtonsoft.Jsonが見つかりません

クリーンなソリューションを実行して再構築すると、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

59
BlackSpy

わかりました-他の誰かがこのMSバグによってcanられた場合に投稿する、私の周りの仕事を見つけました。問題は、デフォルトですでにパッケージに含まれているため、NuGet参照を追加できないことです。そう...

  1. Packages.configを開きます
  2. Newtonsoft.Jsonエントリを削除します。
  3. 保存してビルド
  4. NuGetからNewtonsoft.Jsonを再度追加します。
  5. ビルドして実行
81
BlackSpy

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

プロジェクトの更新:

Update-Package Newtonsoft.Json -Reinstall

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

Update-Package Newtonsoft.Json -Reinstall -Project My.App
47
Rubens Mariuzzo

私にとって、このエラーを修正した唯一のことは、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>
35
ClearCloud8

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

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

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

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

同じ問題がありました(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

4
TomT

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

古いReference\Lib\JSON.NETこれは私の参照パスにあり、優先度を取得しています。

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

ライブで展開したTeam Serverビルドでこの問題が発生しました。元のソリューションを修正し、クリーンビルドを実行して古いReference\Lib\ DLLはピックアップされていませんでした。

3
Simon_Weaver

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

1
jfrowies

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

1
David

ここで述べたすべてをテストしたが、何も機能しなかった。私の場合、このようなパスフォルダーがありました。

  • #Projects/Web/App/...

#私の問題の原因。 #を削除して正常に動作しました。

1
mvurban

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

1
Tony D

私はこれを誤って行いましたが、それをうまく解決しました。

新しいVS 2012プロジェクトを開始した後、NuGetを使用してNewtonsoft.JSONをインストールしました。前述のように、バージョン4.5.6は既にインストールされています。

甘い。

0
zeristor

‑IgnoreDependenciesフラグを指定してSocialAuth.Netパッケージをインストールしてから、依存関係を手動でインストールし、Json.Netライブラリの最新バージョンのみをインストールするようにしてください。

その後、実行時にSocialAuth.Netパッケージはアセンブリリダイレクトを尊重し、古いバージョンではなくJson.Net(v4.5)をロードします。

0
Nikunj B. Balar

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

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

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

0
meJustAndrew