0

これは長いものです - 我慢してください..!

私は現在、モノリス「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.compiledapp_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 からコピーする必要がありますか? ステージングに?

4

1 に答える 1

0

すべてのdllとコンパイル済みファイルを公開フォルダーからステージング環境にコピーします。他のdllである可能性があり、コンパイルされたファイルはまだappcodeを参照しています。

于 2012-12-27T15:10:31.810 に答える