Смешивание VB.net кодирует с кодом c#

У меня есть решение vb.net, и я хочу добавить там новые dll файлы, записанные в c# и использовать функциональность от dll в коде, написанном в vb.net.

Я сделал несколько использования из него, и это кажется работой хорошо, но является этим умная вещь сделать питание код vb.net с c# как, я хочу сделать.

И что опасности того, что я делаю?

Благодарите много справка.

5
задан Wim Hollebrandse 22 January 2010 в 14:18
поделиться

6 ответов

Ваша DLL не является C # DLL, это .NET DLL. После компиляции все, что у вас есть, это IL - не имеет значения, на каком языке это произошло. Не должно быть проблем, если вы не сталкиваетесь с одним из нечетных случаев, когда интерфейс DLL включает в себя то, что не поддерживается Visual Basic. Но это было бы очень большим корпусом.

Спецификация общих языков или CLS определяет подмножество функций .NET, которые должны поддерживаться языком .NET, и если ваша DLL является совместимым CLS, то вы можете использовать его без проблем. Если вы запутались в разнице между CLS, CTS, CLR ETC, то я нашел охват этого в этой книги Очень полезно, хотя это в первую очередь книга C #.

11
ответ дан 18 December 2019 в 07:54
поделиться

Отметьте свой код в качестве совместимого CLS, а затем C # Compiler предупреждает вас, если вы сделаете все, что может вызвать проблемы, когда ваша DLL вызывается из другого языка .NET.

Некоторые цитаты от MSDN

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

Вы можете пометить сборки, модули, Типы и члены как CLS-совместимые с использованием CLSCompliantattribute .

Некоторые CLS-совместимые языковые компиляторы, такие как компилятор C # , позволит вам Укажите, что вы намереваете свой код быть совместимым. Эти компиляторы могут Проверьте соблюдение CLS и позвольте вам Знайте, когда ваш код использует функциональность Это не поддерживается CLS.

Кроме того, ваша организация теперь понадобится навыки C #, а также навыки VB.NET. Вы, вероятно, должны убедить себя, что это нормально, а затем убедить ключевых лиц, принимающих решения.

5
ответ дан 18 December 2019 в 07:54
поделиться

Вы можете смешивать код VB и C # в том же проекте - я работал над несколькими проектами, которые их смешали и не имеют проблем.

Вы, языковые микс, кажется, гораздо больше изолированы - один раствор с несколькими C # DLL и проектом VB (S).

Я не вижу много вопросов с этим.

3
ответ дан 18 December 2019 в 07:54
поделиться

Одним из решений здесь :

Однако можно использовать Различные языки в одном проект. Вам может потребоваться написать команду Линейный файл сборки для создания проекта. В .NET Framework SDK, есть один Образец на нем. Вы можете получить доступ к этому в C: \ Файлы программы \ Microsoft Visual Студия .Net \ frameworksdk \ образцы \ technologies \ crossdevlan Гуй

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

Но вы можете использовать код VB.NET, так и C # в приложении ASP.NET.

Вам необходимо создать две папки (EX. VBFOLTER и CSFAFTER) в папке App_Code и написать этот код в Web.config:

<system.web>    
<compilation>    
<CODESUBDIRECTORIES>    
<ADD directoryName="vbFolder" />    
<ADD directoryName="csFolder" />    
</CODESUBDIRECTORIES>    
</compilation>    
</system.web>  

Хорошее объяснение здесь .

1
ответ дан 18 December 2019 в 07:54
поделиться

Я думаю, что самая большая опасность - иметь разработчик, чтобы узнать оба языка; Пока C # и VB.net похожи, потому что они связаны с .NET Framework, они имеют некоторые особенности.

Вы найдете много хороших программистов C # и много хороших программистов VB.NET, но может быть немного сложнее найти хороший программист для и языков

также, посмотрите в эту статью : ретроспектива менеджера на решении C # против VB.NET , поскольку он говорит о других предметах, чтобы помнить, как предпочтения разработчика, языковые функции и набор.

0
ответ дан 18 December 2019 в 07:54
поделиться

Оба VB.Net MSIL (промежуточный язык Microsoft) не нативный код, и это для завершения полной компиляции на родной (машину) на конечной пользовательской машине через существующую кадру. x Ваша программа должна работать нормально для операционной системы X, и если она была операционной системой y, ваша заявка должна работать нормально с OS y, и это решение, которое технология .NET поставляется, чтобы позволить .Net приложениями операционной системы в зависимости от .NE.

Также есть сервис COM Marshaler для поддержки старого компонента (элементы управления) для работы с приложениями .NET, поэтому, например, вы можете вызвать элемент управления VB6 (* .ocx) в приложении C # Windows.

И это большая интеграция между технологиями и методами Microsoft.

И не нужно иметь разработчику хорошо в обоих vb.net, так и c #, но любой способ, если вам нужно один, я здесь :)

Но вопрос в том, почему я в обоих?

это только потому, что Я доставляю обучение, поэтому я подумал, что расширяет свои способности, и я был удивлен, что они оба очень близко, кроме синтаксиса.

0
ответ дан 18 December 2019 в 07:54
поделиться