0

相互にさまざまな依存関係がある複数のプロジェクトで構成されるソリューションがあります。プロジェクト/ソリューションをビルドすると、必要に応じてProject\binフォルダーにDLLアセンブリファイルが作成されます。しかし、プログラムを実行すると、すべてが一時ファイルフォルダーにコピーされ、そこから実行されます。

C:\ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ ApplicationName

これで、binフォルダーと実行元の一時ファイルフォルダーに、プロジェクトごとに同一のDLLファイルがあります。問題は、いくつかの場所でプロジェクトにハードコードされたbinディレクトリへの参照があるため、そこを見ると、DLLの取り違えが発生し、エラーが発生することです。Visual Studioでアセンブリファイルを複製して一時ファイルから実行するのではなく、元のbinディレクトリから実行するにはどうすればよいですか?

PSハードコーディングを変更するように言わないでください。ハードコーディングをそのままにしておく必要があるのには理由があります。だから私はビンから実行する方法を理解しようとしています。

ありがとう

4

1 に答える 1

2

これはシャドウ コピーと呼ばれ、設計上の機能です。特に ASP.NET サイトの場合、アプリケーション ドメインをアンロードせずにドメイン アセンブリを更新できます。これは、継続的に実行するように設計された ASP.NET サイトにとって重要です。そのままにして、\bin ディレクトリの使用要件を再評価することを強くお勧めします。

本当にシャドウ コピーを無効にしたい場合は、web.config ファイルに次を追加します。

<hostingEnvironment shadowCopyBinAssemblies="false" />

上記を行うことの副作用は、\bin ディレクトリ内のアセンブリがアプリケーションの存続期間中にロックされることです。

于 2010-07-14T16:02:44.270 に答える