0

アセンブリ (xxx.dll) を新しい AppDomain にロードし、そこに UserControl を作成しようとすると、例外が発生します。

Could not load file or assembly 'xxx.resources' or one of its dependencies.

アセンブリを Main AppDomain にロードすると、正常に動作します。
なぜ例外が発生するのですか?

public void InitializeComponent() {
if (_contentLoaded) {
      return;
}
_contentLoaded = true;

//ここで例外が発生します

System.Uri resourceLocater = new System.Uri("/Company.AddInApp;component/controls/usercontrol.xaml", System.UriKind.Relative);

#line 1 "..\..\..\Controls\UserControl1.xaml" stem.Windows.Application.LoadComponent(this, resourceLocater);
#line default
#line hidden
}
4

1 に答える 1

0

私は間違いを見つけました:

var setup = new AppDomainSetup
{
        ApplicationBase = rootAddInsPath,
         ........
};
var appDomain = AppDomain.CreateDomain(...)

//I don't must do this here!!!
appDomain.AssemblyResolve += (sender, args) =>
{
     ....
}

var managerType = typeof(AddInLoadManager);
var manager =(AddInLoadManager)appDomain.CreateInstanceAndUnwrap(managerType.Assembly.FullName, managerType.FullName);

「AppDomain.AssemblyResolve」イベントの正しい場所は、「AddInLoadManager」クラス内です。

助けてくれてありがとう@YK1

于 2013-09-02T08:57:16.437 に答える