2009-12-01 20 views
1

我有相當大的第三方ASP.NET WebSite項目,我預編譯和合並使用MSBuild和Microsoft Web部署目標。我不預編譯.aspx和.ascx文件,只有代碼文件。ASP.NET預編譯未能合併單個用戶控件

在預編譯階段,用戶控件被編譯爲一個未合併到最終WebSite.dll程序集中的程序集。最終的輸出包含:

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

所有其他用戶控件被編譯成組件與像App_Web_abcdefgh.dll和這些組件的名字被合併成WebSIte.dll,只有這一個控件不是。

這種行爲的原因是什麼?

+0

你可以發佈構建輸出嗎? – Bob 2009-12-01 14:32:32

回答

-2

用戶控件被編譯爲單獨的程序集,因爲這允許您將用戶控件當作網頁控件。您可以使用ILMerge實用程序將多個程序集合併成一個程序集。這裏是a good page explaining this.

+0

謝謝,但那不是我所問的。 – 2009-12-01 17:23:47

0

我有一個類似的問題,試圖從命令行使用aspnet_compileaspnet_merge爲Web應用程序項目。兩個控件總是有命名的程序集而不是App_Web_[hex].dll,然後在合併後將無法加載。

在我來說,我能夠在-fixednames標誌添加到aspnet_compile調用,它產生的所有的控件庫爲​​,這讓他們都可見aspnet_merge,其中移除程序集加載錯誤。

我仍然不明白爲什麼這些控件會一直使用不同的文件名模式(層次結構中沒有重複的頁面或控件名稱)生成,但HTH有人。