2010-11-20 15 views
1

私は、アセンブリを読み込んで別のappdomainで実行する必要があるデスクトップアプリケーションで作業しています。私のように書かれているアセンブリのロードのためにタイプまたは名前空間名が見つかりませんでした

public static DataTable GetAllPluginNames(string[] args) 
{ 
     SqlConnection sConnection = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); 

     //ToDo: create a table of one column - only name of the plugin and return that. 
     //ToDo: refer the code from MFAssemblyValidator from MFPluggerService. 

     DataTable dt = null; 
     List<string> assemblyNames = new List<string>(); 
     Assembly[] oAssemblies = new Assembly[args.Length]; 

     for (int assemblyCount = 0; assemblyCount < args.Length; assemblyCount++) 
     { 
      oAssemblies[assemblyCount] = Assembly.LoadFile(args[assemblyCount]); 

      try 
      { 
       foreach (Type oType in oAssemblies[assemblyCount].GetTypes()) 
       { 
        // Check whether class is inheriting from IMFDBAnalyserPlugin. 
        if (oType.GetInterface("IMFDBAnalyserPlugin") == typeof(IMFDBAnalyserPlugin)) 
        { 
         assemblyNames.Add(args[assemblyCount].Substring(args[assemblyCount].LastIndexOf("\\") + 1)); 
        } 
       } 
       return dt; 
      } 
      catch (Exception ex) 
      { 
       lblError.Text = "ERROR"; 
      } 


     // Passing data one application domain to another. 
     AppDomain.CurrentDomain.SetData("AssemblyNames", assemblyNames.ToArray()); 
     } 
} 

しかしtypeof(IMFDBAnalyserPlugin))は、名前空間のエラーを示しています。

IMFDBAnalyserPluginはとして私のプログラムのインターフェイスクラスです:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace MFDBAnalyser 
{ 
    public interface IMFDBAnalyserPlugin 
    { 
     void ExecutePlugin(); 
    } 
} 

何が問題かもしれません? 誰も私を助けることができます!

答えて

1

を試すには、インタフェースIMFDBAnalyserPluginと同じnamespaceの下に位置しGetAllPluginNames方法ですか?

ない場合は、GetAllPluginNamesメソッドが含まれているコードファイルの先頭にusing directiveを追加したり、完全に

if (oType.GetInterface("MFDBAnalyser.IMFDBAnalyserPlugin") == typeof(MFDBAnalyser.IMFDBAnalyserPlugin)) 
+0

それはあまりにもうまくいきません.... – Srivastava

+0

あなたはコードで使用するたびに 'IMFDBAnalyserPlugin' *の完全修飾リファレンスを提供する必要があります。ただし、' using'ディレクティブをコードファイルの先頭私は完全な構文で自分の投稿を更新しました。 –

4

すなわち、クイックソリューションをその名前空間とのインタフェースの参照を修飾する必要があるのいずれかのI: プロジェクトのプロパティで、Dotnetフレームワークを2.0,3.0または3.5から4に変更し、コンパイルして実行します。

クイックソリューションII: .csプロパティを確認します。コンテンツからコンパイルに変更します。

詳細はhereです。

1

これはしばらく私を困惑させました。参照とコードを追加しました。プロジェクトをコンパイルしようとしたとき、解説がまだ解読されていても、その参照は分かりませんでした。最後に

は、私はこれがISSE固定「の.NET Framework 4クライアントプロファイル」から「.NET Frameworkの4' にプロジェクトのプロパティと変更thebに

「をターゲットフレームワーク」フィールドをナビゲート。

関連する問題