Модифицировать программно csproj файлы - PullRequest
7 голосов
/ 25 октября 2011

У меня есть исходный код Entlib 5.0, и мне нужно подписать все сборки с помощью моего собственного ключа (файл snk).

Самый простой способ - открыть файл решения EnterpriseLibrary.2010 в Visual Studio 2010 , а затем для каждого проекта выбрать Свойства-> Подписание и выбрать Подписать сборку , а затем выберите файл ключа.

Но я не хочу делать это вручную, тогда я мог бы написать скрипт для ручного редактирования файлов проекта и вставить следующее в конец текущего списка PropertyGroups:

  <PropertyGroup>
    <SignAssembly>true</SignAssembly>
  </PropertyGroup>
  <PropertyGroup>
    <AssemblyOriginatorKeyFile>keyFile.snk</AssemblyOriginatorKeyFile>
  </PropertyGroup>

Любой вспомогательный класс в C # или сценарии, если было бы лучше сделать это простым и быстрым способом?

1 Ответ

21 голосов
/ 13 декабря 2011

Вы можете взглянуть на пространство имен Microsoft.Build.BuildEngine MSDN Link

Пример кода:

Engine eng = new Engine()
Project proj = new Project(eng);
proj.Load(FullProjectPath);
proj.SetProperty("SignAssembly", "true");
proj.Save(FullProjectPath);

Недавно я использовал нечто подобное, чтобы внести серию изменений во все файлы .csproj моей компании (более 200) вместо того, чтобы вручную открывать каждый проект и вносить изменения.

Надеюсь, это поможет.

...