Общее время выполнения?
Вопрос
Что-то, что мне не совсем понятно, я понимаю, что есть различия между 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. Действительно интересно.