2009-01-05 26 views
11

Tengo muchos proyectos y no tengo una solución maestra con todo lo que contiene. La razón por la que quiero uno es para refactorizar.Generar archivo de solución de la lista de CSProj

Me preguntaba si alguien conocía una forma automática de crear un archivo de solución. Agregar manualmente todos los proyectos simplemente no es factible.

+0

Una cosa a tener en cuenta es que algunos de sus proyectos pueden hacer referencia a dlls compilados en lugar de los proyectos que crearon esos archivos. Cuando ese es el caso, las refactorizaciones integradas de VisualStudio no cruzarán ese límite. Por lo tanto, si se modifica la firma de un método de utilidad, una aplicación que haga referencia al dll de la utilidad en lugar del proyecto no se cambiará automáticamente para que coincida. – Pedro

Respuesta

8

Y ahora he actualizado mi utilidad (mencionado anteriormente) para apoyar creación de carpetas de solución: http://bloggingabout.net/blogs/vagif/archive/2009/12/03/utility-to-generate-solution-files-can-now-create-solution-folders.aspx

+0

¿Puedes proporcionar el código para eso? De esta forma, otros pueden ampliarlo (por ejemplo: si tienen archivos vbproj o algo así). –

+2

El código fuente está disponible en BitBucket: https://bitbucket.org/object/solutionmaker/ –

-3

Crea una solución vacía, luego arrastra & ¿dejas todos tus proyectos en ella a la vez?

+0

La pregunta original indicaba que agregarlos manualmente no era factible. – Pedro

2

Usted puede intentar this (el código de abajo viene de este sitio, de todos los sitios ..)

Pero si no se ha solucionado y se necesitaría mucho tiempo para depurar, sugeriría ir para el dolor de agregarlos manualmente una vez. Solo ponga buena música y vaya por ella ... :)

@oefe No creo que VS.NET le permita a D & proyectos D en soluciones, lo he intentado una vez.

Imports EnvDTE 
Imports EnvDTE80 
----------------------------------------------------------------------------------- 
    Private Shared Sub DoStuff() 

     Dim filePath As String = "c:\temp" 

     Dim fileName As String = "bld_TestApp.sln" 

     Dim fullName As String = Path.Combine(filePath, fileName) 

     Dim objType As Type 

     Dim objDTE As EnvDTE.DTE 

     objType = Type.GetTypeFromProgID("VisualStudio.DTE.8.0") 

     objDTE = DirectCast(System.Activator.CreateInstance(objType), EnvDTE.DTE) 

     Console.WriteLine(objDTE.Name + ":" + objDTE.Version) 


     objDTE.Solution.Create(filePath, fileName) 

     objDTE.Solution.AddFromFile("C:\Common.vbproj") 

     objDTE.Solution.SaveAs(fullName) 


    End Sub 
-2

Visite nAnt, el puerto .NET de Ant. Tiene la capacidad de hacer cosas como esta o construir sin ella.

+0

Esto es bastante interesante: he dado la mejor solución, sin embargo, he votado negativamente, y ni un solo comentario para explicar lo que está pensando el # $% ##. Mientras tanto, la peor solución (que incluye un código personalizado original) se sube. –

+0

Simplemente adivinando aquí, pero su respuesta sería mucho más útil si tuviera que proporcionar la tarea NAnt exacta que fusiona todos los proyectos. – Pedro

+0

Por lo que entiendo, nAnt puede reemplazar los archivos de la solución, pero no sé cómo puede crear archivos de solución, de los que en realidad soy fanático, pero puede que no satisfagan las necesidades de todos. –

-2

He utilizado programáticamente los archivos de solución de manipulación de texto para archivos .vcproj (pero cs/vb funcionaría de la misma manera). No es realmente difícil averiguar cómo hacerlo si abre un archivo de solución en el bloc de notas o lo que sea.

Lamentablemente no puedo proporcionar el código ya que es de propiedad.

Cuestiones relacionadas