Pergunta

Algo que eu não sou para limpar sobre, eu entendo que existem diferenças entre C # e VB.NET (principalmente no uso de ponteiros), mas porque se ambos têm um CLR comum, faz XNA (por exemplo) só trabalhar com C # e não VB.NET, ou será que as ins Adicionar a visual studio foram destinadas a C #, em vez de VB.Net, e realmente o extensões de linguagem de trabalho em ambos

Desculpe se é uma pergunta óbvia, pensei em perguntar

Foi útil?

Solução

A CLR foi portado para várias plataformas, dos quais nem todos são iguais. O CLR XBox 360, por exemplo, não tem Reflection.Emit ou mesmo todos os ops IL que o CLR cheia faz . Assim, um compilador diferente pode emitir códigos de IL que são legais na CLR completo, mas ilegal na Compact CLR.

A outra questão é a disponibilidade de bibliotecas de classes. O BCL completo inclui a Microsoft.VisualBasic namespace, que é referenciada automaticamente pelo compilador VB.NET. Este contém VB6 compatibilidade funções, o < a href = "http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.myservices.aspx" rel = "nofollow noreferrer"> características namespace My , bem como alguns funções compilador auxiliares , e é comumente referido como o VB. NET runtime.

Sempre que o CLR é portado, certas assembleias são portados - e outras não. Para o XBox, Microsoft.VisualBasic não foi portado. Isso significa que você não pode referenciar qualquer coisa, desde que namespace. Embora seja bastante fácil de não fazer referência a compatibilidade ou meus namespaces, os serviços do compilador pode ser inserido no IL compilado sem você chamá-los explicitamente.

Em VB.NET 8, você poderia passar um não documentado e sem suporte -novbruntimeref mudar para Vbc.exe para mantê-lo de referência Microsoft.VisualBasic.dll. Infelizmente, isso, às vezes, causar erros de compilador ímpares. Em VB.NET 9, tornou-se documentado e apoiado e renomeado para / vbruntime .

O 3º caso é suplementos e suporte Visual Studio. Isso é com os pacotes individuais, quanto a saber se eles suportam modelos, código gen, etc. para cada idioma. Eu acredito que algumas 3 partes lançaram modelos VB.NET para XNA, embora é não oficialmente suportado .

A linha inferior, eu acho, é que é uma mistura de preocupações técnicas (portas CLR, disponibilidade BCL, compilador IL saída) e suporte (testes, financiamento e suplementos para outros idiomas).

Outras dicas

É o conjunto de ferramentas que define o suporte ao idioma. XNA, por exemplo, simplesmente fez todo o seu trabalho com C # e enviados somente o suporte para ele. Você ainda pode escrever um aplicativo em VB.NET e manualmente compilá-lo a partir da linha de comando. Contanto que seu aplicativo não compilar para baixo para qualquer IL ilegal (opcodes que XNA não suporta) vai ainda correr. O principal problema é recursos -. Eles não têm a mão de obra para fazer o pleno desenvolvimento e teste de todas as línguas, assim que escolheu um

De todas as contas VB.NET e C # são 99,9999 equivalente quando se trata da CLR. Mas existem algumas pequenas diferenças que podem mordê-lo. Em addtion Lembro de ter lido em algum blog da Microsoft que existem algumas coisas que o CLR pode fazer que (ainda) programável por qualquer VB.NET ou C # não é e tem que ser feito por IL. Interessante mesmo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top