私はこのエラーを解決しようとしています:
ファイルまたはアセンブリ 'log4net、Version = 1.2.10.0、Culture = neutral、PublicKeyToken = 692fbea5521e1304'またはその依存関係の1つを読み込めませんでした。指定されたファイルが見つかりません。 "このエラーはweb.configファイルにあります。
Log4net.dllをwebappのbinディレクトリにコピーすると、
ファイルまたはアセンブリ 'log4net、Version = 1.2.10.0、Culture = neutral、PublicKeyToken = 692fbea5521e1304'またはその依存関係の1つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。
このエラーは、web.configファイルでも発生します。
アセンブリが正しく読み込まれるように、ファイルと一致するようにバージョンと公開キートークンを変更するのは簡単です。それを行うと、reportViewer
オブジェクトが初期化されるときを除いて、私のウェブサイトは完全に動作します。次に、web.configではなく、reportViewerタグに元のエラーをスローします。
私の仮説は、要求されたバージョンのlog4net.dll
をインストールすると、問題が解決するというものです。しかし、私はそれがどのファイルなのか、それをどこで見つけるのか手掛かりがありません。 log4net 1.2.10をダウンロードして、ダウンロード内のすべてのdllを試すことで、明白なことを確認しました。
私のウェブサイトは開発マシンでは問題なく実行されますが、サーバーに公開されたときは実行されないことを述べておきます。
Asp.net Webサイト、.NET 4.0、IIS 7、Server 2008 R2 OSで実行しています。64ビット用のCrystal Reports 13.0.1をインストールしました(私のマシンは64ビットです) 。
この問題を解決するにはどうすればよいですか?
編集:@Kevianの回答に応じて、web.configファイルに変更を加えました。それでも、マニフェスト定義がアセンブリ参照と一致しないというエラーが発生します。このエラーをスローするコードは次のとおりです。
Line 33: <CR:CrystalReportViewer ID="CrystalReportViewer1" runat="server" AutoDataBind="true"
Line 34: BestFitPage="True" ToolPanelView="None" />
ここには、解決可能ないくつかの問題があります。
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken = 692fbea5521e1304、processorArchitecture = x86 ">
修正 64ビットで機能したのは、実際には新しいPublicKeyTokenが含まれる最新のlog4net.dllを取得することで、サードパーティのbinフォルダーにあるlog4net.dllを置き換える[〜 #〜] and [〜#〜]すべてのlog4net.dll参照を次のように変更します。
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken = 1b44e1d426115821、processorArchitecture = [〜#〜] msil [〜#〜] ">
これをweb.configに追加してみてください。基本的にランタイムに、両方のバージョンで同じアセンブリをロードしても問題がないことを通知します
<runtime>
<assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="692fbea5521e1304" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.2.10.0" newVersion="1.2.10.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
1.2.10.0
を実際にbinフォルダーにあるバージョンに置き換える必要があります。
あなたの問題のために、私は参照でこのdllを削除/削除して再インストールすることをお勧めします、そしてVS 2013にLog4Netを正しくインストールする方法は次のとおりです:
1)NuGet Packages Managerユーティリティのnuget.org Package Sourcesをオンにすることを確認します。プロジェクト(ソリューションではない)を右クリックし、左下の[Manague NUGet Packages ...]を選択して[設定]を選択し、[パッケージマネージャー]を選択します。 [利用可能なパッケージソース]で[パッケージソース]を選択し、[nuget.org]を選択します。また、[Machine-widパッケージソース]の両方をオンにし、[OK]をクリックします。
2)NUGetパッケージを管理し、左側のペインで[オンライン]を選択し、Apache log4jから移植された "log4net"を検索してインストールします。プロジェクトの参照の下にインストールされていることがわかります
スクリーンショットも添付しました。
楽しい!
お使いのマシンが64ビットで、Crystal Report 32ビットバージョンをインストールしている場合、このエラーは何でも好きなことになります。この場合、必要なすべてのアセンブリがGACに正しく登録されていますが、「log4netアセンブリをロードできません...」と表示されます。このエラーの理由は、64ビットマシンで32ビットアプリケーションを実行しようとしているためです。
サーバー側でレポートを実装する場合、IISはこのアプリケーションの実行を許可しません。これを解決するには、IISで32ビットアプリケーションを有効にする必要があります。
この手順は次のとおりです:
私のコードにこの問題がありました。誰かが使用していたプロジェクトの1つにLog4Netバージョンの競合がありました。彼らは12.2.10を使用しており、私は12.2.13を使用していました。問題を修正するために、私は自分の参照を取り除き、それらの参照DLLを見つけました。代わりにそれを使用しましたが、完全に機能しました。
参照を検索するために、Microsoft Visual Studioにはブラウザ機能があります。これを使用してDLLを取得できます。 dllを見つけるには、プロジェクト内の参照をクリックし、検索する参照をクリックします。この場合はLog4Netです。依存関係のリストが表示され、他のlog4netは選択したLog4Netの近くにあり、現在選択されているdll参照の場所を示すテキストが表示されます。ここにリファレンスがあります。
MSDOS
-- Create a virtual disk
subst t: C:\Windows\Assembly
-- Delete log4net x64 Assembly
del t:\GAC_64\log4net\1.2.10.0__692fbea5521e1304\log4net.dll
-- remove the virtual disk
subst t: /d