お客様にプラグインを導入しようとしています。 MEF、インポート、エクスポートの属性を使用します。私はエクスポートを使用し、クライアントはそれをインポートします 私のアプリケーションは、DevExpress XtraGrid、XtraEditors、および他の多くのDevExpress DLL(スクリーンショット参照)、System.Data.Servicesを使用します。 これらの必要なすべてのDLLとその依存関係の多くを提供して、プラグインはまだDevExpress.ExpressAppを必要としているようです。 DevExpress.ExpressAppと他のすべての依存関係は絶対に必要ありません。なぜこのDLL DevExpress.ExpressAppがロードされますか?
クライアントはFileNotFound例外があると不平を言っていたので、自分でプラグインをインポートするテストプロジェクトを作成することにしました。これは私が得ているクライアントの理論をテストするためのテストコードです。
System.IO.FileNotFoundException: Could not load file or assembly 'DevExpress.ExpressApp.v14.2, Version=14.2.7.0,
Our Plugin
[Export(typeof (ISomething))]
public class MyClass : ISomething
{
}
TESTER
class Program
{
[ImportMany]
public IEnumerable<ISomething> Somethings { get; set; }
static void Main(string[] args)
{
var rp = new Program();
rp.Run();
}
public void Run()
{
Compose();
}
public void Compose()
{
try
{
AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;
AggregateCatalog aggregatecatalogue = new AggregateCatalog();
aggregatecatalogue.Catalogs.Add(new DirectoryCatalog(AppDomain.CurrentDomain.BaseDirectory));
CompositionContainer container = new CompositionContainer(aggregatecatalogue);
CompositionBatch batch = new CompositionBatch();
batch.AddPart(this);
container.Compose(batch);
}
catch (Exception ex)
{
throw ex;
}
}
static void FirstChanceHandler(object source, FirstChanceExceptionEventArgs e)
{
System.Text.StringBuilder msg = new System.Text.StringBuilder();
msg.AppendLine(e.Exception.GetType().FullName);
msg.AppendLine(e.Exception.Message);
System.Diagnostics.StackTrace st = new System.Diagnostics.StackTrace();
msg.AppendLine(st.ToString());
msg.AppendLine();
String desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
string logFilePath = String.Format("{0}\\{1}", desktopPath, "logfile.txt");
System.IO.File.AppendAllText(logFilePath, msg.ToString());
}
案の定、私は、出力ウィンドウに見て、それが実際にこのDLLとGACからExpressAppに関連する依存関係の一部をロードしていることが分かりました。 質問:ExpressAppが必要な場所と理由を把握するにはどうすればよいですか? 私は単純にDLLを提供するだけですが、必要なものが何であるかを手がかりにしているTONの依存関係について何度も繰り返します。
あなたの問題を解決するのに幸運でしょうか? – andrews