사용자에게 직접 확장 성을 제공해야하는 응용 프로그램이 있습니다. 많은 데이터와 수학/수치 알고리즘을 사용하여 일종의 계산 엔진으로 생각할 수 있습니다. 나는 몇 가지 정적 필드 (데이터)와 메서드 (계산)를 제공하여 사용자가 유효한 C# 식을 작성하여 이중을 반환해야합니다.System.Addin을 사용하여 메모리에 어셈블리 생성
사용자가 텍스트 상자에 유효한 식을 입력하면 결과를 제공해야합니다. 현재 내가 수행하는 것은 http://blogs.msdn.com/b/abhinaba/archive/2006/02/09/528416.aspx의 단계에 따라 메모리에 생성 된 어셈블리의 정적 메서드에 식을 삽입하는 것입니다. 그런 다음 리플렉션을 사용하여 특정 메서드를 호출하고 결과를 반환합니다.
생성 된 어셈블리가 응용 프로그램의 수명주기 동안 누적된다는 사실을 제외하고는 정상적으로 작동합니다. 이 모든 것이 클라이언트 응용 프로그램이었을 때 좋았지 만 지금은 서버 기반 응용 프로그램으로 옮겨 가고 있으며 수시로 서비스를 다시 설정하고 싶지 않습니다.
어셈블리를 언로드하는 방법을 검색 할 때 System.Addin 네임 스페이스를 발견했습니다. 그것은 정확히 내가 원하는대로 수행합니다 : 어셈블리를 다른 AppDomain에로드하는 것입니다. 후자를 무시할 수 있습니다. 그것은 심지어 모든 반사를 캡슐화합니다.
유일한 문제는 AddInStore가 파일 경로를 예상하지만 모든 어셈블리가 실제로 사용 된 CompileParameters의 GenerateInMemory 속성을 설정하여 메모리에 생성된다는 것입니다. 내 어셈블리를 디스크에 쓰는 것이 절대적으로 필요한가요? 또는 런타임에 컴파일 된 어셈블리를 추가 기능으로 직접 사용할 수 있습니까?
안부, 카를로스