2012-10-31 55 views
60

Webサイトをサーバーにアップロードしようとしました。私のローカルホストで正常に動作していたので、localhost wwwrootフォルダのすべてをサーバーにアップロードし、接続文字列を変更しました。ファイルまたはアセンブリ 'Microsoft.Web.Infrastructureを読み込めませんでした。

しかし、このエラーがあります:

Exception information: 
    Exception type: InvalidOperationException 
    Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.. 
    at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) 
    at System.Web.Compilation.BuildManager.CallPreStartInitMethods() 
    at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) 

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. 
    at RouteDebug.PreApplicationStart.Start() 

プロジェクトがnopcommerceました。

このエラーを解決するには何が必要ですか?

+0

ホストに同じ依存関係がインストールされていないため、おそらくコピーできませんでした。このガイドを参照してください。http://www.iwantmymvc.com/2011-03-23-bin-deploy-aspnet-mvc- 3-visual-studio –

答えて

48

あなたはあなたのプロジェクトにDLLを含めると同様にそれへの参照を追加する必要があります。あなたは、あなたのアプリケーションをホストするサーバー上のASP.NET MVCフレームワークをダウンロードする必要が MVC3 Deployment Dependency Problems

+0

サーバにも "_bin_deployableAssemblies"フロッファをアップロードする必要がありますか? – user1348351

+0

これを処理する方法はいくつかありますが、どのように展開するかによっても異なります。しかし、私のポストのリンクをクリックして、チェックマークをつけて一番上の答えのブログを見ると、正しく設定すると、_bin_deployableAssembliesからのdllが自動的に処理されるはずです。デプロイ(またはWebデプロイ)。 [ここに私が言及したブログへのリンクです。](http://www.iwantmymvc.com/2011-03-23-bin-deploy-aspnet-mvc-3-visual-studio) –

+4

このリンクが続くブログ〜を使用することができなくなったようです。この答えは - http://stackoverflow.com/a/12683392/137474私のために働いた。 – Baldy

1

:ここ

はすでにスタック上の同様の問題へのリンクです。ここからダウンロードしてインストールするだけの簡単な修正です(これはMVC 3フレームワークhttp://www.asp.net/mvc/mvc3です)。

22

AspNetMVC3ToolsUpdateSetupをインストールするには、参照

+0

回答を受け入れる必要があります! – AlwaysConfused

23

を追加せずにこの問題を解決するだろう hereからダウンロードし、私はそれが私のdevのボックスに働いていても、アセンブリをプロジェクトに追加されなかったことがわかりました。 NuGetでMicrosoft.Web.Infrastructureを検索し、そこからインストールします。次に、コピーローカルが選択されていることを確認します。

+1

同じ問題、それはCopyLocal = Trueで、なぜそれがうまくいかなかったのか分かりませんでした。あなたの解決策は私の問題を解決しました:) –

0

非常に簡単な解決策:Visual Studioで

、ツール/ライブラリパッケージマネージャー/パッケージマネージャコンソール

<PM> Install-Package Microsoft.Web.InfraStructure 

に行くこれは参考クリーニングを行った後に判明した素敵な時間

21

を持っていますそれはMicrosoft.Web.Infrastructureを削除しましたが、packages.configファイルから削除しませんでした。 Package Manager Consoleを使用してもう一度追加しようとすると、Visual Studioは既にインストールされていると言いますが、これは削除されたためにfalseです。

は、私は今、それが正常に動作し、その後、packages.configファイル

<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" /> 

にコードの行を削除し、この後、再び

PM> Install-Package Microsoft.Web.Infrastructure 

コマンドを実行しました。

5

Resharperのは、私はそれを削除し、未使用の基準としてMicrosoft.Web.Infrastructureを検出しました。ローカルでうまくいきましたが、devに公開した後も同じエラーが発生しました。

結論、ここでReSharperの

+0

これはまさに私がやったことでした。 – AndreFeijo

0

によって使用されていないとしてマークされた参照を削除するときに注意してください、私のシナリオでした。

私はプロジェクトA、Bを含むマルチプロジェクトソリューションを持っていた、C。.. N.

プロジェクトBはselectlistオブジェクトのファクトリを含まれているコードライブラリました。開発で期待どおりにプロジェクトが実行されますが、私たちのテスト環境に公開するとき、私はあなたが遭遇したエラーを取得した

Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified. 

何が起こったかは、「私が誤ってインストールされていた、nugetパッケージマネージャを介していました依存関係をインストールされたMicrosoft ASP.NET MVC」:

  • Microsoft.AspNet.Razor
  • Microsoft.AspNet.WebPages

Microsoft.AspNet.WebPagesは「Microsoft.Web.Infrastructure」に依存します。

私の解決策は、上記の3つのパッケージ(MVC、Razor、WebPages)をアンインストールしてから参照を右クリック>参照の追加>アセンブリ>拡張> System.Web.MVCをアンインストールしていました。

15

答えの数にもかかわらず、私はIMHOが物事を少し明確にする別のものを追加します。

Robwrightmailすでに言及したように、Microsoft.Web.InfrastructureはNuGetパッケージです(リンクは不要ですが、NuGet Package Managerにあります)。

明らかに、あなたのプロジェクトで参照されていて、突然消えました。その理由の数が存在するかもしれないが、重要なことは、あなたがでAutomatic Package Restore in Visual Studioを有効にしていることにもかかわらず、ということである。

  • する(NuGetが不足しているパッケージのダウンロードを許可する
  • 、設定を溶液(ソリューションエクスプローラのコンテキストメニュー)のためのNuGetパッケージの管理します)、
  • のVisual Studio(設定でビルド中に不足しているパッケージに対して自動的にチェック)、

特定のパッケージには、手動の再インストールが必要な場合があります。私はNuGetを混乱させているかも知れません。手動で参照を削除することはできますが、ここでは通常このような場合に適用する解決法があります。オリジナルバージョン(おそらく新しいものを既存のために更新されていない)を維持しながら、次のPMコンソールは、パッケージを復元するのに役立ちます。あなたが誤ってその新しいと既存のパッケージを上書きしたくない場合は

Update-Package Microsoft.Web.Infrastructure -Reinstall

バージョンの保存が必要な場合がありますプロジェクトで使用していた可能性のある「古い」機能を削除する可能性のあるバージョンです。

そして、少し長い1にもかかわらず証拠として、バージョンが変更されないことを、ここでは、コマンドが実行された出力です:もちろん

PM> Update-Package Microsoft.Web.Infrastructure -Reinstall 
Attempting to gather dependencies information for multiple packages with respect to project 'Samples.NuGet\DemoApp\DemoApp', targeting '.NETFramework,Version=v4.5.2' 
Attempting to resolve dependencies for multiple packages 
Resolving actions install multiple packages 
... 
Package removal starts here... 
... 
Removed package 'Microsoft.AspNet.Web.Optimization 1.1.3' from 'packages.config' 
Successfully uninstalled 'Microsoft.AspNet.Web.Optimization 1.1.3' from DemoApp 
Removed package 'WebGrease 1.5.2' from 'packages.config' 
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\uninstall.ps1' 
Successfully uninstalled 'WebGrease 1.5.2' from DemoApp 
... 
More package removals here. Omitted for brevity... 
... 
Removed package 'Microsoft.Web.Infrastructure 1.0.0.0' from 'packages.config' 
Successfully uninstalled 'Microsoft.Web.Infrastructure 1.0.0.0' from DemoApp 
... 
More package removals here. Omitted for brevity... 
... 
Removed package 'Antlr 3.4.1.9004' from 'packages.config' 
Successfully uninstalled 'Antlr 3.4.1.9004' from MvcLenseApp 
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\Lense.Mvc5\packages' 
--- Install packages (in reverse order) --- 
Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\DemoApp\packages' 
Added package 'Antlr.3.4.1.9004' to 'packages.config' 
Successfully installed 'Antlr 3.4.1.9004' to DemoApp 
... 
More package installs here. Omitted for brevity... 
... 
Package 'Microsoft.Web.Infrastructure.1.0.0' already exists in folder 'D:\Projects\Lense.Mvc5\packages' 
Added package 'Microsoft.Web.Infrastructure.1.0.0' to 'packages.config' 
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0' to MvcLenseApp 
... 
More package installs here. Omitted for brevity... 
... 
Package 'WebGrease.1.5.2' already exists in folder 'D:\Projects\DemoApp\packages' 
Added package 'WebGrease.1.5.2' to 'packages.config' 
Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\install.ps1' 
Successfully installed 'WebGrease 1.5.2' to DemoApp 
Package 'Microsoft.AspNet.Web.Optimization.1.1.3' already exists in folder 'D:\Projects\DemoApp\packages' 
Added package 'Microsoft.AspNet.Web.Optimization.1.1.3' to 'packages.config' 
... 
End of package re-install. 
... 
Successfully installed 'Microsoft.AspNet.Web.Optimization 1.1.3' to DemoApp 
PM> 

すべてのパッケージを再インストールしたい場合は、あなたNuGet herehereのupdate/installコマンドに精通している必要があります。

2

私にも同様の問題がありました。 NuGetはパッケージが正常にインストールされたことを示しましたが、参照は私のプロジェクトに追加されませんでした。

<Reference Include="Microsoft.Web.Infrastructure"> 
    <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

問題を解決:<PM> Install-Package Microsoft.Web.InfraStructureを実行

は、パッケージマネージャは、それがすでに

をインストールしていますと言い続けて、私は最終的にcsprojファイルを編集し、これらの行を追加することによって、それを手動で追加助けにはなりませんでした。

+0

私はcsprojファイルを検証しましたが、問題の原因となっていたフォルダを参照していました。その追加のフォルダ名を削除すると問題が解決しました – superachu

1

Microsoft.Web.Infrastructure.dllはbinフォルダに存在しませんでしたが、プロジェクトでローカルコピーするように設定されていませんでした。 ソリューションの別のプロジェクトからdllをコピーし、ページが読み込まれます。

0

私のプロジェクトで何が起こったのか分かりませんが、DLLへの間違ったパスを参照しました。 Nugetは正しくインストールしましたが、実際には他のパッケージと一緒にファイルシステム上にあったのですが、間違って参照されました。

packagesフォルダは、私のプロジェクトから2つ上のディレクトリにあり、パスは..\packages\で始まるだけです。私は..\..\packages\で始まるようにパスを変更し、私の問題を修正しました。

関連する問題