Подтвердить что ты не робот

Смешивание кода VB.Net и С# в проекте ASP.Net Web Site?

Вопрос довольно старый и часто спрашиваемый, у меня есть похожие вопросы, но мой вопрос немного более конкретный.

Q1. Является ли законным смешивать код С# и VB.Net на веб-сайте ASP.Net? Будет ли это работать или нет? Если он работает, как это можно сделать? Любой образец будет хорошим.

Q2. Если есть какие-либо последствия смешивания кода С# и VB.Net, пожалуйста, разделите их также.

У меня есть веб-проект, который закодирован в VB.Net. Я работаю над одним модулем проекта. и я хочу код на С#. Я не могу преобразовать весь проект в С#, потому что я не единственный, кто работает над проектом. Тем не менее, модуль, который я собираюсь построить, хочу иметь встроенный С#.

Я слышал, что в случае веб-проектов, если мы закодируем часть на С# и часть в VB.net, тогда возникают проблемы с компиляцией проекта в dll. Это правда? если да, то каково решение.

Кроме того, если я создаю динамическую библиотеку ссылок в .Net, тогда я могу смешать код С# и Vb.Net?

4b9b3361

Ответ 1

Из http://msdn.microsoft.com/en-us/library/t990ks23.aspx:

Несколько языков программирования в папке App_Code

Поскольку исходный код в папке App_Code скомпилирован в одну сборку, все файлы в папке App_Code должны быть на одном языке программирования. Например, папка App_Code не может включать исходный код как в Visual Basic, так и в С#.

Однако вы можете настроить веб-приложение для обработки вложенных папок в папке App_Code как отдельных компилируемых единиц. Каждая папка может содержать исходный код на другом языке программирования. Конфигурация определяется созданием элемента codeSubDirectories в элементе компиляции файла Web.config и добавлением ссылки на подпапку. В следующем примере показано, как настроить подпапки с именем VBCode и CSCode для компиляции в отдельные сборки:

<compilation debug="false">
    <codeSubDirectories>
        <add directoryName="VBCode" />
        <add directoryName="CSCode" />
    </codeSubDirectories>
</compilation>

Ссылки на подпапки VBCode и CSCode не должны содержать никакой информации о том, какой язык программирования содержится во вложенной папке. Как и в самой папке App_Code, ASP.NET передает компилятор для использования на основе файлов в подпапке.

Ответ 2

Ответ здесь, который имеет наибольшее количество голосов, работает только для проектов веб-сайтов, а не для проекта веб-приложений. Я думаю, что многие разработчики используют термин "веб-приложение", в общем игнорируя тот факт, что технически это совсем другое в .NET. Microsoft говорит: "По умолчанию веб-приложение скомпилировано на основе языковых настроек в файле проекта. Исключения могут быть сделаны, но это относительно сложно". Таким образом, я предполагаю, что единственный способ сделать это - иметь два отдельных проекта в рамках одного решения. (Опять же, проект веб-сайта не имеет решения или файла проекта.) Я не уверен в деталях.

Ответ 3

Кажется, вы можете смешивать их в одном проекте, так как вы выполняете кусок кода, который вам нужен в качестве элемента управления. Поэтому, если основной сайт находится на С#, и вы хотите, чтобы часть VB была выбрана как элемент управления ascx, вы можете рисовать и удалять это на своем сайте.

Я не понимал, что вы можете это сделать, но член команды работал над тем, что он делал.