web-dev-qa-db-ja.com

ファイルまたはアセンブリを読み込めませんでしたMicrosoft.Practices.ServiceLocation、バージョン= 1.3.0.0

アプリケーション(.NET 4.5)を実行すると、次のエラーが発生します。

Server Error in '/' Application.

Could not load file or Assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.IO.FileNotFoundException: Could not load file or Assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the Origin and location of the exception can be identified using the exception stack trace below.

Assembly Load Trace: The following information can be helpful to determine why the Assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' could not be loaded.


=== Pre-bind state information ===
LOG: DisplayName = Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
 (Fully-specified)
LOG: Appbase = file:///C:/Users/Austin/Documents/FileStore/FileStore.Web/
LOG: Initial PrivatePath = C:\Users\Austin\Documents\FileStore\FileStore.Web\bin
Calling Assembly : Chicago.Security, Version=1.0.5826.21195, Culture=neutral, PublicKeyToken=null.
===
LOG: This bind starts in default load context.
LOG: Using application configuration file: C:\Users\Austin\Documents\FileStore\FileStore.Web\web.config
LOG: Using Host configuration file: C:\Users\Austin\Documents\IISExpress\config\aspnet.config
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config.
LOG: Redirect found in application configuration file: 1.3.0.0 redirected to 1.3.0.0.
LOG: Post-policy reference: Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: The same bind was seen before, and was failed with hr = 0x80070002.

Stack Trace: 


[FileNotFoundException: Could not load file or Assembly 'Microsoft.Practices.ServiceLocation, Version=1.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.]
   Chicago.Security.AuthenticationModule.application_AuthenticateRequest(Object sender, EventArgs e) +0
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +141
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

NugetパッケージCommonServiceLocatorをインストールしましたが、まだこのエラーが発生します。奇妙なことに、web.configファイルにアセンブリバインディングリダイレクトがあるのですが、アセンブリがプロジェクトの参照リストに表示されず、追加する場所が見つかりません。私はまだASP.NETに比較的慣れていないので、問題が正確に何であるかを特定することはできません。 IIS Managerのアプリケーションプールで[32ビットアプリケーションを有効にする]をtrueに設定することも試してみましたが、これで問題が解決しませんでした。しばらくの間、どんな助けもいただければ幸いです。

11
Otto45

何時間もの調査とさまざまなことを試した後、NugetからCommonServiceLocatorをアンインストールして再インストールするのがうまくいくように見えました。厄介な.NETアプリとその依存関係がいかにすばらしいかには、今でも驚かされます。

12
Otto45

別のバージョンではなく、バージョン1.3.0がインストールされていることを確認してください。

Nugetリンク: https://www.nuget.org/packages/CommonServiceLocator/1.3.

6
Ted Mosby

彼らはパッケージを更新しました。最新のcommonservicelocatorパッケージをダウンロードする場合、以下のコードの変更が必要です。

using Microsoft.Practices.ServiceLocation;

using CommonServiceLocator;
0
Unnie

古いバージョンでC#7.0の新しい構文を使用していたため、このエラーが発生しました。以前の構文に戻したところ、問題は解決しました。

具体的には、私は使用していました:-

// Newer syntax.
if (int.TryParse(args.Value, out var value))
{
  args.IsValid = value > 0;
}

// Older supported version which resolved the issue.
int value;
if (int.TryParse(args.Value, out value))
{
  args.IsValid = value > 0;
}
0
footyapps27

VS2017でVS2015ソリューションを開いたところ、参照が見つからないことがわかりましたが、その理由はわかりません。

  • アセンブリ「CommonServiceLocator」が見つかりませんでした
  • アセンブリ「Unity.RegistrationByConvention」が見つかりませんでした
  • アセンブリ「Unity.ServiceLocation」が見つかりませんでした
  • アセンブリ「Unity.Configuration」が見つかりませんでした
  • アセンブリ「Unity.Interception.Configuration」が見つかりませんでした
  • アセンブリ「Unity.Container」が見つかりませんでした

最初にプロジェクトをビルドして、不足している参照(リリース番号を示す)のリストを取得します。次に、ソリューションのNUGETパッケージマネージャーを開き、再インストールします。注:インストール順序には依存関係があります。インストールが失敗した場合は、前提条件を見つけてください。依存関係を最初にインストールしてから、再試行してください。修正には約10分かかります。

0
John Peters

VS->ツール-> Nugetパッケージマネージャー->パッケージマネージャーコンソールを開きます

>PM Install-Package CommonServiceLocator

これは役立つはずです!

0
kamlendra