2017-10-03 45 views
0

最近Visual Studio Community 2013からCommunity 2017にアップグレードしました。私のRESTサービスプロジェクトは、ビルドパス)。これは、3台のマシンのうちの1台でのみ発生します。 RESTエンドポイントを作成するためにMicrosoft.AspNet.WebApi.Owinを使用しています。vs2013からvs2017にアップグレードした後、ファイルまたはアセンブリ 'System.Web.Http、Version = 4.0.0.0'を読み込めませんでした

問題はSystem.Web.Httpの読み込み中であるようですが、ライブラリは{solution_folder} /packages/Microsoft.AspNet.WebApi.Core.5.2.3/lib/net45/System.Web.Httpを参照しています。 dll。

参照されたdllは参照されたフォルダにあり、再構築時にはbinフォルダにもコピーされます。

Inner Exception 1: FileLoadException: Could not load file or assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

スタックトレース:興味深いのは、私はVS2013でプロジェクトを再構築するとき、私はvs2013またはvs2017から、手動でサービスを開始することができますが、私はvs2017でプロジェクトを再構築し、私は次のエラーを取得することを開始するときにということです

System.Reflection.TargetInvocationException occurred
HResult=0x80131604 Message=Exception has been thrown by the target of an invocation. Source=mscorlib StackTrace: at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Owin.Loader.DefaultLoader.<>c__DisplayClass12.b__b(IAppBuilder builder) at Owin.Loader.DefaultLoader.<>c__DisplayClass1.b__0(IAppBuilder builder) at Microsoft.Owin.Hosting.Engine.HostingEngine.ResolveApp(StartContext context) at Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context) at Microsoft.Owin.Hosting.Starter.DirectHostingStarter.Start(StartOptions options) at Microsoft.Owin.Hosting.Starter.HostingStarter.Start(StartOptions options) at Microsoft.Owin.Hosting.WebApp.StartImplementation(IServiceProvider services, StartOptions options) at Microsoft.Owin.Hosting.WebApp.Start(StartOptions options) at Microsoft.Owin.Hosting.WebApp.Start[TStartup](StartOptions options)
at Microsoft.Owin.Hosting.WebApp.Start[TStartup](String url) at PNX.REST.Service.ServiceAdapter.Initialize() in C:\Projects\peaknx\PNX.OS\PNX.REST.Service\ServiceAdapter.cs:line 32
at PNX.REST.Service.PNXRESTService.StartAdapter(Object state) in C:\Projects\peaknx\PNX.OS\PNX.REST.Service\PNXRESTService.cs:line 85
at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state) at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch() at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()

Inner Exception 1: FileLoadException: Could not load file or assembly 'System.Web.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)

更新:

それだけで私のマシン上でビルドコピーが他のすべてのようにはWeb.configファイルを使用していますProjectName.Service.exe.config、としてファイルをApp.configファイルと思われます。

基本的に依存関係のリダイレクトは行われず、この構成部分がProjectName.Service.exe.configにないため、5.2.3.0ではなくSystem.Web.Http 4.0.0.0が常に検索されます。問題は、VS2017をインストールするときは、VSがWebプロジェクトとしてプロジェクトを認識し、Web.configファイルの代わりのapp.configを使用するためにワークロードに「ASP.NETとWeb開発」をチェックしなければならないということでした。解決しよう

<dependentAssembly> <assemblyIdentity name="System.Web.Http" 
publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> 
</dependentAssembly> 
+0

そのマシンでは、誤ったバージョンの.Netがあるか、asp.netが正しく登録されていない可能性があります。あなたはこの問題を実質的に解決できる唯一の人です – Liam

+0

私は同様の問題がありました。 System.net.httpがナゲットファイルに移動されました。ソリューション内の各プロジェクトに移動します。ナゲットに行き、system.net.httpナゲットファイルを検索してください。最新バージョンを使用するようにすべてをアップグレードします。それが助けるかどうかを確認してください –

+0

ちょっと、答え、小さな更新ありがとう:それは私のマシン上のビルドは、web.configファイルの代わりに、ProjectName.Service.exe.configとしてapp.configファイルをコピーするように見えるので、基本的に私の依存関係リダイレクト先は常に5.2.3.0ではなくSystem.Web.Http 4.0.0.0を探します < bindingRedirect oldVersion = "0.0.0.0-5.2.3.0" newVersion = "5.2.3.0" /> ivke

答えて

0

残念ながら、この手順が間違っていると便利なエラーレポートは表示されません。回答がお寄せいただきありがとうございます。

関連する問題