1

我有相当大的第三方 ASP.NET 网站项目,我使用 MSBuild 和 Microsoft Web 部署目标进行预编译和合并。我不预编译 .aspx 和 .ascx 文件,只预编译代码文件。

在预编译阶段,用户控件被编译成一个程序集,该程序集没有合并到最终的 WebSite.dll 程序集中。最终输出包含:

  • 网站.dll
  • App_Web_selectsinglepath.ascx.73690ebc.dll

所有其他用户控件都被编译成名称如 App_Web_abcdefgh.dll 的程序集,这些程序集被合并到 WebSIte.dll 中,只是这个控件没有。

这种行为的原因可能是什么?

4

2 回答 2

0

我在尝试使用Web App 项目的命令行时aspnet_compile遇到了类似的问题。aspnet_merge两个控件将始终具有命名程序集而不是App_Web_[hex].dll,然后在合并后将无法加载。

在我的情况下,我能够将-fixednames标志添加到aspnet_compile调用中,该调用将所有控件库生成为App_Web_[control_name].[hex].dll,这使得它们都对 可见aspnet_merge,从而消除了程序集加载错误。

我仍然不明白为什么这些控件会始终使用不同的文件名模式生成(层次结构中没有重复的页面或控件名称),但是有人。

于 2012-04-02T22:20:32.093 回答
-2

用户控件被编译到单独的程序集中,因为这允许您将用户控件视为 Web 控件。您可以使用 ILMerge 实用程序将多个程序集合并为一个。这是一个很好的页面来解释这一点。

于 2009-12-01T14:50:07.847 回答