1

MSBuild と Microsoft Web Deployment ターゲットを使用してプリコンパイルおよびマージするかなり大規模なサード パーティの ASP.NET WebSite プロジェクトがあります。.aspx ファイルと .ascx ファイルはプリコンパイルせず、コードファイルのみをプリコンパイルします。

プリコンパイル フェーズでは、ユーザー コントロールは、最終的な WebSite.dll アセンブリにマージされないアセンブリにコンパイルされます。最終出力には以下が含まれます。

  • WebSite.dll
  • App_Web_selectsinglepath.ascx.73690ebc.dll

他のすべてのユーザー コントロールは App_Web_abcdefgh.dll のような名前のアセンブリにコンパイルされ、これらのアセンブリは WebSIte.dll にマージされましたが、この 1 つのコントロールだけはマージされませんでした。

この動作の原因は何ですか?

4

2 に答える 2

0

Web アプリ プロジェクトのコマンド ラインから使用しようとするaspnet_compileと、同様の問題が発生しました。aspnet_merge2 つのコントロールには常に ではなくアセンブリという名前が付けられておりApp_Web_[hex].dll、マージ後に読み込みに失敗していました。

私の場合-fixednames、呼び出しにフラグを追加することができましたaspnet_compile。これにより、すべてのコントロール ライブラリが として生成されApp_Web_[control_name].[hex].dll、すべてが に表示aspnet_mergeされ、アセンブリの読み込みエラーが解消されました。

これらのコントロールが異なるファイル名パターンで一貫して生成される理由はまだわかりません (階層内でページやコントロール名が重複していません)。

于 2012-04-02T22:20:32.093 に答える
-2

これにより、ユーザー コントロールを Web コントロールとして扱うことができるため、ユーザー コントロールは個別のアセンブリにコンパイルされます。ILMerge ユーティリティを使用して、複数のアセンブリを 1 つにマージできます。これを説明する良いページがあります。

于 2009-12-01T14:50:07.847 に答える