gpt4 book ai didi

c# - 如何在 AppDomain 下创建类的新实例

转载 作者:行者123 更新时间:2023-11-30 20:55:57 26 4
gpt4 key购买 nike

我正在尝试调用一个类以在单独的 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 的权限。

最佳答案

想通了。将我的代码更改为:

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);

关于c# - 如何在 AppDomain 下创建类的新实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888435/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com