Miksowanie VB.Net oraz kod C# w ASP.Net Projekt strony www?

Pytanie dość starsze i często zadawane, mam podobne pytania tutaj, ale moje pytanie jest nieco bardziej szczegółowe.

Q1. Czy legalne jest mieszanie C # i VB.Net kod w ASP.Net strona internetowa? Zadziała czy nie? Jeśli to działa, jak można to zrobić? Każda próbka będzie dobra.

Q2. Jeśli są jakieś konsekwencje mieszania C # i VB.Net kod następnie proszę udostępnić te, jak również.

Mam projekt WWW, który jest zakodowany w VB.Net. pracuję nad jednym modułem projektu. oraz chcę kodować w C#. Nie mogę przekonwertować całego projektu do C# , ponieważ nie jestem jedynym, który pracuje nad projektem. Jednak moduł, który zamierzam zbudować, chcę mieć wbudowany w C#.

Słyszałem, że w przypadku projektów internetowych, jeśli część kodu w C# i część w VB.net następnie występują problemy z kompilacją projektu do biblioteki dll. To prawda? jeśli tak, to jakie jest rozwiązanie.

Ponadto, jeśli buduję bibliotekę dynamicznych linków w. Net to czy Mogę mieszać C# i Vb.Net kod?

Author: Ryan Gates, 2010-02-26

3 answers

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

Wiele języków programowania w folderze App_Code

Ponieważ kod źródłowy w folderze App_Code jest skompilowany w jeden zespół, wszystkie pliki w folderze App_Code muszą być w tym samym języku programowania. Na przykład folder App_Code nie może zawierać kodu źródłowego zarówno w Visual Basic, jak i w C#.

Możesz jednak skonfigurować swoją aplikację internetową tak, aby traktowała podfoldery folder App_Code jako oddzielne jednostki kompilowalne. Każdy folder może zawierać kod źródłowy w innym języku programowania. Konfiguracja jest określona przez utworzenie elementu codeSubDirectories w elemencie kompilacji sieci Web.plik konfiguracyjny i dodanie referencji do podfolderu. Poniższy przykład ilustruje jak skonfigurować podfoldery o nazwach VBCode i CSCode do kompilacji w osobne zespoły:

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

Odniesienia do podfolderów VBCode i CSCode nie potrzeba zamieszczenia jakichkolwiek informacji o tym, jaki język programowania jest zawarty w podfolderze. Podobnie jak w przypadku samego folderu App_Code, ASP.NET wnioskuje kompilator do użycia na podstawie plików w podfolderze.

 49
Author: Gabe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-26 06:17:03

Odpowiedź, która ma najwięcej głosów, działa tylko na projekty stron internetowych, a nie na projekty aplikacji internetowych. Myślę, że wielu programistów używa terminu" aplikacja internetowa "ogólnie ignorując fakt, że technicznie jest to inna rzecz w .NET. Microsoft mówi:" Domyślnie aplikacja internetowa jest kompilowana w oparciu o ustawienia językowe w pliku projektu. Wyjątki mogą być dokonywane, ale jest to stosunkowo trudne."Zakładam więc, że jedynym sposobem, aby to zrobić, byłoby posiadanie dwóch oddzielnych projektów w jedno rozwiązanie. (Ponownie, Projekt strony internetowej nie ma rozwiązania lub pliku projektu.) Nie jestem pewien wszystkich szczegółów.

 8
Author: user692918,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-04 15:10:49

Wydaje się, że możesz je mieszać w ramach tego samego projektu, wykonując fragment kodu, którego potrzebujesz jako kontrolki. Więc jeśli strona główna jest w C# i robisz część VB, którą chcesz jako kontrolę ascx, możesz drapować i upuszczać ją w swojej witrynie.

Nie zdawałem sobie sprawy, że można to zrobić, ale członek zespołu wymyślił to na kawałku pracy, którą robił.

 0
Author: Leroy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-02 15:30:33