我正在尝试调用一个类在一个单独的AppDomain下运行但是我得到一个例外,注意能够加载该类或其中一个依赖项。这是我正在做的一个例子。
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的类:
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的权限。
答案 0 :(得分:2)
想出来。将我的代码更改为:
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);