我有相当大的第三方ASP.NET WebSite项目,我使用MSBuild和Microsoft Web部署目标进行预编译和合并。我不预编译.aspx和.ascx文件,只预编译代码文件。
在预编译阶段,用户控件将编译为未合并到最终WebSite.dll程序集中的程序集。最终输出包含:
所有其他用户控件都被编译成名为App_Web_abcdefgh.dll的程序集,并且这些程序集已合并到WebSIte.dll中,只有这一个控件没有。
这种行为可能是什么原因?
答案 0 :(得分:0)
我有一个类似的问题,试图从命令行使用aspnet_compile
和aspnet_merge
进行Web App项目。两个控件始终具有命名程序集而不是App_Web_[hex].dll
,然后在合并后无法加载。
在我的情况下,我能够将-fixednames
标记添加到aspnet_compile
调用,这会将所有控件库生成为App_Web_[control_name].[hex].dll
,这使得它们对{{1}都可见删除了程序集加载错误。
我仍然不明白为什么这些控件将始终使用不同的文件名模式生成(层次结构中没有重复的页面或控件名称),但HTH是某人。
答案 1 :(得分:-2)
用户控件被编译为单独的程序集,因为这允许您将用户控件视为Web控件。您可以使用ILMerge实用程序将多个程序集合并为一个。这是a good page explaining this.