私はこれをグーグルで検索しましたが、問題の解決策を見つけることができませんでした。
私のWebサイトは、Enterprise Library Data Access Componentsを参照するDAL(カスタムDLL)を参照しています。
NuGet Package Manager
からエンタープライズライブラリを追加しました。ウェブサイトを構築しようとすると、このコンパイルエラーがポップアップ表示されます。
エラー44ファイルまたはアセンブリ 'Microsoft.Practices.EnterpriseLibrary.Common'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません
Copy Local = True
のDALでEnterprise Library dlls
を設定しようとしましたが、dllはDAL dll
とともにWebサイトのBinディレクトリに転送されますが、それでもエラーがポップアップします。
誰もがこれについて私を導くことができます...
問題は、使用しているDLLとプロジェクトで参照されているDLLが異なることです。マニフェストの違いはわかりませんが、バージョンと/または公開鍵。
試すことは2つあります。
プロジェクトでDLL参照のプロパティを開き、Version Specificをfalseに設定します。
参照を削除し、binフォルダーからDLL=を削除して、参照を再度追加します。
また、GACのバージョンが異なる/正しくない可能性があります。特定の既知のバージョンを常に使用していることを確認するには、プロジェクトディレクトリに関連するアセンブリフォルダーを作成し、そのディレクトリにdllをコピーして、DLLへの参照を追加します。マシンのGACまたはその他の場所ではなく、アセンブリディレクトリ。これにより、後でマシンで更新されるバージョンではなく、アプリケーションを対象とした特定のバージョンのみが使用されるようになります。
NuGet CommonServiceLocator
Install-Package CommonServiceLocator
このdllは、一部のWindowsアプリケーションのインストールの一部として、開発者のマシンのGACにある可能性があります(私の最良の推測はVisual StudioまたはSSMSです)。そのため、ビルドマシンで警告またはエラーが発生する可能性が高く、GACを本番サーバーと同じようにクリーンに保つために最善を尽くしています。
ファイルを手動でダウンロードするには、 https://servicelocation.codeplex.com/ にアクセスします
ビルドの警告とエラーを修正するには、NuGetコマンドを実行して CommonServiceLocationパッケージ をインストールするだけです。パッケージには、この1つのdllファイルのみが含まれています。マイクロソフトは、2008年以降、このファイルの1つのバージョン(1.0.0.0)のみをリリースしています。このファイルは、すべての.NETバージョンおよびすべてのUnityバージョンと完全に互換性があります。
[〜#〜] all [〜#〜] app.configファイルのLoggingの参照から削除することで、この問題を解決できました::
, Version=6.0.0.0, Culture=neutral, PublicKeyToken=null
すなわち:
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings,
Microsoft.Practices.EnterpriseLibrary.Logging,
Version=6.0.0.0, Culture=neutral, PublicKeyToken=null"
requirePermission="true" />
になる:
<section name="loggingConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings,
Microsoft.Practices.EnterpriseLibrary.Logging"
requirePermission="true" />
これは理想的ではありませんが、機能します...
Enterprise Library Configuration Toolは値を元に戻すので、それを監視する必要があります。これらの不一致の設定を受け入れるように構成ファイルに指示する方法があることは知っていますが、方法がわかりません。
Web.ConfigでEnterpriseLibrary参照ごとにPublicKeyToken値を設定すると、修正されました。