0

I'm searching my assembly (using System.Reflection) for classes that are inherited from a specific class (System.Web.UI.Page).

All these inherited classes have pages in my web.

How can I read .aspx file path too (relative to web root)?

I know I can read this path from .pdb file, however this file does not exists in live server.

Edit to avoid confusion, here is a sample of my code. doSomeProcess is not exact process. in fact it receives the class itself and analyzes it too. however it is not important for this code sample.

using System;
using System.IO;
using System.Reflection;

namespace ... {
    public class FixPaths: System.Web.UI.Page {

        void SearhcAssembly(){
            Assembly library = Assembly.GetExecutingAssembly();
            string FileName = Path.GetFileName(library.Location);
            foreach (Type type in library.GetTypes()) {
                if (FileName == type.Module.Name) {
                    if (type.BaseType != null && (type.BaseType.FullName == "System.Web.UI.Page")) {

                        string NameSpace = type.Namespace;
                        string ClassName = type.Name;

                        // -- This need to be changed --
                        string PageUrl = "/" + type.Namespace.ToLower().Replace(".", "/") + "/" + type.Name + ".aspx";
                        // -------------------------------------

                        doSomeProcess(NameSpace, ClassName, PageUrl);
                    }
                }
            }
        }
    }
}
4

2 回答 2

2

Bob,不幸的是,这不是一个合适的解决方案。然而,就我们在评论中讨论的情况而言,它可能是我们能得到的最接近它的地方。

  1. 通过反射,获取程序集中从Page继承的所有类型。
  2. 使用递归 I/O 搜索,查找根文件夹下的所有 *.aspx 文件并将它们保存在一个列表中(这样您就可以检索它们的完整路径等等
  3. 将您找到的类型与您获取的文件进行比较。这样,您可以报告不在正确文件中的页面(类)和不在正确位置的 ASPX。

我找不到类型与其源文件之间的关系。此外,我们谈论的是页面(在程序集中声明)和 ASPX 文件,它们根本不相关。

如果有人有更好的解决方案,我也想看看它。

问候

于 2012-07-10T13:57:08.043 回答
0

页面从根的相对路径在AppRelativeTemplateSourceDirectory属性中(在页面上)。这就是你所追求的吗?

于 2012-07-10T03:19:58.477 回答