Вопрос

Что-то, что мне не совсем понятно, я понимаю, что есть различия между C # и VB.NET (в основном в использовании указателей), но почему, если оба имеют общий CLR, XNA (например) работает только с C # а не VB.NET, или же надстройки для Visual Studio были нацелены на C #, а не на VB.Net, и влияют на работу языковых расширений в обоих

Извините, если это очевидный вопрос, подумал, что я задам

Это было полезно?

Решение

CLR был портирован на различные платформы, не все из которых равны. Например, XBox 360 CLR, не имеет Reflection.Emit или даже все операции IL, которые выполняет полный CLR . Следовательно, другой компилятор может выдавать коды IL, которые допустимы для полной CLR, но недопустимы для Compact CLR.

Другой проблемой является доступность библиотек классов. Полный BCL включает в себя пространство имен Microsoft.VisualBasic , которое автоматически ссылается компилятором VB.NET. Он содержит функции совместимости с VB6 , < a href = "http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.myservices.aspx" rel = "nofollow noreferrer"> функции моего пространства имен , а также некоторые вспомогательные функции компилятора и обычно называются VB. NET время выполнения.

Каждый раз, когда CLR переносится, некоторые сборки переносятся, а другие - нет. Для XBox Microsoft.VisualBasic не был портирован. Это означает, что вы не можете ссылаться на что-либо из этого пространства имен. Хотя довольно просто не ссылаться на совместимость или пространства имен My, службы компилятора могут быть вставлены в скомпилированный IL без явного вызова их.

В VB.NET 8 вы можете передать недокументированный и неподдерживаемый -novbruntimeref переключитесь на vbc.exe, чтобы он не ссылался на Microsoft.VisualBasic.dll. К сожалению, это иногда вызывает странные ошибки компилятора. В VB.NET 9 он стал задокументирован, поддерживается и переименован в / vbruntime .

Третий случай - это надстройки и поддержка Visual Studio. Это зависит от отдельных пакетов, от того, поддерживают ли они шаблоны, генерацию кода и т. Д. Для каждого языка. Я полагаю, что некоторые сторонние производители выпустили шаблоны VB.NET для XNA, хотя это официально не поддерживается .

Суть, я думаю, в том, что это сочетание технических проблем (порты CLR, доступность BCL, выходные данные компилятора) и поддержки (тестирование, финансирование и надстройки для других языков).

Другие советы

Это набор инструментов, который определяет языковую поддержку. Например, XNA просто выполнила всю свою работу с C # и только предоставила поддержку для него. Вы все еще можете написать приложение в VB.NET и вручную скомпилировать его из командной строки. Пока ваше приложение не скомпилировано в какой-либо нелегальный IL (коды операций, которые не поддерживает XNA), оно все равно будет работать. Основной проблемой являются ресурсы - у них нет рабочей силы для полной разработки и тестирования всех языков, поэтому они выбрали один.

Из всех учетных записей VB.NET и C # эквивалентны 99,9999, когда речь идет о CLR. Но есть небольшие отличия, которые могут вас укусить. Кроме того, я помню, как читал в блоге Microsoft о том, что CLR может делать некоторые вещи, которые (пока) не программируются ни VB.NET, ни C # и должны выполняться IL. Действительно интересно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top