【发布时间】:2009-04-25 04:29:29
【问题描述】:
既然一个 web 项目中的所有文件都被编译成一个程序集,那么这个程序集是否维护一个目录结构?例如,如果根目录中的文件引用子目录中的文件,那么当这两个文件被编译到同一个程序集中时,这个引用怎么可能仍然有效?
-
假设一个 web 项目具有如下所示的目录结构。 由于所有 Web 项目的 ASPX 文件都被编译成一个程序集
WebProject1.dll,这个程序集如何能够记录/记忆目录结构? 因此,当您将WebProject1.dll部署到Web 服务器并且用户向http://WebProject1/some_SubDir/default.aspx发出请求时,WebProject1.dll将如何确定要呈现哪个页面?WebProject1\SubDir(其中 WebProject1 是根目录) WebProject1 -- 包含几个 ASPX 文件 WebProject1\SubDir -- 包含一个文件
default1.aspx。 当我们部署 Web 项目时,我们是否必须在 Web 服务器 (
WebProject1\SubDir) 上创建相同的目录结构,即使我们不会将任何 ASPX 文件放入这些目录中?我假设Web服务器上的
WebProject1.dll应该放在Bin目录下?
感谢
编辑:
只有源代码被编译成程序集,你仍然需要将aspx文件上传到服务器上的匹配目录中。
我的书说,当使用 Web 项目时,所有 Web 代码都被编译成单个程序集。我以为“所有代码”都包含 aspx 文件?!
通过类声明在页面和它的代码隐藏文件之间维护链接,默认情况下,该类声明位于与目录结构匹配的命名空间中
所以如果我通过Project --> Add New Item添加一个新的aspx页面,并将这个aspx页面存储在一个名为Hey的子目录中,那么这个页面就会驻留在命名空间WebProject1.Hey?!
但是我如何将新项目添加到子目录中,因为 Project --> Add New Item 没有给我一个选项来浏览和选择我希望保存它的目录,而是自动在根目录中创建 aspx 文件?
编译器生成dll时会保留相对路径。
我不确定我知道你指的是什么相对路径?
感谢
【问题讨论】:
-
回答您的其他问题: Aspx 文件不是代码,它们是决定如何格式化代码输出的标记文件。文件后面的代码(带有 cs 或 vb 扩展名)是被编译的代码。如果要将页面添加到子目录中 - 右键单击解决方案资源管理器中的目录并从那里添加新项目。页面/代码模型的更深入解释可以在msdn.microsoft.com/en-us/library/015103yb(vs.71).aspx 找到
-
“我认为“所有代码”都包含 aspx 文件?!”。不,您可以尝试在没有 aspx 文件的情况下部署 dll,您的网站将无法运行。实践总是比书本好。
-
"您可以尝试在没有 aspx 文件的情况下部署 dll,您的站点将无法运行。"到目前为止,由于 IIS 不断报告异常,我无法部署我的 dll。”一旦我弄清楚为什么这让我很难过,我会做一些练习,谢谢大家的大力帮助
标签: c# asp.net assemblies asp.net-2.0