5

Visual Studio 2010でターゲットフレームワークを使用してWebアプリケーションを開発しています-3.5dll(別のチームによって開発された)を使用していますが、次のコードでエラーが発生します:

    string strName = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;

System.Reflection.Assembly.GetEntryAssembly()がnullを返していることを確認し、それについて検索し、msdnで、GetEntryAssembly()がアンマネージコードから呼び出されたときにnullを返す可能性があることを確認しました。

Webアプリケーションから呼び出すと、nullが返され、Windowsアプリケーションから呼び出すと、正常に動作します。つまり、エントリアセンブリ名(実行が開始されたアセンブリ)を取得します。Webアプリケーションでnullを返すのはなぜですか?理解できません。また、Visual StudioのプロジェクトプロパティからWebプロジェクトの出力タイプをクラスライブラリに変更しようとしましたが、出力タイプのドロップダウンが無効になっており、プロジェクトの出力タイプを変更できません。この問題の解決策があれば教えてください。

前もって感謝します

アミット・シャハニ

4

1 に答える 1

3

ASP.Net ホスト プロセスは管理されていますか。答えはノーだ。したがって、GetEntryAssemblyWeb アプリの結果は null です。

解決策はすべて、サードパーティのアセンブリが何をしようとしているのか、およびそれが呼び出す理由によって異なりますGetEntryAssembly

アセンブリをホストする実行可能ファイルを作成し、それを別のプロセスで起動すると、呼び出しによって実行可能アセンブリが返されます。ただし、これは最善の方法ではない可能性があります。全体的に何を達成したいかによって異なります。

于 2013-02-14T10:23:26.653 に答える