나는 컴파일 할 수 있고, 인스턴스를 얻고, 프로그래밍 방식으로 모든 C# 유형의 메소드를 호출 할 수있다. StackOverflow (How can I evaluate a C# expression dynamically?)를 포함하여 많은 정보가 있습니다. 내 문제는 내가 웹 환경에있어/bin 디렉토리에 아무 것도 저장할 수 없다는 것이다. 위에서 언급 한 링크가 제안하는 것처럼 "메모리 내장"을 컴파일 할 수는 있지만 현재 사용자 정의 어셈블리를 현재 AppDomain에서 "언로드"할 수는 없습니다. 잠시 후에 그것은 거대한 기억 문제가 될 것입니다. 새 AppDomain을 열거 나 "메모리 내에서"새 어셈블리를 컴파일하거나, 일부 표현식을 평가하거나, 새 AppDomain 내부에서 해당 어셈블리의 일부 멤버에 액세스하여 완료되면 AppDomain을 안전하게 종료 할 수 있습니까? ? 링크, 제안 등을 미리 감사드립니다.어셈블리를 디스크에 저장하지 않고 C# 식을 컴파일하고 실행할 수 있습니까?
6
A
답변
2
닷넷 DynamicMethod을 살펴 보셨습니까? 이 유형은 Reflection.Emit을 사용하여 메모리 메소드에서 사용 가능한 가비지 콜렉션을 작성합니다. 이것은 정확히 당신이 찾고있는 것처럼 들립니다.
+0
전적으로 DynamicMethod 전체를 놓쳤습니다. 이미 읽는 중 ... b = Evaluate ("5 <6")와 같은 간단한 것을 평가하는 데 사용하는 방법을 여전히 볼 수 없습니다. 더보고, 나는 단지 뭔가를 놓친다. 고맙습니다! – Sasha
1
+0
저자는 내가 내 질문에 다음과 같이 말했습니다. 거대한 메모리 문제에 봉착했거나 자체 AppDomain에서 새 코드를 실행했습니다. 그러나 그 기사 자체는 재미있었습니다. 공유해 주셔서 감사합니다! – Sasha
관련 문제
- 1. 제한된 권한으로 C# 코드를 동적으로 컴파일하고 실행할 수 있습니까?
- 2. 동적 어셈블리를 디스크에 저장할 수 있습니까?
- 3. 어떻게하면 Xcode에서 Objective-C 프로젝트를 컴파일하고 실행할 수 있습니까?
- 4. 디스크 공간을 계산하면 문자열을 디스크에 저장하지 않고 사용합니다.
- 5. 디스크에 저장하지 않고 생성 된 XML 파일을 전송하십시오.
- 6. .NET에서 런타임시 새 코드를 컴파일하고 실행할 수 있습니까?
- 7. 다른 디렉토리에서 Java 클래스를 컴파일하고 실행할 수 있습니까?
- 8. 디스크에 이미지를 저장하지 않고 JasperReport를 HTML로 내보내는 방법?
- 9. Ruby - 디스크에 저장하지 않고 Mechanize :: File 응답으로 작업하기
- 10. s3에 저장된 이미지를 하드 디스크에 저장하지 않고 표시하는 방법은 무엇입니까?
- 11. 먼저 디스크에 저장하지 않고 ExcelWorkBook에서 byte []를 가져 오는 방법이 있습니까
- 12. 저장하지 않고 ActiveRecord 유효성 검사하기
- 13. 전체 파일을 저장하지 않고 XML 파일에 XElement를 추가합니다. C#
- 14. InnoDB는 어떤 값을 디스크에 저장하지 않습니까?
- 15. where 절을 사용하지 않고 사용자 지정 식을 만들 수 있습니까?
- 16. C++ 디스크에 저장하지 않고 문자열에 웹 페이지를 다운로드하는 방법 - URLDownloadToFile이 작동하지 않습니다.
- 17. "안전하지 않은"방법을 사용하는 어셈블리를 "안전한"컨텍스트에서 실행할 수 있습니까?
- 18. resourses 폴더의 파일을 디스크에 복사하지 않고 실행하십시오.
- 19. xml 파일을 저장하지 않고
- 20. C# 어셈블리를 프로젝트에 정적으로 컴파일하는 방법이 있습니까?
- 21. activerecord 연관을 저장하지 않고 강제로 업데이트 할 수 있습니까?
- 22. 원시 폴더의 사운드를 sdcard에 저장하지 않고 벨소리로 설정할 수 있습니까?
- 23. InAppSettingsKit을 설정 앱에 저장하지 않고
- 24. .net reactor를 사용하여 LinqToSql 어셈블리를 손상시키지 않고 난독화할 수 있습니까?
- 25. Mac OSX Snow Leopard의 ImageMagick. 컴파일하고 실행할 수있는 방법이 있습니까?
- 26. 이미지를 저장하지 않고 브라우저로 전송
- 27. 저장하지 않고 acts_as_state_machine 전환 방법 사용
- 28. xml 파일을 디스크에 저장하지 않고 openxml 파일에서 XML 문서를로드하는 방법은 무엇입니까?
- 29. 종료를 기다리지 않고 어떻게 외부 프로그램을 실행할 수 있습니까?
- 30. 서버에 저장하지 않고 파일을 다운로드하십시오.
알려진 형식의 임의의 메서드에만 액세스해야하는 경우 (더 복잡한 식의 컴파일이 아닌 경우) Type 클래스 및 Delegate.CreateDelegate의 GetMethod 메서드를 사용할 수 있습니다. 가능한 경우 새로운 AppDomain을 사용하지 않는 것이 좋습니다. 올바른 마샬링을 얻으려면 많은 새로운 복잡성이있을 수 있기 때문입니다. –
비행 중에 C# 표현식을 평가해야 할 필요가 있습니다. 같은 오래된 bool r = Eval ("3> 2"); Eval은 디스크를 건드리지 않고 bool을 평가하는 데 도움이되는 항목입니다. 그래서, 아니오, 반사만으로는 여기에서 도움이되지 않습니다. 고마워, 그래도 :) – Sasha