디 컴파일 된 어셈블리가 C# 또는 VB.net으로 작성되었는지 어떻게 알 수 있습니까?프로그래밍 언어가 사용 된 디 컴파일 된 어셈블리
답변
매니페스트/특성에 명시된 "나는 컴파일되었습니다 ..."정보를 알지 못합니다. 당신은 아마도 (구현하는 방법을 익명 형식처럼, 특히 일을하고, 모듈 수준 방법) 기능 감지 기능을 사용할 수 있지만 : 당신이 모르는
- 대부분의 경우는
- 컴파일러 문제가되지해야 비슷하게 보일 수도 있고, 틀린 대답을 줄 수도 있습니다.
- 모든 IL이 컴파일러에서 온 것은 아닙니다. 이 소스 언어로 원시 IL에서, 중 IL 조립, 또는
개인적으로 메타 프로그래밍 기법을 통해 할 수있다, 난 강력하게 소스 언어에 대한 종속성을 피 권합니다
나는 막연하게이 기억 VB 프로젝트에서는 자동으로 참조되는 유틸리티 어셈블리이지만 C# 프로젝트에서는 참조되지 않습니다. 나는 말하고있다 .net 1.1 시대 (Visual Studio 2003). 익스플로러 셸의 일부를 매우 쉽게 사용할 수있게했습니다. 나는보고 있었지만 찾지 못했습니다 (그것이 무엇인지 기억하면 편집 할 것입니다). 더 이상 Visual Studio에서 폐기되었거나 삭제되었을 수도 있지만 원래 VB에서 매우 강력한 표시기입니다 (C# 어셈블리가이를 참조 할 수도 있음).
편집 : 한스가 자신의 의견에서 언급 한대로 어셈블리는 Microsoft.VisualBasic입니다.
그 외에도 다른 버전의 C# vs VB 컴파일러에서 사용되는 일리노이 패턴을 찾아서 다른 공용 언어 구문을 컴파일 할 수 있습니다.
원하는 경우 컴파일 된 어셈블리의 소스 코드 근사값을 확인하십시오. 원래의 어셈블리가 난독 화되지 않으면 ILSpy, .Net Reflector 또는 dotPeek와 같은 .Net 디 컴파일러가 꽤 좋은 작업을 수행합니다.
사소한 문제 : 모든 어셈블리를 참조 할 수 있습니다. 그 어셈블리 (사실 VisualBasic이라는 이름으로 무언가를 참조 할 수있는 말투로 넘어갈 수 있다면 실제로 거기에 몇 가지 편리한 것들이 있습니다) –
Yeap, 나는 그것을 내 답변에 썼다. 사실 나는 VB를 사용한 적이 없지만 C# 프로그램에서 해당 어셈블리를 사용했습니다. –
어떤 맥락에서 중요할까요? –
@MarcGravell 새로운 .net 프로젝트 내가 작업 할 예정이지만 일부 어셈블리가 있지만 소스 코드는 가지고 있지 않습니다. –
왜 문제가 될지에 대한 질문에 대답하지 않습니다 ... –