2010-01-05 3 views
5

Я написал генератор кода C# для создания сущностей и связанных файлов классов в нашем приложении Ling-To-SQL. Генератору кода необходимо добавлять/удалять файлы в TFS, а также добавлять/удалять их из файла .csproj, чтобы они были включены или исключены в соответствующих проектах..csproj Файл - программные добавления/удаления файлов

Я выяснил взаимодействие с TFS, но мне было любопытно, как лучше или стандартным образом программно добавлять/удалять файлы из .csproj-файлов. У кого-нибудь есть опыт?

Thanks - Randy

+0

Как работает взаимодействие TFS? У вас есть ссылки? –

ответ

1

Другой вариант - использовать модель автоматизации Visual Studio. Изнутри Visual Studio вы можете изменить проект с помощью макрокода (VBA). This page on MSDN имеет ссылки на документацию по основным библиотекам автоматизации.

Сделав это, вы можете создать очень гладкую интеграцию. Например, у вас может быть макрос Visual Studio, который запускает процесс генерации кода, а затем добавляет результирующие файлы в проект.

+0

Это может быть лучший подход. Я только начал читать об объекте DTE. –

1

Это все XML. Загрузите его в DOM и попробуйте с ним.

+1

Я, скорее, не просто «имею свой путь с ним». Если я ошибаюсь, я испортил весь проект. Я искал образец кода, чтобы сделать это правильно. –

+0

@ RandyMinder вы не испортите его, если сохраните весь свой код в исходном управлении :) http://github.com! –

5

.csproj файлы - это всего лишь XML, и они соответствуют XSD. Добавление новых элементов XML должно быть всем, что требуется.

Чтобы найти принять XSD взгляд на: Where can I find the schema (XSD) for a .csproj file?

0

я видел генераторы кода, не изменяющие проект. Проект всегда знает о сгенерированных файлах, но фактические файлы не включены.

+1

Это не имеет никакого смысла для меня. Как проект может «знать» сгенерированные файлы, но фактически не включать их в проект? Какая польза от этого? Файлы по-прежнему не являются частью проекта. –

0

Вы можете создать образец файла & затем ссылающийся на него вы можете редактировать файл XML случай «.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); 
        } 
Смежные вопросы