Buena pregunta.
Visual Studio es un IDE.
Visual Studio Code es un editor de texto
vitaminado, ya que hay disponibles montones de extensiones que amplían la funcionalidad.
¿Pueden hacerse los mismos proyectos en uno y en otro?
Sí. Es posible.
¿Entonces cuál es la diferencia?
Tradicionalmente un editor de texto sólo permitía editar texto (sorprendente, ¿eh?), mientras que un IDE integraba un montón de herramientas de desarrollo: pruebas unitarias, conectividad con servicios externos, autocompletado, resaltado de sintaxis, integración con control de versiones...
Con el paso del tiempo y la aparición de entornos como Visual Studio Code, parte de esa funcionalidad ha pasado al "editor de texto", que se ha convertido en "editor de código" gracias a resaltado de sintaxis y al autocompletado simple, por ejemplo. Luego, gracias a plugins y extensines, Visual Studio Code integra cada vez más funcionalidad propia de un IDE (depuración, integración con análisis de código, etc).
De ese modo, la barrera entre uno y otro es cada vez más difusa.
¿Cuál se recomienda usar?
Mi consejo en este caso es justo el contrario que el de
@kakadeluxe me explico:
Primero, utiliza un editor simple. Notepad++ es genial, pero también sirve Visual Studio Code. Si estás con C#, mejor Visual Studio Code. Lo que importa aquí es que no automatice o integre demasiadas cosas. Si sigues mi consejo, en esta etapa debes centrarte en aprender a poner en marcha proyectos. Créalos (con
dotnet new
en consola), compílalos (con
dotnet build
), ejecútalos (
dotnet
) y publícalos (
dotnet publish
).
Segundo, pasa a utilizar un IDE. A este punto deberías progresar
cuando pudieras prescindir del IDE. ¿Por qué? Pues por conocer el stack en el que desarrollas y por entender qué está haciendo el IDE por ti, qué decisiones está tomando por ti y cómo podrías hacerlo tú si él no estuviera (o fallara, o se hiciera de pago y no quisieras comprarlo). Otro motivo también es facilitar la convivencia con otros desarrolladores: si lo que haces es totalmente dependiente del IDE, ¿qué pasa si quieres trabajar conmigo y no uso el mismo que tú?
Ejemplo: recientemente un compañero del foro (voy a ponerte de mal ejemplo
@Saito_25 , sorry
)
publicó un proyecto. Otros usuarios no fueron capaces de ejecutarlo porque el IDE había automatizado la compilación, ejecución y dependencias y el autor no era consciente de esos detalles. El ejemplo es una trivialidad, pero ilustra lo que quiero explicar.
Resumiendo: utiliza un editor de código al principio y automatiza el trabajo repetitivo con un IDE cuando lo hayas hecho tantas veces que ya sea repetitivo.
¿Qué ventajas tiene un IDE?
Depende del IDE
pero para mi se resume en lo siguiente:
-
Análisis de código y autocompletado muchísimo más inteligente. Esto al principio no parece muy relevante pero a medida que trabajas con más lenguajes, más librerías y más personas, la capacidad de que el entorno te sugiera qué clases, métodos, namespaces... Tienes disponibles es impagable.
-
Integración con herramientas de calidad, análisis estático (en .NET: Roslyn Analyzers) y seguridad. Esta integración puedes hacerla sin Visual Studio y de hecho lo recomiendo así como vimos arriba, pero es más potente con Visual Studio que en Visual Studio Code: mejor filtrado, resaltado de los problemas en el editor de código, etc.
-
Integración con control de versiones. Desde el propio IDE puedes gestionar Git, GitHub y, si lo utilizaras, Azure DevOps: te permite asociar commits a tareas, manejar las ramas, etc. Esta funcionalidad prácticamente es idéntica en Visual Studio Code y en Visual Studio.
Yo utilizo ambos. En Visual Studio todo está más acoplado y afinado, se nota que tiene solera. Visual Studio Code cada día implementa más funcionalidad y se nota que ha nacido como editor de texto y le han ido incluyendo cada vez más funcionalidad.