Смешивание C# и VB в одном проекте
можно ли смешивать файлы vb и c# в одном проекте для библиотеки классов? Есть ли какие-то настройки, которые делают это возможным?
Я попытался, и ни один из intellisense не работает правильно, хотя фоновый компилятор, похоже, справляется с этим достаточно хорошо (кроме того, что у меня тогда было 2 класса в одном пространстве имен с тем же именем, и он не жаловался).
мы пытаемся конвертировать из VB в C# но не перевел весь код. У меня есть новый код, который мне нужно написать, но на самом деле я не хотел делать новый проект только для него.
17 ответов:
нет, вы не можете. Сборки/проекта (каждый проект компилируется в 1 ассамблея обычно) должен быть один язык. Однако можно использовать несколько сборок, и каждая из них может быть закодирована на другом языке, поскольку все они компилируются в MSIL.
Он скомпилирован нормально и не жаловался, потому что a VB.NET проект будет только фактически компилировать .файлы vb и проект C# будут только фактически компилировать .cs файлы. Это было игнорирование других, поэтому вы не получили ошибки.
Edit: если добавить a .файл vb в проект C#, выберите файл на панели обозревателя решений, а затем посмотрите на панель свойств, вы заметите, что действие сборки-это "содержимое", а не "компиляция". Он обрабатывается как простой текстовый файл и даже не внедряется в скомпилированную сборку как двоичный ресурс.
Edit: С asp.net веб-сайты, на которые можно добавить пользовательский элемент управления c# vb.net сайт
ну, на самом деле я унаследовал проект несколько лет назад от коллеги, который решил смешать VB и C# webforms в рамках одного проекта. Это сработало, но далеко не весело поддерживать.
Я решил, что новый код должен быть классами C#, и чтобы заставить их работать, мне пришлось добавить подузел в компиляционную часть web.конфигурации
<codeSubDirectories> <add directoryName="VB"/> <add directoryName="CS"/> </codeSubDirectories>
весь код VB переходит в подпапку в App_Code под названием VB, а код C# - в подпапку CS. Это позволит произвести два .файл DLL файлы. Он работает, но код компилируется в том же порядке, что и в "codeSubDirectories", и поэтому интерфейсы i.e должны быть в папке VB, если они используются как в C#, так и в VB.
у меня есть как ссылка на VB, так и компилятор C# в
<system.codedom> <compilers>
проект в настоящее время обновляется до framework 3.5, и он все еще работает (но все еще не весело поддерживать..)
вы не можете смешивать vb и c# в одном проекте - если вы заметили в visual studio файлы проекта либо .vbproj или .csproj. Вы можете в решении-иметь 1 proj в vb и 1 в c#.
похоже, что в соответствии с этим вы можете потенциально использовать их обоих в веб-проекте в каталоге App_Code:
http://pietschsoft.com/post/2006/03/30/ASPNET-20-Use-VBNET-and-C-within-the-App_Code-folder.aspx
Это может быть возможно с некоторой пользовательской разработкой MSBuild. Предметы снабжения. целевые объекты заставляют проекты быть одноязычными , но это не препятствует ограничению времени выполнения или инструментария.
оба компилятора VB и CS могут выводить в модули - версия CLR .obj-файлы. Используя компоновщик сборок, вы можете взять модули из кода VB и CS и создать одну сборку.
Не то, чтобы это было тривиальным усилием, но это, вероятно будет работать.
Пошаговое Руководство: использование нескольких языков программирования в проекте веб-сайтаhttp://msdn.microsoft.com/en-us/library/ms366714.aspx
по умолчанию папка app_code не позволяет использовать несколько языков программирования. Однако,в проекте веб-сайта можно изменить структуру папок и параметры конфигурации для поддержки нескольких языков программирования, таких как Visual Basic и C#. Это позволяет ASP.NET чтобы создать несколько сборки, по одной для каждого языка. Дополнительные сведения см. В разделе папки общего кода в разделе ASP.NET веб-проекты. Разработчики обычно включают несколько языков программирования в веб-приложения для поддержки нескольких команд разработчиков, которые работают независимо и предпочитают разные языки программирования.
проверьте эту ссылку, в которой обсуждается проблема и показано, как объединить код VB и C# в одном проекте, в .NET 4.0
хотя Visual Studio не поддерживает это (вы можете сделать некоторые трюки и получить MSBuild для компиляции обоих, но не из Visual Studio),SharpDevelop делает. Вы можете иметь оба в одном решении (пока вы используете Visual Studio Professional и выше), поэтому самое простое решение, если вы хотите продолжать использовать Visual Studio, - это отделить ваш VB-код в другой проект и получить к нему доступ таким образом.
щелкните правой кнопкой мыши проект. Выберите Добавить Asp.Net Папка. В папке создайте две папки с именем VBCodeFiles и другие CSCodeFiles в web.Config добавить новый элемент в разделе компиляция
<compilation debug="true" targetFramework="4.5.1"> <codeSubDirectories> <add directoryName="VBCodeFiles"/> <add directoryName="CSCodeFiles"/> </codeSubDirectories> </compilation>
Теперь создайте страницу cshtml. Добавьте ссылку на VBCodeFiles.Пространство имен.MyClassName с помощью
@using DMH.VBCodeFiles.Utils.RCMHD @model MyClassname
где MyClassName-это объект класса, найденный в пространстве имен выше. теперь выпишите объект в razor с помощью файла cshtml.
<p>@Model.FirstName</p>
пожалуйста обратите внимание, что directoryName= "CSCodeFiles" является избыточным, если это проект C#, а directoryName= "VBCodeFiles" является избыточным, если это VB.Net проект.
Да это возможно.добавление c# и vb.net проекты в единое решение.
Шаг 1: Файл->Добавить->существующий проект
Шаг 2: проект - > добавить ссылку - > dll или exe проекта, который вы добавили раньше.
Шаг 3: In vb.net форма, в которой вы хотите использовать C# forms->import namespace of project.
Я не вижу, как вы можете скомпилировать проект с компилятором C# (или компилятором VB) и не иметь его на неправильном языке для компилятора.
держите код C# в отдельном проекте от вашего проекта VB. Вы можете включить эти проекты в одно и то же решение.
вам нужен один проект на каждый язык. Я вполне уверен, что видел инструмент, который объединил сборки, если вы найдете этот инструмент, вы должны быть хороши. Если вам нужно использовать оба языка в одном классе, вы должны быть в состоянии написать половину из них в say VB.net а затем написать остальное в C#, наследуя VB.net класс.
рискуя повторить любой другой ответ, Нет, вы не можете смешивать их в одном проекте.
Это в сторону, если вы только что закончили преобразование VB в C#, зачем вам писать новый код в VB?
для .net 2.0 это работает. Он компилирует оба в одном проекте, если вы создаете подкаталоги в коде приложения с соответствующим кодом языка. А еще, я ищу, должно ли это работать в 3.5 или нет.
почему бы просто не скомпилировать
VB
код в библиотеку(.dll
).Ссылаться из кода и все. Удалосьdlls
содержатMSIL
, к которомуc#
иvb
компилируются.
Как уже говорили другие, вы не можете поместить в один проект. Однако, если у вас есть только небольшой фрагмент кода C# или VB, который вы хотите включить в проект на другом языке, есть automatic инструменты преобразования. Они не идеальны, но они делают большинство вещей очень хорошо. Кроме того,SharpDevelop имеет встроенную утилиту преобразования.