public void CreateDynamicDomain()
{
var assembly = Assembly.GetExecutingAssembly();
var codeBase = assembly.Location;
var codeBaseDic = Path.GetDirectoryName(codeBase);
var info = new AppDomainSetup()
{
ApplicationName = domainApplicationName,
pplicationBase = codeBaseDic,
DynamicBase = codeBaseDic,
ShadowCopyFiles = "true",
};
AppDomain newDomain = AppDomain.CreateDomain(newName, null, info);
assemblyLoader = (AssemblyLoader)dynamicDomain.CreateInstanceAndUnwrap(assembly.FullName, AssemblyLoader typeof(AssemblyLoader).FullName);
...
}
public class AssemblyLoader : MarshalByRefObject
{
public override object InitializeLifetimeService()
{
return null;
}
...
}
새도메인을 생성후 Assembly-CSharp.dll 을 CreateInstanceAndUnwrap이것을 이용해 새도메인을 구성했습니다.
이렇게 하니 Assembly-CSharp.dll 여기에 참조된 모드 dll 들이 로드가 되어지는데 저는 여기에 참조되어져 있는 특정한 dll하나를 다른 버젼의 dll파일로 로드하고 싶습니다.(다른버젼파일이란 같은 namespace를 가졌지만 내부로직이 약간 수정된dll들을 말합니다.)