Добавление пользовательской информации в файлы CSPROJ - PullRequest
9 голосов
/ 14 февраля 2011

В рамках нашего жизненного цикла разработки у нас есть ряд процессов, которые мы запускаем против источника C # в наших проектах.

Процессы запускаются из графического интерфейса, который в настоящее время читает файл * .csproj, чтобы найти исходные файлы, используемые в проекте. Это отлично работает.

Теперь у нас есть новое требование для обеспечения некоторых процессов проверки, которые требуют вызова веб-службы. Веб-сервис должен быть обеспечен некоторыми учетными данными, которые являются специфическими для проекта. В идеале мы могли бы ввести и сохранить эти учетные данные в файле * .csproj, но я не вижу способа его расширения - есть ли?

Мы не хотим вводить новый конфиг. файл только для этих настроек, если мы можем помочь. Можно ли хранить такую ​​информацию, как это файл * .csproj, если нет другого места, куда ее можно поместить.

спасибо

Ответы [ 3 ]

12 голосов
/ 14 февраля 2011

Файл .csproj в основном представляет собой файл MSBuild , поэтому его можно расширять пользовательскими значениями.Если вы щелкнете правой кнопкой мыши по проекту в Visual Studio и выберете «Выгрузить проект», проект станет «серым», а затем снова щелкните правой кнопкой мыши и выберите Edit [ProjectFileName].csproj.Затем вы можете добавить что-то похожее на следующее:

<PropertyGroup Label="Custom">
  <Badger>1</Badger>
</PropertyGroup>

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

3 голосов
/ 13 апреля 2011

VS проекты поддерживают "расширения проекта".Это пользовательские данные, хранящиеся непосредственно в файлах csproj / vbproj.Вы можете очень легко читать и писать их даже из VS.Например, следующий макрос VS записывает такие пользовательские настройки:

Dim proj As Project = DirectCast(DTE.ActiveSolutionProjects(0), Project)
proj.Globals.VariableValue("MySettingName1") = "My value1"
proj.Globals.VariablePersists("MySettingName1") = True

Следующее считывает его обратно:

proj.Globals.VariableValue("MySettingName1").ToString

И код в файле csproj выглядит так:*

Конечно, это сохраняется и не будет перезаписано VS.

1 голос
/ 14 февраля 2011

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

В большинстве случаев по одному файлу конфигурации на проект приходится, и это не слишком большая нагрузка.

...