2010-01-05 23 views
5

He escrito un generador de código C# para generar entidades y archivos de clase relacionados en nuestra aplicación Ling-To-SQL. El generador de códigos necesita agregar/eliminar archivos en TFS y también agregarlos/eliminarlos de un archivo .csproj para que se incluyan o excluyan correctamente en sus respectivos proyectos.Archivo .csproj - Agregando/borrando archivos programáticos

He descubierto la interacción de TFS, pero tengo curiosidad acerca de la forma mejor o estándar de agregar/eliminar archivos desde archivos .csproj mediante programación. Alguien tiene alguna experiencia con esto?

Gracias - Randy

+0

¿Cómo funciona la interacción de TFS? ¿Tienes algún enlace? –

Respuesta

1

Otra opción es utilizar el modelo de automatización de Visual Studio. Desde dentro de Visual Studio puede modificar el proyecto utilizando el código de macro (VBA). This page on MSDN tiene enlaces a la documentación principal de las bibliotecas de automatización.

Al hacer esto, puede crear una integración muy ingeniosa. Por ejemplo, podría tener una macro de Visual Studio que inicie el proceso de generación de código y luego agregue los archivos resultantes al proyecto.

+0

Este podría ser el mejor enfoque. Estaba empezando a leer sobre el objeto DTE. –

1

Todo es XML. Colóquelo en un DOM y siga su camino con él.

+1

Creo que no solo "me salgo con la mía". Si lo hago mal, arruinaré todo el proyecto. Estaba buscando un código de muestra para hacer esto bien. –

+0

@RandyMinder no lo arruinarás si mantienes todo tu código en control de fuente :) http://github.com! –

0

he visto generadores de código que no modifican el proyecto. El proyecto siempre está al tanto de los archivos generados, pero los archivos reales no están incluidos.

+1

Eso no tiene ningún sentido para mí. ¿Cómo puede un proyecto "conocer" los archivos generados pero no incluirlos en el proyecto? ¿De qué sirve esto? Los archivos aún no son parte del proyecto. –

0

Se crea un archivo de ejemplo & continuación refiriéndose a él se puede editar el archivo XML caso ".aspx": {

   if ((File.ReadAllText((GlobalVariables.sDestinationPath).Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention).Contains("<Content Include=\"" + fileName1 + "\" />")) == false) 
        { 
         fileReader = File.ReadAllText(GlobalVariables.sDestinationPath + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "").Replace("<Content Include=\"Web.config\" />", "<Content Include=\"Web.config\" />" + "\n" + " <Content Include=\"" + fileName1 + "\" />"); 
         File.WriteAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "", fileReader); 

         fileReader = File.ReadAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "").Replace("<Compile Include=\"" + pathfol + "\" />", "<Compile Include=\"" + pathfol + "\" />" + "\n" + " <Compile Include=\"" + fileName1 + ".vb\" > " + "\n" + "  <DependentUpon>" + fileName1 + "</DependentUpon>" + "\n" + "  <SubType>ASPXCodeBehind</SubType>" + "\n" + " </Compile>" + "\n" + " <Compile Include=\"" + fileName1 + ".designer.vb\">" + "\n" + "  <DependentUpon>" + fileName1 + "</DependentUpon>" + "\n" + " </Compile> "); 
         File.WriteAllText(GlobalVariables.sDestinationPath.Trim() + "" + GlobalVariables.sProjName + "\\" + GlobalVariables.sProjName + projExtention + "", fileReader); 
        } 
Cuestiones relacionadas