2

クラスを呼び出して別の AppDomain で実行しようとしていますが、クラスまたはその依存関係の 1 つをロードできるという例外が発生しています。これが私がやっていることの例です。

AppDomain ad = AppDomain.CreateDomain("New domain");
IIdentity identity = new GenericIdentity("NewUser");
IPrincipal principal = new GenericPrincipal(identity, null);
ad.SetThreadPrincipal(principal);
TestClass remoteWorker = (TestClass)ad.CreateInstanceAndUnwrap(
                         binFolder+"\\TestProject.dll",
                         "TestClass");
remoteWorker.Run(data1,data2);

別の TestProject には、TestClass という名前のクラスが 1 つあります。

 public class TestClass : MarshalByRefObject
 {
      public void Run(string name, string path)
      {
           //Some stuff
      }
  }

すべてのパスをすべてチェックしましたが、それらは正しいです。エラーが発生しています:

Could not load file or assembly 'K:\\Installer\\Bin\\TestProject.dll' 
or one of its dependencies. The given assembly name or codebase was invalid. 
(Exception from HRESULT: 0x80131047)

パスを変更して、現在実行中のアセンブリに移動しようとしました。まだ何もありません。DLL は K:\Installer\Bin\TestProject.dll にあります。これを管理者の下で実行しているため、Dll へのアクセス許可があります。

4

1 に答える 1

4

理解した。私のコードをこれに変更しました:

AppDomainSetup domainSetup = new AppDomainSetup 
                             {PrivateBinPath = binFolder+"\\TestProject.dll"};
AppDomain ad = AppDomain.CreateDomain("New domain",null, domainSetup);

TestClass remoteWorker = (TestClass)ad.CreateInstanceFromAndUnwrap(
                          binFolder+"\\TestProject.dll",
                          typeof(TestClass ).FullName);
于 2013-07-26T20:12:31.423 に答える