动态ASP.NET应用程序编译

时间:2010-08-01 11:39:29

标签: c# asp.net dynamic-compilation

我的Web应用程序(ASP.NET v3.5 / C#)动态创建其他asp.net应用程序(创建aspx,aspx.cs,类,web.config,project.csproj文件等)。

甚至在我将“新”应用程序文件夹配置为IIS中的APPLICATION之后,当我尝试浏览它时,我得到以下解析器错误:Could not load type 'Template48.Template48'(其中Template48是我的应用程序)。< / p>

当我手动浏览到新的应用程序文件夹并重新构建它时,一切都很完美。

如何重新编译此WHOLE应用程序,但在其文件夹中?

提前致谢,

加。

1 个答案:

答案 0 :(得分:1)

Web应用程序需要在工作之前进行编译;这与网站不同。

仅仅提供来源是不够的;事实上,ASP.NET不需要源(aspx.cs)来运行应用程序,只需要.aspx,web.config和.dll文件(.NET术语中的“程序集”)。从生产系统中删除源代码甚至被认为是一种良好的做法,以避免意外泄漏源并向攻击者提供有关该站点内部工作的信息。

为了使这项工作,您需要以某种方式调用命令行C#编译器来动态构建项目;这将生成所需的.dll文件。

另一种不同但更难的方法是使用.NETs在运行时发出IL的能力;使用此工具,您可以直接生成程序集而无需通过编译器。这很困难,你需要彻底了解IL来解决这个问题。