codeSubDirectories 的问题

Posted

技术标签:

【中文标题】codeSubDirectories 的问题【英文标题】:Issue With codeSubDirectories 【发布时间】:2012-12-12 21:57:37 【问题描述】:

这是一个冗长的 - 请忍耐..!

我有一个网站,目前使用单体“app_code”dll 文件 - 并且正在考虑将 dll 分成几部分以便更好地维护。

我正在使用 web.config 中的部分将我的 app_code 拆分为多个文件夹式 dll 文件。该部分如下所示:

<codeSubDirectories>
  <add directoryName="CodeSubDir1"/>
  <add directoryName="CodeSubDir2"/>
  ...
</codeSubDirectories>

我已经为“app_code”文件夹中的每个 .cs 文件创建了单独的子文件夹,除了少数相互引用的 .cs 文件 - 因此需要放在同一个子文件夹中. .cs 文件被移动到其相应的子文件夹。 在这些更改之后,“app_code”文件夹下没有 .cs 文件。我已经设置了 codeSubDirectories 中元素的顺序,以便处理所有其他引用。

该网站在我的开发中成功构建和发布。环境。发布时选中“允许此预编译站点可更新”和“使用固定命名和单页程序集”复选框。发布期间不会创建 app_code.dllapp_code.compiled 文件,因为“app_code”文件夹下没有 .cs 文件。 app_code 下的每个子文件夹都发布为app_subcode_sub_folder_name.dllapp_subcode_sub_folder_name.compiled

该网站及其发布的版本在我的开发中也可以正常工作。环境。

在我将发布的文件更新到我的暂存设置 [.NET 3.5/IIS 6/Win 2003] 后,[在两个单独的 URL 上] 出现这两个错误:

URL-1 错误: 无法加载文件或程序集“App_Code,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。 说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。 异常详细信息:System.IO.FileNotFoundException:无法加载文件或程序集“App_Code,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。该系统找不到指定的文件。 源文件:xxx\v2.0.50727\Temporary ASP.NET Files\xxx\xxx\xxx\App_Web_xxx.8.cs 行:0

URL-2 错误: 无法找到该资源。 说明:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。

我的分段更新过程是:我将"app_subcode_xxx.dll""app_subcode_xxx.compiled" 文件复制到“bin”文件夹并删除现有的“app_code.dll”和“app_code.compiled”文件。我在登台时将 codeSubDirectories 部分添加到 web.config。

我搜索了GAC、代码和注册表,以查找对程序集“app_code”的任何引用,但没有成功。我错过了什么?是否需要任何其他步骤才能在我的暂存站点上进行这项工作?我是否还需要从 dev.js 复制所有其他已发布的 DLL。分期?

【问题讨论】:

我个人不使用codeSubDirectories 节点,因为无论如何都会编译App_Code 文件夹中的所有内容。当我在 App_Code 文件夹中创建子目录时,我使用文件夹名称作为文件夹中文件的命名空间;所以子文件夹中的每个类都有namespace MySubFolderName - 我发现这是一种更简单的方法来保持整洁,并且在使用智能感知时查找.cs 文件要容易得多。我知道这对您当前的错误没有帮助,尽管它可能会为您提供另一种不那么麻烦的代码布局方式。 【参考方案1】:

将所有 dll 和编译文件从发布文件夹复制到暂存环境。可能是其他 dll 和编译文件仍在引用应用代码。

【讨论】:

以上是关于codeSubDirectories 的问题的主要内容,如果未能解决你的问题,请参考以下文章

dir1 和 dir2 chmod 700, dir3 chmod 777 但我得到权限被拒绝

Excel VBA - 使用 Dir() 的多个实例?

将特定文件夹从 SVN 迁移到 Git

使用应用函数 dir.exist 和 dir.create

如何从 Java 中的 Azure Blob 存储中读取文件夹结构为“dir1 / dir2 / dir3 / 20210301-20210331”的 csv 文件?

shell中的##*,%%*问题