Autor
|
Tema: Compilar solucion visual studio desde consola C# (Leído 5,307 veces)
|
XKC
Desconectado
Mensajes: 128
|
Hola buenas a todos y gracias por vuestra atención. La cosa es que quiero compilar una solcion de visual studio desde consola, porque lo que quiero hacer es un .bat o otro ejecutable en C# que modifique unos archivos de recursos de una solucion y personalizarla para el usuario, es decir, tengo un programa X que tiene varios archivos de recursos. Lo que quiero es que cada usuario lo pueda personalizar y para ello necesito que edite el archivo txt buscando en su ruta [proyecto/Resources...] y lo edite, y despues compile la solucion. He encontrado como compilar un archivo .cs, pero yo lo que necesito es compilar todo el proyecto. Si a alguien se le ocurre una solucion mejor a este problema le estaria muy agradecido. Muchas gracias a todos, Saludos.
|
|
|
En línea
|
Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse. Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Hola. Las preguntas sobre C# van en el subforo de programación .NET. ¿Cuando lo van a respetar?, publiquen donde toca... He encontrado como compilar un archivo .cs, pero yo lo que necesito es compilar todo el proyecto. Para compilar una solución de Visual Studio usanbo Batch/CMD, puedes utilizar el executable MSBuild.exe, el cual lo puedes encontrar ubicado en el mismo directorio que el compilador de C# (csc.exe) y el de VB.NET (vbc.exe). Pero es preferible que utilices el archivo devenv.com para compilar la solución, o en su defecto también puedes utilizar la versión gráfica (es decir, la IDE) devenv.exe por linea de comandos. Aquí tienes la referencia oficial de Microsoft con ejemplos de uso:
Si lo que quieres es compilar una solución de Visual Studio desde una aplicación de C# en modo consola, entonces puedes utilizar el espacio de nombres Microsoft.Build: Aquí tienes un ejemplo aleatorio: https://bogdangavril.wordpress.com/2012/03/15/take-control-of-msbuild-using-msbuild-api/Saludos!
|
|
« Última modificación: 10 Febrero 2017, 17:47 pm por Eleкtro »
|
En línea
|
|
|
|
XKC
Desconectado
Mensajes: 128
|
Muchas gracias por responder, y lo siento por publicar donde no debia. No lo hice con mala intencion, pense que era ese el sitio. No volvera a ocurrir. Saludos.
|
|
|
En línea
|
Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse. Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
Muchas gracias por responder, y lo siento por publicar donde no debia. No lo hice con mala intencion, pense que era ese el sitio. No volvera a ocurrir.
No te preocupes, no se banea a nadie por equivocarse involuntariamente . Solo que me da rabia que nunca se publique en el subforo correspondiente. Espero que la información de MSDN te haya servido de ayuda. Si sigues teniendo dudas al respecto, pregunta. Saludos!
|
|
|
En línea
|
|
|
|
XKC
Desconectado
Mensajes: 128
|
No te preocupes, no se banea a nadie por equivocarse involuntariamente . Solo que me da rabia que nunca se publique en el subforo correspondiente. Comprendo perfectamente, si todos publicamos donde nos da la gana al final esto es un gallinero y loas admin no dais a basto. Espero que la información de MSDN te haya servido de ayuda. Si sigues teniendo dudas al respecto, pregunta.
Si, muchisimas gracias, creo que voy a usar la herramienta DevEnv.com para recompilarlo. Porque es la unica forma de hacer eso, no? ¿No se puede modificar un recurso cuando ya ha sido compilado en un exe? Muchas gracias. Saludos.
|
|
|
En línea
|
Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse. Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.866
|
creo que voy a usar la herramienta DevEnv.com para recompilarlo. Porque es la unica forma de hacer eso, no?
Te mencioné tres opciones distintas, MSBuild.exe, devenv.com/devenv.exe, y la forma programática desde C# mediante los miembros del namespace Microsoft.Build. Escoje la metodología que prefieras, todas se basan en la API de MSBuild, pero lo ideal en mi opinión sería compilar la solución usando devenv.com puesto que me supone mayor confianza compilar usando la IDE de Visual Studio, y la lógica de Visual Studio se encargaría de automatizar la asignación de ciertos parámetros de compilación de MSBuild (evitando la posibilidad del fallo humano por tu parte).
¿No se puede modificar un recurso cuando ya ha sido compilado en un exe? Sí, si que se puede. Usando C# puedes utilizar los miembros del namespace System.Resources para administrar (crear, "editar", añadir o eliminar) recursos contenidos en un archivo de recursos de .NET (archivo.resx), pero es algo tedioso (no complejo, solo tedioso) y en tu caso pides hacerlo sobre un executable ya compilado por lo que resultaría bastante más tedioso todavía, puesto que habría que identificarlo, extraerlo, editarlo, y "reinsertarlo". Quizas haciendo uso de Reflection se pueda simplificar la mayor parte de la tarea, no estoy muy seguro... pues nunca he intentado hacer lo que necesitas (me refiero a tratar de editar un archivo de recursos de .NET de una aplicación externa de forma programática), pero una manera sencillita tal vez sería desensamblando el executable con ILDASM, editar el archivo de recursos, y reensamblarlo todo de nuevo. Aquí tienes un ejemplo de ello: https://web.archive.org/web/20150524075952/https://fortheloveofcode.wordpress.com/2007/09/24/change-resources-inside-assembly/ -el paso nº2 quizás puedas reemplazarlo por el uso del namespace System.Resources. Por último y por si te sirve de algo aquí tienes un ejemplo de una class que desarrollé para administrador recursos .NET sacada de mi API de pago ElektroKit: http://pastebin.com/L6n158ua -esto es solo para que puedas hacerte una idea de como usar los miembros de System.Resources para editar recursos, el código no es funcional puesto que depende de otros miembros de la librería (es un código demasiado extenso como para mostrarlo aquí y ahora) pero bueno. si te quedas con dudas en Google siempre puedes buscar solución a como añadir/eliminar/reemplazar/etc un recurso con C#. ¡Saludos!
|
|
« Última modificación: 11 Febrero 2017, 01:07 am por Eleкtro »
|
En línea
|
|
|
|
XKC
Desconectado
Mensajes: 128
|
Te mencioné tres opciones distintas, MSBuild.exe, devenv.com/devenv.exe, y la forma programática desde C# mediante los miembros del namespace Microsoft.Build. Escoje la metodología que prefieras, todas se basan en la API de MSBuild, pero lo ideal en mi opinión sería compilar la solución usando devenv.com puesto que me supone mayor confianza compilar usando la IDE de Visual Studio, y la lógica de Visual Studio se encargaría de automatizar la asignación de ciertos parámetros de compilación de MSBuild (evitando la posibilidad del fallo humano por tu parte).
Sí, si que se puede. Usando C# puedes utilizar los miembros del namespace System.Resources para administrar (crear, "editar", añadir o eliminar) recursos contenidos en un archivo de recursos de .NET (archivo.resx), pero es algo tedioso (no complejo, solo tedioso) y en tu caso pides hacerlo sobre un executable ya compilado por lo que resultaría bastante más tedioso todavía, puesto que habría que identificarlo, extraerlo, editarlo, y "reinsertarlo". Quizas haciendo uso de Reflection se pueda simplificar la mayor parte de la tarea, no estoy muy seguro... pues nunca he intentado hacer lo que necesitas (me refiero a tratar de editar un archivo de recursos de .NET de una aplicación externa de forma programática), pero una manera sencillita tal vez sería desensamblando el executable con ILDASM, editar el archivo de recursos, y reensamblarlo todo de nuevo. Aquí tienes un ejemplo de ello: https://web.archive.org/web/20150524075952/https://fortheloveofcode.wordpress.com/2007/09/24/change-resources-inside-assembly/ -el paso nº2 quizás puedas reemplazarlo por el uso del namespace System.Resources. Por último y por si te sirve de algo aquí tienes un ejemplo de una class que desarrollé para administrador recursos .NET sacada de mi API de pago ElektroKit: http://pastebin.com/L6n158ua -esto es solo para que puedas hacerte una idea de como usar los miembros de System.Resources para editar recursos, el código no es funcional puesto que depende de otros miembros de la librería (es un código demasiado extenso como para mostrarlo aquí y ahora) pero bueno. si te quedas con dudas en Google siempre puedes buscar solución a como añadir/eliminar/reemplazar/etc un recurso con C#. ¡Saludos! Muchas gracias, voy a probar los dos metodos a ver que tal. Saludos.
|
|
|
En línea
|
Para poder atacar y vencer con seguridad, ataca donde ellos no puedan defenderse. Para defenderte y resistir firme, defiéndete en donde ellos no atacarán.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
compilar directo desde consola(solucionado)
Programación C/C++
|
flony
|
0
|
2,309
|
28 Noviembre 2010, 23:34 pm
por flony
|
|
|
¿Cómo compilar un *.cpp escrito con el compilador DEV-c++ en Visual Studio
Programación C/C++
|
feespcas
|
2
|
2,738
|
19 Agosto 2015, 10:47 am
por feespcas
|
|
|
MOVIDO: Compilar solucion visual studio desde consola C#
Programación General
|
Eleкtro
|
0
|
1,763
|
10 Febrero 2017, 17:47 pm
por Eleкtro
|
|
|
Conseguir compilar antiguos proyectos en visual Studio
Programación C/C++
|
str0nghack
|
6
|
3,121
|
16 Junio 2018, 18:18 pm
por str0nghack
|
|
|
Como puedo compilar un archivo en Visual Studio a .exe
.NET (C#, VB.NET, ASP)
|
Trollwer
|
2
|
3,059
|
16 Enero 2019, 06:43 am
por Meta
|
|