3

ASP.NET Web アプリケーション プロジェクトを開発しているときに、Visual Studio 2008 でこのエラーが発生します。

参照されたライブラリ 'Path-to-DotNetNuke\bin\file.dll' を読み込めません: 別のプロセスで使用されているため、プロセスはファイルにアクセスできません。

これは、複数のモジュールを含む DotNetNuke プロジェクトです。IIS は、アプリケーション ルートの下の /bin フォルダーからすべてのアセンブリを読み込みます。

ソリューション内のプロジェクトは、それぞれの /DesktopModules/ProjectName フォルダーにあり、プロジェクトの下の bin フォルダーにコンパイルされます。

ソリューションをコンパイルし、スクリプトを使用してすべてのプロジェクトの dll を /bin にコピーすると、エラーが発生します。Visual Studio では再コンパイルできませんが、再起動するとすべて正常に動作します。これは、ソリューション全体を再コンパイルしてテストするときに非常に面倒です。再コンパイルするたびに Visual Studio を再起動する必要があります。

Visual Studio でこのエラーが表示されたとき、Process Explorer でファイル ロックが見つかりませんでした。


[更新] 64KB を超える DLL を参照する場合、すべての DLL を 1 つのフォルダーにビルドしないように指示する古い MSDN ドキュメントがあります。特に、ドキュメントには次のように記載されています。

参照されているアセンブリのサイズが 64 KB を超えると、ビルド プロセスがファイル ロック エラーで失敗します。

/bin フォルダーに 64KB を超える DLL への参照があり、そこに再コンパイルされた DLL をコピーすると、少なくとも VB IDE のバックグラウンド コンパイラーでは、これがトリガーされるようです。

4

1 に答える 1

2

ソリューションをコンパイルし、スクリプトを使用してすべてのプロジェクトの dll を /bin にコピーすると、エラーが発生します。Visual Studio では再コンパイルできませんが、再起動するとすべて正常に動作します。

各プロジェクトの出力ディレクトリを DotNetNuke Web サイトの bin ディレクトリに設定することをお勧めします。これにより、ファイルを完全にコピーする手動の手順を回避できます。

プロジェクトの出力ディレクトリを設定するには: ソリューション エクスプローラーでプロジェクトを右クリックし、プロパティを選択します。[ビルド] タブを選択し、[すべての構成] (上部) を選択して、[出力パス] を " ..\..\bin" (下部近く) に設定します。これは、プロジェクト ファイルがモジュールのホーム ディレクトリ (例: DesktopModules/YourModule/YourProject.csproj) 内の一般的な場所にあることを前提としています。それ以外の場合は、隣接する参照ボタンを使用して Web サイトの bin ディレクトリに移動できます。

于 2009-02-08T00:20:44.823 に答える