0

System.Reflection特定のクラス()から継承されたクラスを(を使用して)アセンブリで検索していSystem.Web.UI.Pageます。

これらの継承されたクラスはすべて、私のWebにページがあります。

.aspx(Webルートに対して)ファイルパスも読み取るにはどうすればよいですか?

このパスをファイルから読み取ることができることはわかってい.pdbますが、このファイルはライブサーバーに存在しません。

混乱を避けるために編集 してください。これが私のコードのサンプルです。doSomeProcessは正確なプロセスではありません。実際、クラス自体を受け取り、それも分析します。ただし、このコードサンプルでは重要ではありません。

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

ボブ、残念ながらこれは適切な解決策ではありません。ただし、コメントで説明した限りでは、最も近い可能性があります。

  1. リフレクションにより、Pageから継承するアセンブリのすべてのタイプを取得します。
  2. 再帰的I/O検索を使用して、ルートフォルダーの下にあるすべての* .aspxファイルを検索し、それらをリストに保持します(これにより、フルパスなどを取得できます。
  3. 見つけたタイプを、フェッチしたファイルと比較します。このようにして、適切なファイルにないページ(クラス)と適切な場所にないASPXをレポートできます。

タイプとそのソースファイルの関係が見つかりませんでした。さらに、ページ(アセンブリで宣言されている)とASPXファイルについて話しますが、これらはまったく関連していません。

誰かがより良い解決策を持っているなら、私もそれを見てみたいと思います。

よろしく

于 2012-07-10T13:57:08.043 に答える
0

ルートからのページの相対パスは、AppRelativeTemplateSourceDirectoryプロパティ(ページ上)にあります。それはあなたが求めているものですか?

于 2012-07-10T03:19:58.477 に答える