我在这里发现了一个真正的头脑......它似乎是ASP.NET中令人沮丧的主题之一。
我有一个程序集可以实现很多自定义Linq的东西,它的核心是零网络功能。我有一个额外的程序集,扩展此程序集具有Web特定的行为。
特定于Web的行为伴随着ASCX模板化UserControls中标记的几个用户控件。
我无法在此程序集上完成一个很好的结束,因此重新部署以便在其他应用程序中使用很简单。让我来看看到目前为止我尝试过的事情:
所以数字1只是废话,数字2不给我我想要的类型支持和数字3我认为我将要产生一个合理的解决方案:
App_Code
文件夹中,准备一个工厂类,该工厂类将使用反射构造所需控件类型的对象,并期望反映的类型将出现在部署输出中(希望通过ClassName
指令中Control
属性的存在来保证。Theres也总是将ASCX控件重写为自定义控件的另一种选择,但目前没有资源可以考虑它,而且我们没有这方面的专业知识,并且它们可以正常工作,如UserControls
我是否遗漏了一些明显的东西,可能更简单的东西,或者这只是有目的的困难?我已经阅读过关于ASP.NET编译过程的故事,这个故事在我的旅行中的设计非常不幸。
答案 0 :(得分:2)
嗯,我认为我已经完成了......通过注意我最后一种方法中的一些烦人的陷阱,我建议在使用Web部署项目在Web应用程序项目中编译ASCX用户控件时进行以下操作:
App_Code
中,除非它们是独立类或辅助类,ASP.NET将其视为 speshul 文件夹,其含义在我身上丢失,混乱,混乱然后是混乱。但是,此文件夹中的代码确实会在Web部署项目中输出。
access is denied
进程中存在任何命名冲突,则会出现aspnet_merge
错误。<Organisation>.<TechnologyName>.Web.DLL
- 编译的Web应用程序程序集(包含ASCX模板)<Organisation>.<TechnologyName>.Web.UI.DLL
- 由Web部署项目bin
和obj
路径是否已清除在您可能尚未完成命名空间或程序集命名方案时构建的任何先前的垃圾 - Web部署项目将非常热衷于包括这些,导致一个混乱。Import
指令,它还会考虑web.config
的{{1}}元素中存在的导入的命名空间,如果在部署过程中出现未知定义,请进行调整。有一些耐心,这很棘手!但是你最终会得到一些很好的可重新分发的UserControls!
呼!