1
System.Reflection.Emit.AssemblyBuilder를 만들면이를 유지 (AssemblyBuilderAccess.Save 등으로 초기화)하거나 일시적으로 (AssemblyBuilderAccess.Run 등으로) 유지할 수 있습니다. 입력으로 가지고있는 어셈블리 빌더 용 ModuleBuilder를 생성 할 것입니다. 하지만 임시 어셈블리를 위해 지속 모듈을 만들 수 없으므로 모듈 작성 전에 어셈블리 상태를 확인해야합니다. 어떻게해야합니까?.NET 동적 어셈블리가 일시적인지 영구적인지 확인
public ModuleBuilder Handle(AssemblyBuilder assembly, string name)
{
if (assembly.IsPersisted) // IsPersisted is a kind of property I'm looking for
{
return assembly.DefineDynamicModule(name, name + ".dll");
}
else
{
return assembly.DefineDynamicModule(name);
}
}
난 반사를 사용하여 내부 필드에 액세스하여 조립 상태를 얻을 수있다, 그래서 이것은 내가 찾고 있어요 답변되지 않습니다 : 코드 조각입니다.
그냥 추측하지만 assembly.CodeBase는 무엇을 제공합니까? IIRC 그것은 디스크에 exe 또는 dll 파일의 경로입니다. 그것은 지속되지 않는 경우 단서를 줄 수 있습니다. –
어셈블리와 모듈을 개별적으로 만드는 이유는 무엇입니까? 거의 항상 각 어셈블리에 정확히 하나의 모듈이 있어야합니다. – svick
rim의 @imim : 흥미로운 아이디어이지만, 두 경우 모두 NotSupportedException이 발생합니다. – Stan