由于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项目时,即使我们不将任何ASPX文件放入这些目录中,也必须在Web服务器(WebProject1\SubDir)上创建相同的目录结构吗?
我假设应该在Web服务器上的WebProject1.dll放在Bin目录中?


谢谢



编辑:




  只有源代码被编译到程序集中,您仍然需要将aspx文件上载到服务器上的匹配目录中。


我的书说,使用Web项目时,所有Web代码都被编译为单个程序集。我以为“所有代码”都包含aspx文件?




  页面和文件背后的代码之间的链接通过类声明进行维护,该类声明默认情况下位于与目录结构匹配的名称空间中
  
  


因此,如果我通过Project-> Add New Item添加新的aspx页面,并将此aspx页面存储在名为Hey的子目录中,则此页面将驻留在命名空间WebProject1中。

但是如何将新项目添加到子目录中,因为Project-> Add New Item并没有给我提供浏览和选择我要保存的目录的选项,而是自动在根目录中创建aspx文件?




  编译器生成dll时,将保留相对路径。


我不确定我知道您指的是什么相对路径吗?



谢谢

最佳答案

只有源代码被编译到程序集中,您仍然需要将aspx文件上载到服务器上的匹配目录中。例如,您在Visual Studio中进行的项目可能如下所示:

WebProject1 (The root project)
  |
  |- some_SubDir (A physical directory inside the project)
      |
      |-default1.aspx
      |-default1.aspx.cs (assuming a C# project)


编译完网络应用程序后,您需要将以下内容上传到服务器:

WebProject1 (The root directory for your website)
 |
 |-bin (The binary directory created by the build)
    |
    |-WebProject1.dll (The compiled source code of the web app)
 |-some_SubDir
    |
    |-default1.aspx (The file that will map to the URL www.websitename.com/some_subdir/default1.aspx)


编译资源(已在程序集中编译和存储的非源代码文件)是您在other question中解决的不同问题



编辑后可以直接添加问题的答案:


并非所有文件都被编译到程序集中,只有源代码文件被编译。通过类声明在页面和文件后面的代码之间维护链接,该类声明默认情况下位于与目录结构匹配的名称空间中,但不一定如此。
您的default1.aspx文件的标题中将包含以下内容:




继承行告诉Web服务器,当用户请求此页面时,应将其与定义该类的源代码一起处理,该源代码将在已编译的程序集中找到。物理aspx文件和已编译类的组合将生成标准html,然后将其传递回客户端。


是的,您需要创建相同的目录结构,但是需要将aspx文件放在其中。



(如果有人知道如何正确列出列表项,请给我编辑一下吗?)

关于c# - 程序集是否维护其目录结构?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/786985/

10-12 12:44
查看更多