由于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/