これは長いものです - 我慢してください..!
私は現在、モノリス「app_code」dll ファイルを使用している Web サイトを持っており、メンテナンスを改善するために dll を分割することを検討しています。
web.config のセクションを使用して、app_code を複数のフォルダー単位の dll ファイルに分割しています。セクションは次のようになります。
<codeSubDirectories>
<add directoryName="CodeSubDir1"/>
<add directoryName="CodeSubDir2"/>
...
</codeSubDirectories>
「app_code」フォルダー内のファイルごとに個別のサブフォルダーを作成しましたが、相互に.cs
参照する少数の .cs ファイルを除いて、同じサブフォルダーにまとめて配置する必要がありました。.cs ファイルは、対応するサブフォルダーに移動されます。これらの変更後、"app_code" フォルダーの直下にある .cs ファイルはなくなりました。他のすべての参照が処理されるように、codeSubDirectories内の要素の順序を設定しました。
私の開発環境では、サイトが正常にビルドおよび公開されます。環境。[このプリコンパイル済みサイトを更新できるようにする] および [固定の名前と単一ページ アセンブリを使用する] チェックボックスは、発行中にチェックされます。「app_code」フォルダーの直下には .cs ファイルがないため、発行中にファイルが作成されapp_code.dll
ません。app_code.compiled
app_code の下のすべてのサブフォルダーは、 および として公開されapp_subcode_sub_folder_name.dll
ますapp_subcode_sub_folder_name.compiled
。
私の開発では、サイトとその公開バージョンの両方が正常に機能します。環境。
パブリッシュされたファイルをステージング設定 [ に更新した後、.NET 3.5/IIS 6/Win 2003]
[2 つの別々の URL で] 次の 2 つのエラーが発生します。
URL-1 のエラー:
ファイルまたはアセンブリ 'App_Code, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。例外の詳細: System.IO.FileNotFoundException: ファイルまたはアセンブリ 'App_Code、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。ソース ファイル: xxx\v2.0.50727\Temporary ASP.NET Files\xxx\xxx\xxx\App_Web_xxx.8.cs 行: 0
URL-2 のエラー: リソースが見つかりません。説明: HTTP 404。探しているリソース (またはその依存関係の 1 つ) は、削除されたか、名前が変更されたか、一時的に利用できない可能性があります。
私のステージング更新プロセスは次のとおりです。ファイルを「bin」フォルダーにコピーし"app_subcode_xxx.dll"
、"app_subcode_xxx.compiled"
既存の「app_code.dll」および「app_code.compiled」ファイルを削除します。ステージングの web.config にcodeSubDirectoriesセクションを追加します。
GAC
、コード、およびレジストリで、アセンブリ「app_code」への参照を検索しましたが、うまくいきませんでした。私は何を見逃していますか?ステージング サイトでこれを機能させるために必要な追加の手順はありますか? 公開されている他のすべての DLL も dev からコピーする必要がありますか? ステージングに?