마이크로소프트입니다.VisualBasic 네임스페이스 "true .NET" 코드?
우리 개발팀은 새로운 프로젝트를 시작할 준비를 하고 있습니다.이 상점은 VB3 시절부터 "VB 상점"이었지만, 현재는 ".NET 상점"이라는 의견이 지배적이며, C#이 .NET 전용으로 만들어졌기 때문에 VB.NET은 C#만 쓰기로 했습니다.그 논쟁은 마이크로소프트의 여부에 대한 질문을 중심으로 전개됩니다.VisualBasic 네임스페이스는 VB6(및 이전 버전) 코드에 대한 이전 버전과의 호환성을 위한 경우에만 적합한 위치에 있습니다.추가적이고 더 흥미로운 질문은 코드가 Microsoft 아래에 있는지 여부입니다.VisualBasic 네임스페이스는 .NET 래퍼로 신중하게 패키징된 이전 VB 런타임인 경우의 .NET 코드이며, 실제로 COM 인터op 컨트롤이 됩니다(WinForms가 .NET이 아닌 Win32 윈도우 API를 래핑하는 방법과 유사하지만 노출만 합니다).사용을 위한 NET API).
이 문제를 더욱 혼란스럽게 만들기 위해 개발 팀에는 Microsoft Consulting Services 컨설턴트가 있으며 Microsoft는 Microsoft의 기반이 되는 VB 런타임을 포함한 Visual Basic을 더 이상 지원하지 않는다고 말합니다.VisualBasic 네임스페이스입니다.
제가 찾고 있는 것은 이 질문에 어떤 식으로든 확실히 답을 줄 수 있는 문서에 대한 링크입니다. - 가급적이면 흠잡을 데 없는 마이크로소프트 소스에 대한 링크입니다.저는 이미 구글에서 여러 차례 검색 순열을 시도했지만 이 질문의 진상에 더 가까이 가지 못했습니다.
편집: 분명히 저는 제 질문을 명확하게 하지 않았습니다.VB.NET이 진짜 .NET 코드인지 묻는 것이 아닙니다.저는 마이크로소프트가 "밑에" 있는 것이 무엇인지 판단하려고 합니다.VisualBasic 네임스페이스는 .NET 코드이거나 이전 VB6 런타임인 경우 .NET 코드로 신중하게 패키징되고 노출됩니다.이미 누군가가 네임스페이스의 9/10은 .NET의 다른 곳에서 코드를 래핑하는 것이라고 말했습니다. 나머지 1/10은 어떻습니까?
마이크로소프트.VisualBasic.dll <> Microsoft.Visual Basic.호환성.dll!!!
원하는 경우 마이크로소프트를 선택합니다.VisualBasic.dll!= Microsoft.Visual Basic.Compatibility.dll; )
마이크로소프트사.Visual Basic.호환성 네임스페이스는 VB6 업그레이드 마법사에서만 사용되며, 이후 버전에서 제거될 수 있으며 새 개발에는 절대 사용해서는 안 됩니다.
마이크로소프트사.VisualBasic 네임스페이스는 100% True입니다.네트, 완전히 지원되며 길이는 약 20cm입니다.그물이 주위에 있습니다.
몇 가지 관련 링크:
- 토론:마이크로소프트입니다.Visual Basic이 사용되지 않습니까?
- 기사:VB.NET을 통해 순수 .NET 개발 달성
- 이 MSDN VBFAQ 블로그 게시물에 대한 댓글 보기
Visual Basic 런타임은 Len, IsDate 및 CStr과 같은 글로벌 Visual Basic 함수 및 언어 기능에 대한 기본 구현을 제공합니다.그리고 새로운 Visual Basic Runtime은 이전 버전과 유사한 기능을 제공하지만 공통 언어 런타임에서 실행되는 완전히 관리되는 코드(Visual Basic .NET에서 개발됨)입니다.또한 Visual Basic Runtime은 .NET Framework의 일부이므로 응용 프로그램이 이동하거나 배포해야 하는 별도의 작업이 아닙니다.
그리고.
Visual Basic 6.0 호환성 라이브러리는 Visual Basic 런타임과 다릅니다.마이크로소프트사.Visual Basic.호환성 네임스페이스는 Visual Basic 6.0 코드를 Visual Basic .NET으로 업그레이드하는 도구에서 사용됩니다.Visual Basic의 .NET 구현에서 직접 지원되지 않는 Visual Basic 6 기능을 지원하기 위한 브리지입니다.Visual Basic Runtime과 달리 호환성 라이브러리는 모든 Visual Basic .NET 응용 프로그램에서 암시적으로 참조되지 않습니다.Visual Basic 6 프로젝트를 Visual Basic .NET으로 업그레이드하면 업그레이드 마법사가 마이크로소프트에 대한 참조를 추가합니다.Visual Basic.호환성.
호환성 클래스를 새 개발에 사용해서는 안 됩니다.마이크로소프트사.Visual Basic.호환성 네임스페이스는 Visual Basic .NET 응용 프로그램에 복잡성 계층을 추가하고 응용 프로그램의 일부를 레코딩하여 제거할 수 있는 최소한의 성능 비용을 제공합니다.또한 호환성 네임스페이스에는 COM 개체를 감싸는 많은 클래스가 포함되어 있는 경우가 많으며, 앞에서 설명한 것처럼 COM 개체에 의존하는 것은 순수하게 관리되는 구현만큼 최적이 아닙니다.
.NET Reflector를 사용하여 자세히 살펴봅니다.저는 이런 일을 자주 합니다. 마이크로소프트에서는 10번의 통화 중 9번을 합니다.VisualBasic 네임스페이스는 .NET 메서드에 대한 래퍼일 뿐입니다.
귀사의 컨설턴트는 귀사의 예산을 늘리기 위해 존재한다는 것을 과시하는 등 컨설턴트가 최선을 다하고 있습니다. MS는 더 이상 VB6를 지원하지 않지만 VS 2008에 VB .NET이 있다는 사실은 적어도 몇 년 동안은 VB .NET을 지원할 것임을 의미합니다.
개인적으로, 저는 마이크로소프트를 대합니다.Visual Basic은 다른 .NET 클래스의 전면과 같습니다.개인적인 프로젝트일 때 사용하고 BCL 수업을 이용하는 것보다 더 빠르고 쉽게 일을 마칠 수 있습니다.좋은 예는 마이크로소프트입니다.Visual Basic.줄들.문자열과 비교하면 오른쪽입니다.서브스트링.그러나 VB 네임스페이스의 많은 함수(예: Val)의 경우 프레임워크의 언어별 섹션에 더 강력하고 강력한 버전이 있습니다.업무용 코드를 작성할 때는 VB 라이브러리를 사용하지 않습니다.이를 통해 VB에 익숙하지 않은 C# 개발자들이 제 코드를 이해하는 데 어려움을 겪지 않도록 할 수 있습니다.
FCL의 일부 기능과 마찬가지로 Microsoft의 일부 기능도 마찬가지입니다.VisualBasic 네임스페이스 코드는 관리되는 코드로 작성되며, 일부는 호출을 관리되지 않는 코드로 래핑합니다.
vb6 런타임에 대한 의존성은 확실히 없으며 vb6 런타임을 보닛 아래에 조용히 설치하는 것도 아닙니다.
.NET Reflector를 로드하고 Microsoft에서 코드를 살펴봐야 합니다.VisualBasic 네임스페이스입니다.
C#에서 이 네임스페이스의 기능을 계속 사용하고 싶다면 계속 사용하면 됩니다.일부 코드는 더 이상 사용되지 않거나 더 이상 사용되지 않는 것으로 표시될 수 있지만 15년 후에도 Microsoft를 사용하여 동일한 앱을 실행할 수 있을 것으로 예상합니다.문제 없는 Visual Basic 기능.
업데이트됨:이제 .NET 리플렉터를 사용하여 소스 Microsoft를 확인/디버깅할 수 있습니다.VisualBasic 네임스페이스/Microsoft.Visual Basic.DLL 코드:
프레임워크 대량 다운로더를 가져와 여유롭게 코드를 읽어 보십시오.
http://www.codeplex.com/NetMassDownloader
저는 그것들이 모두 동일한 바이트 코드로 컴파일된다고 믿습니다.
제 참조 자료는 http://www.codinghorror.com/blog/archives/000128.html 입니다. http://www.codinghorror.com/blog/archives/000128.html
"Microsoft는 Visual Basic을 더 이상 지원하지 않습니다"라는 문구는 Visual Basic - VB 1 ~ 6, VBA 및 VB.NET의 여러 버전이 있기 때문에 몇 가지 의미를 가질 수 있습니다.
Microsoft는 더 이상 Visual Basic을 지원하지 않습니다.NET"이 사실이라면 큰 뉴스가 될 텐데, 그렇지 않습니다. (구글에서 확인했습니다.)VB6 지원이 종료되었지만 VB.넷은 여전히 살아있고 새로운 기능을 얻고 있습니다.
VB.Net은 일부 에 의존하는 MSIL 바이트 코드로 컴파일됩니다.사용하는 .net 프레임워크 클래스에 따라 달라지는 Net 라이브러리.그 도서관들 중 일부는 순수하게 쓰여지지 않았습니다.Net 또는 는 Windows API 주변의 래퍼일 뿐입니다..net에 내장되지 않은 기능(예: 스레드화)은 제어된 방식으로 노출되어야 하기 때문에 이러한 기능이 필요합니다.
C#도 마찬가지입니다.런타임은 실행되는 MSIL을 생성한 언어에 상관하지 않습니다.
Microsoft의 목표는 VB .NET과 C#을 구문이 다른 동일한 언어로 만드는 것입니다.이것은 사실입니다.그러나 VB9의 XML 리터럴에 대한 새로운 처리와 같은 변화는 항상 슬금슬금 다가옵니다.그가 요구하는 것은 그들이 OLD VB6와 이전의 모든 기능을 .NET 관리 코드로 재구현했다는 것입니다.제 생각엔 안 될 것 같아요.
저는 VB.NET으로 많은 것을 하지 않았지만(C#로 더 많이), 제가 알기로는 둘 다 동일한 바이트 코드로 컴파일되므로 .NET 런타임에 의해 동일하게 해석되며 기능적으로 동일하며 단지 구문적으로 다를 뿐입니다.
VB.NET은 제가 VB6를 마지막으로 사용했을 때와는 많이 다른 것 같았습니다.
OwenP가 말했듯이, 대부분의 전화는 마이크로소프트에 있습니다.VisualBasic 네임스페이스는 기존 .NET 기능에 대한 래퍼일 뿐입니다.그렇다면 왜 포장지를 만들까요?
VB.NET이 만들어졌을 때 마이크로소프트는 개발자들이 기존 VB6 프로젝트를 .NET으로 가져올 수 있기를 원했습니다.이는 VB6 함수와 메서드 호출이 VB.NET에서 일치하는 기능을 가진 경우에만 가능했습니다.그래서 그들은 마이크로소프트를 만들었습니다.VB6 기능을 .NET 기능에 매핑할 VisualBasic 네임스페이스입니다. (순수한 추측이지만 의미가 있습니다.)
.NET이 새로운 버전으로 발전함에 따라 Microsoft를 제거할 수 없었습니다.VisualBasic 네임스페이스 - 많은 코드가 여전히 사용 중입니다.그래서 그것은 여전히 거기에 있습니다.
그리고 VB도 쓸 수 있어요.Microsoft를 사용하지도 않은 넷 코드.VisualBasic 네임스페이스입니다. (Kev가 암시했듯이 Microsoft를 사용할 수 있습니다.)VisualBasic 네임스페이스(C#). VB.Net은 언어일 뿐이며 .NET 프레임워크는 동일하게 유지됩니다.
마이크로소프트가 실제로 COM 기능을 래핑하는 수많은 .NET 코드가 있습니다.저는 라이센싱 전문가는 아니지만, 언제든지 Reflector를 사용하여 네임스페이스를 직접 확인할 수 있습니다.
저는 VB.net 에 대해 마이크로소프트에서 제공하는 MSDN 문서를 시작하는 것이 좋을 것이라고 생각합니다.
http://msdn.microsoft.com/en-us/library/2x7h1hfk.aspx 그 링크는 언어에 대한 최신 비주얼 스튜디오 2008 글이 될 것입니다.
VB는 CLR의 C#과 동일한 컴파일을 수행하기 때문에 귀사의 컨설턴트가 어디에 있는지 알 수 없습니다.
VB.NET 코드는 이진으로 직접 컴파일되지 않습니다.C#처럼 IL(중간 언어)로 컴파일됩니다.
즉, VB.NET에서 빌드하는 것이 무엇이든 C# 프로젝트에서 문제 없이 재사용할 수 있습니다.
저는 당신이 요청한 내용과 직접적인 관련이 있는 링크를 찾을 수 없었습니다.주요 이유는 VB.NET이 적극적으로 개발된 새로운 프레임워크의 일부이기 때문입니다.그 언어를 쓸모없게 만들 계획은 없습니다.다른 컨설턴트가 말하는 것이 무엇이든.
제가 알기로는 VB.NET은 당신이 말한 대로 'true.net' 코드입니다.모든 언어가 IL 코드로 '컴파일'되는 다양한 언어(C#, VB.NET, F#, Cobol.NET 등)가 있습니다.이 IL 코드는 .NET VM에서 실제로 실행되고 시스템 코드로 해석되는 코드입니다.언어 간에 상호 작용하는 개체는 여전히 기본적으로 동일합니다.NET objetcs.
예를 들어, C#:
데이터 테이블 = 새 데이터 테이블();
VB.NET에 있는 것과 동일한 IL 코드로 컴파일합니다.
데이터 테이블로 딤트 = 새 데이터 테이블()
실제로 IL 코드를 직접 보는 .NET Reflector와 같은 디컴파일러 도구에서는 출력을 C# 또는 VB.NET으로 표시할 수 있습니다.
즉, VB.NET "myVbCode.dll"에 클래스 라이브러리 하나를 작성할 수 있으며 C# "myCSharpCode.dll"에 작성된 라이브러리와 직접 호환됩니다.사실 두 DLL에는 컴파일된 IL 코드만 포함됩니다.
이 모든 것에 대해 약간의 외부적인 예외가 있을 수 있지만, 근본적으로 그것이 작동하는 방식입니다.
질문에 대한 직접적인 대답은 VB.NET이 C#만큼 "진정한 .NET 코드"라는 것입니다.
물론 두 언어 모두에서 다른 언어로 직접 사용할 수 없는 구문 기능이 있습니다(예: VB.NET에는 C#에서 사용할 수 없는 XML 기능이 포함되어 있습니다). 하지만 적어도 내가 알기로는 VB.NET에서 할 수 있는 것은 없습니다.
VB 경험이 있다면 당연히 C#보다 VB.NET으로 전환하는 것이 더 쉬울 것입니다.
언급URL : https://stackoverflow.com/questions/226517/is-the-microsoft-visualbasic-namespace-true-net-code
'sourcecode' 카테고리의 다른 글
마스터에서 개발 지점으로 "git pull"하는 방법 (0) | 2023.05.18 |
---|---|
데이터베이스 테이블의 임의 레코드(T-SQL) (0) | 2023.05.18 |
UI 텍스트 필드 높이를 설정하는 방법은 무엇입니까? (0) | 2023.05.18 |
"git commit"과 "git push"의 차이점은 무엇입니까? (0) | 2023.05.18 |
WPF에서 컨트롤을 "클릭 스루"하려면 어떻게 해야 합니까? (0) | 2023.05.13 |