2

重複の可能性:
Web アプリケーションの GetEntryAssembly

を呼び出して実行アセンブリの場所を取得するクラス ライブラリがありますGetEntryAssembly()。ただし、ASP.NET Web アプリケーションでそのクラス ライブラリを使用すると、その関数は null を返します。

それが呼び出すクラス ライブラリから実行可能な ASP.NET アプリケーションの場所を取得することは可能ですか?

GetCallingAssembly()関数は Web アプリケーションから直接呼び出されないため、適切ではありません。

4

3 に答える 3

1

HttpRuntime.BinDirectoryをご覧ください- 「現在のアプリケーションの /bin ディレクトリへの物理パスを取得します。」

これにより、Web アプリケーションのすべての dll が保存されているディレクトリが返されます。

編集:

わかりました、あなたのフィードバックに基づいて、これはうまくいくかもしれません:

var webApplicationType = typeof(MyWebApplicationClass);
var assemblyPathAndName = new System.Uri(webApplicationType.Assembly.CodeBase)).LocalPath;

'MyWebApplicationClass' を、アセンブリ パスと名前が必要な Web プロジェクト内の任意のクラスの名前に置き換える必要があります。

于 2012-10-05T05:38:48.393 に答える
0

Server.MapPath で問題を解決できると思います。この回答を確認してください:- Server.MapPath("."), Server.MapPath("~"), Server.MapPath(@"\"), Server.MapPath("/ 」)。違いはなんですか?

また、アセンブリ パスを見つける必要がある場合は、string fullPath = System.Reflection.Assembly.GetAssembly(typeof(DaoTests)).Location; を使用できます。

詳細については、以下をご覧ください:- コードが含まれるアセンブリのパスを取得するにはどうすればよいですか?

于 2012-10-05T05:42:27.753 に答える
0

以下に示すように、反射を使用してみてください。

string path = new System.Uri(Assembly.GetExecutingAssembly().CodeBase)).LocalPath;

それが役立つことを願っています。

ありがとうミリンド

于 2012-10-05T05:47:46.840 に答える