¿Puedes mezclar archivos vb y c # en el mismo proyecto para una biblioteca de clases? ¿Hay alguna configuración que lo haga posible?
Lo intenté y ninguno de los intellisense funciona del todo bien, aunque el compilador de fondo parece manejarlo lo suficientemente bien (aparte del hecho de que yo, entonces, tenía 2 clases en el mismo espacio de nombres con el mismo nombre y no se quejó).
Estamos tratando de convertir de VB a C # pero no hemos terminado de convertir todo el código. Tengo un código nuevo que necesito escribir, pero realmente no quería hacer un nuevo proyecto solo para eso.
Respuestas:
No puedes. Un ensamblado / proyecto (cada proyecto se compila en 1 ensamblaje generalmente) debe ser un idioma. Sin embargo, puede usar múltiples ensamblajes, y cada uno puede codificarse en un idioma diferente porque todos están compilados en MSIL.
Se compiló bien y no se quejó porque un proyecto VB.NET solo compilará realmente los archivos .vb y un proyecto C # solo compilará realmente los archivos .cs. Estaba ignorando a los otros, por lo tanto, no recibió errores.
Editar: si agrega un archivo .vb a un proyecto de C #, seleccione el archivo en el panel Explorador de soluciones y luego mire el panel Propiedades, notará que la Acción de compilación es 'Contenido', no 'Compilar'. Se trata como un simple archivo de texto y ni siquiera se incrusta en el ensamblado compilado como un recurso binario.
Editar: con los sitios web asp.net puede agregar el control de usuario web c # al sitio web vb.net
fuente
Bueno, en realidad heredé un proyecto hace unos años de un colega que había decidido mezclar formularios web VB y C # dentro del mismo proyecto. Eso funcionó pero está lejos de ser divertido de mantener.
Decidí que el nuevo código debería ser clases de C # y para que funcionen, tuve que agregar un subnodo a la parte de compilación de web.config
Todo el código VB entra en una subcarpeta en el App_Code llamada VB y el código C # en la subcarpeta CS. Esto producirá dos archivos .dll. Funciona, pero el código se compila en el mismo orden que aparece en "codeSubDirectories" y, por lo tanto, las interfaces deben estar en la carpeta VB si se usan tanto en C # como en VB.
Tengo una referencia a un compilador de VB y C # en
El proyecto se actualiza actualmente al framework 3.5 y aún funciona (pero aún no es divertido mantenerlo).
fuente
No puede mezclar vb y c # dentro del mismo proyecto; si observa en Visual Studio, los archivos del proyecto son .vbproj o .csproj. Puede dentro de una solución: tener 1 proyecto en vb y 1 en c #.
Parece que de acuerdo con esto, puede usarlos potencialmente en un proyecto web en el directorio App_Code:
http://pietschsoft.com/post/2006/03/30/ASPNET-20-Use-VBNET-and-C-within-the-App_Code-folder.aspx
fuente
Podría ser posible con algún desarrollo personalizado de MSBuild. Los .targets suministrados obligan a los proyectos a ser de un solo lenguaje, pero no hay restricciones de tiempo de ejecución o herramientas que lo impidan.
Tanto los compiladores VB como CS pueden enviar a módulos : la versión CLR de los archivos .obj. Usando el enlazador de ensamblaje, puede tomar los módulos del código VB y CS y producir un solo ensamblaje.
No es que esto sea un esfuerzo de triunfo, pero probablemente funcionaría.
fuente
Tutorial: Uso de múltiples lenguajes de programación en un proyecto de sitio web http://msdn.microsoft.com/en-us/library/ms366714.aspx
fuente
Aunque Visual Studio no admite esto (puede hacer algunos trucos y hacer que MSBuild compile ambos, pero no desde Visual Studio), SharpDevelop sí lo hace. Puede tener ambos en la misma solución (siempre que esté ejecutando Visual Studio Professional y superior), por lo que la solución más fácil si desea seguir usando Visual Studio es separar su código VB en un proyecto diferente y acceder a él de esa manera.
fuente
Haga clic derecho en el proyecto. Elija Agregar carpeta Asp.Net. En The Folder, cree dos carpetas, una llamada VBCodeFiles y Other CSCodeFiles In Web.Config agregue un nuevo elemento en la compilación
Ahora, cree una página cshtml. Agregue una referencia a VBCodeFiles.Namespace.MyClassName usando
Donde MyClassName es un objeto de clase que se encuentra en el espacio de nombres anterior. ahora escriba el objeto en la maquinilla de afeitar utilizando un archivo cshtml.
Tenga en cuenta que el nombre de directorio = "CSCodeFiles" es redundante si se trata de un proyecto de C # y el nombre de directorio = "VBCodeFiles" es redundante si se trata de un proyecto de VB.Net.
fuente
Sí, es posible agregar proyectos de C # y vb.net en una única solución.
Paso 1: Archivo-> Agregar-> Proyecto existente
Paso 2: Proyecto-> Agregar referencia-> dll o exe del proyecto que agregaste antes.
Paso 3: en el formulario vb.net donde quieres usar c # forms-> import namespace of project.
fuente
No veo cómo puede compilar un proyecto con el compilador de C # (o el compilador de VB) y no hacer que se resista al lenguaje incorrecto para el compilador.
Mantenga su código C # en un proyecto separado de su proyecto VB. Puede incluir estos proyectos en la misma solución.
fuente
Necesita un proyecto por idioma. Estoy bastante seguro de que vi una herramienta que fusionó ensamblajes, si encuentra esa herramienta, debería estar listo. Si necesita usar ambos idiomas en la misma clase, debería poder escribir la mitad en say VB.net y luego escribir el resto en C # heredando la clase VB.net.
fuente
A riesgo de repetir cualquier otra respuesta, no, no puede mezclarlas en el mismo proyecto.
Aparte de eso, si acaba de terminar de convertir VB a C #, ¿por qué escribiría un nuevo código en VB?
fuente
Para .net 2.0 esto funciona. Compila ambos en el mismo proyecto si crea subdirectorios del código de la aplicación con el código de idioma relacionado. Hasta el momento, estoy buscando si esto debería funcionar en 3.5 o no.
fuente
¿Por qué no compilas tu
VB
código en una biblioteca.dll
? Gestionadodlls
contienenMSIL
a los que se compilan ambosc#
yvb
.fuente
Como han dicho otros, no puedes poner ambos en un proyecto. Sin embargo, si solo tiene una pequeña porción de código C # o VB que desea incluir en un proyecto en el otro idioma, existen herramientas de conversión automática . No son perfectos, pero hacen la mayoría de las cosas bastante bien. Además, SharpDevelop tiene una utilidad de conversión integrada.
fuente
No, no en el mismo proyecto, pero puedes usarlos en la misma solución. aunque debe asegurarse de que su código sea compatible con CLS. Eso significa que no debe haber utilizado dicha funcionalidad / característica que no se entiende en otro idioma. Por ejemplo, VB no entiende ints sin firmar.
fuente
En nuestro escenario, es un solo proyecto VB.NET (aplicación de escritorio de Windows) en una sola solución. Sin embargo, queríamos aprovechar las características de C # como enteros con / sin signo y literales XML y características de cadena en VB.NET. Entonces, dependiendo de las características, en tiempo de ejecución construimos el archivo de código, lo compilamos utilizando el compilador Rosalyn (VB / CS) respectivo en DLL y lo cargamos dinámicamente en el ensamblaje actual. Por supuesto, tuvimos que trabajar en la desvinculación, descarga, recarga, nomenclatura, etc. de las DLL dinámicas y la administración de la memoria, en gran medida utilizamos el GUID dinámico para nombrar para evitar conflictos. Funciona bien donde el usuario de la aplicación puede conectarse a cualquier base de datos desde nuestra aplicación de escritorio, escribir consultas SQL, convertir la conexión a la conexión LINQ y también escribir consultas LINQ, lo que requiere una construcción dinámica del código fuente, compilar en DLL y adjuntarlo al ensamblaje actual.
fuente
Sí, puede agregar ambos archivos solo en el sitio web. Si el proyecto es una aplicación web, no permitirá diferentes tipos de archivos.
fuente