Я создал код C# с типом вывода как netmodule. Это используется в коде C++.Невозможно создать объект в другом appdomain при вызове C# с использованием C++
Я хочу создать объект, который уже загружен. Но в отдельном AppDomain. Но при этом я не могу загрузить сборку для создания объекта с помощью метода CreateInstanceAndUnwrap. При попытке сделать то же самое, используя автономный код C#, он отлично работает.
C++:
TestClass __gc *testObj;
testObj = AppDomainProcessor::getInstance()->newTestObj((LPWSTR)domName);
//testObj->otherOperation...
C#
namespace TestNS {
public class AppDomainProcessor {
...
public TestClass newTestObj(String domName) {
AppDomain appDomain = AppDomain.CreateDommain(domName);
TestClass testObj = (TestClass)appDomain.CreateInstanceAndUnwrap(typeof(TestClass).Assembly.FullName,typeof(TestClass).FullName);
//Could not load file or assembly 'MyManaged, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified
return testObj;
}
...
}
public class TestClass : MarshalByRefObject {
...
}
}
Я напечатал AssemblyName и нашел его в качестве имени DLL, который составляется из кода C++. При попытке использовать автономный C# это было имя exe.
Является ли это подходящим способом создания AppDomain при использовании C++ и C# вместе? Или я допустил ошибку при создании AppDomain. Пожалуйста помогите.
Вы получили сообщение об ошибке? Если да, скопируйте/вставьте его в свой вопрос. –
@RobertHarvey Я добавил ошибку в комментарии рядом с кодом. –
Это сообщение об ошибке кажется простой проблемой поиска файлов. –