Как записать поля и функции класса и различные входные значения в файл после построения проекта в VS2008 или VS2010 - PullRequest
1 голос
/ 01 сентября 2011

Я смотрю на упрощение создания входных файлов для приложения

т.е.У меня есть пользовательский класс

public class CustomClass
{
   public string field1;
   public string field2;
   public string field3;

   ...
   public static void FunctionA() {...}
}

Я хочу иметь возможность записывать члены этого класса (поля / свойства / функции) в файл сразу после выполнения сборки.Это содержимое будет иметь вид HTML или X.

Я также хочу иметь возможность записывать разные входные данные в один и тот же файл на основе текущих существующих полей.Я искал настраиваемые атрибуты, чтобы сделать это, но я не знаю, возможно ли это или даже правильный подход.

Моя подпись настраиваемого атрибута будет выглядеть примерно так:

    [SampleAttribute("C:\tmp\writeToThisFile.txt"]
    [SampleFields("A", "B", "C", "A1"]
    [SampleFields("X", "Y", "Z", "A2"]
    public class CustomClass
    ..

Файл C: \ tmp \ writeToThisFile.txt будет содержать что-то вроде этого:

    field1 | field2 | field3 | FunctionA
    A      | B      | C      | A1
    X      | Y      | Z      | A2

Я не хочу писать / поддерживать другое приложение, которое сканирует код и записывает в файл (после сборкисобытие).

Я ищу существующее поведение C # или Visual Studio, которое могло бы облегчить этот подход.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2011

Я думаю, что лучшим в вашем случае будет создание простого надстройки, которая рекурсивно обходит решение и проверяет артефакты кода в каждом файле.

Что вам нужно будет сделать: 1. Создатьпростое дополнение (Новый проект => Другие типы проектов => Расширяемость => Надстройка Visual Studio).

  1. Присоединение к OnBuildBegin и запуск итерации по DTE.Solution.Projects (у вас будет экземпляр DTE сразу после создания проекта).

  2. Каждый элемент проекта (если это файл кода) будет иметь модель кода иерархия, которая содержит пространства имен в этом файле, каждое пространство имен содержит классы, каждый класс содержит методы, свойства, поля и т. Д. Вы в основном просматриваете файл, чтобы найти все необходимые вам элементы, и строитеСтрока строителя с информацией, которую вы хотите.Надеюсь, что это поможет вам начать.

0 голосов
/ 01 сентября 2011

Я бы сказал, написать код, который выполняет действия, которые вы хотите, и скомпилировать его в EXE-файл. Этот EXE, скажем, использует отражение, чтобы найти нужные ему значения и генерирует желаемый результат, скажем, отчет.

Перейдите в свойства основного проекта и в поле PostbuildEvent вставьте DOS-скрипт, который вызывает ранее созданный EXE-файл.

Таким образом, каждый раз, когда ваш основной проект компилируется, скрипт запускается, и ваш EXE запускается.

...