Привет,
При попытке загрузить сборку в AppDomain получаю Exception: "Insufficient state to deserialize the object. More information is needed."
Проблема в следующем:
Есть куча DLL (созданных налету через ICodeCompiler->CompileAssemblyFromFile по описанию WebService).
Раньше я загружал их так:
String *sType = String::Format ( S"{0}.{1}", sDynamicNameSpace, sClassName );
Assembly *oAssembly = Assembly::LoadFrom ( sFileNameDll );
Type *tDynamic = oAssembly->GetType ( sType );
Object *oObject = Activator::CreateInstance ( tDynamic );
Object *oResult = tDynamic->InvokeMember ( .............
Сейчас потребовалось переодически эти DLL обновлять, для этого надо грузить их в Domain.
Сделал как в MSDN:
Byte SoapTest::LoadFile ( String *sFileName)[]
{
FileStream *oFileStream = new FileStream ( sFileName, FileMode::Open );
Byte arBuffer[] = new Byte[(int) oFileStream->Length];
oFileStream->Read ( arBuffer, 0, arBuffer->Length );
oFileStream->Close ( );
return arBuffer;
}
..
AppDomainSetup *oAppDomainSetup = new AppDomainSetup ( );
oAppDomainSetup->ApplicationName = sDynamicNameSpace;
oAppDomainSetup->ApplicationBase = sDllPath;
oAppDomainSetup->ShadowCopyFiles = S"true";
Evidence *oEvidence = new Evidence ( AppDomain::CurrentDomain->Evidence );
AppDomain *oAppDomain = AppDomain::CreateDomain ( sDynamicNameSpace, oEvidence, oAppDomainSetup );
oAppDomain->Load ( LoadFile ( sFileNameDll ) );
При этом получаю описанный выше — Exception. В чем может быть проблема ?
PS: CreateInstanceFromAndUnwrap работает, но непонятно как из полученного Proxy получить сам объект, т.к. Type заранее не известен (есть только TypaName)
Object *oObject = oAppDomain->CreateInstanceFromAndUnwrap ( sFileNameDll, sType );