Возможно ли удалить и добавить ссылку на csproj программно через командный файл? - PullRequest
2 голосов
/ 21 января 2012

Я пишу короткий командный файл для подготовки библиотеки DLL управляющей библиотеки с проектом примеров для развертывания через sip-файл и задаю следующий вопрос.

Учитывая файл csproj в известном месте и DLL в известном месте, возможно ли программно обновить csproj из командного файла (через стороннюю командную строку exe или другие сценарии), чтобы добавить новую DLL?

Моя структура папок

/Build 
   /SDK
      /WPF
          /4.0 : ControlLibrary.dll sits here
   /Examples
      /WPF
          /4.0 : Examples.csproj sits here

Предполагая, что командный файл находится на уровне / Build, есть ли способ изменить файл examples.csproj для ссылки на ControlLibrary.dll?

Просто чтобы прояснить, причина, по которой у меня такая структура, заключается в том, что я хочу развернуть примеры csproj для поставки с моей управляющей библиотекой. Example.csproj должен ссылаться на запутанную управляющую библиотеку в SDK /. Examples.csproj также существует в стволе разработчика (откуда он был скопирован) и в решении для разработки он ссылается на вывод ControlLibrary.csproj в неясной форме.

По сути, я создаю структуру папок для архивирования и отправки примеров ControlLibrary plus, следовательно, необходимо обновить ссылку.

Обновление - решено с помощью Powershell

См. Этот связанный вопрос и ответ на добавление и удаление ссылок с использованием Powershell

Ответы [ 2 ]

3 голосов
/ 21 января 2012

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

Вы можете вызвать такое приложение командной строки из своего пакетного файла.

Схему для этого файла можно найти по адресу:

%windir%\Microsoft.NET\Framework\[framework version]\Microsoft.Build.xsd

Как описано в в этом ответе SO .

2 голосов
/ 21 января 2012

Я не понимаю, почему вам нужно изменить файл csproj в вашем случае.Просто убедитесь, что ссылка на библиотеку в файле csproj является относительной, т.е. ..\..\..\SDK\WPF\4.0\ControlLibrary.dll, и она будет работать нормально, даже если вы переместите всю иерархию папок в новое место.

Если вы пытаетесь упростить добавлениебиблиотека для новых проектов, хотя, посмотрите на NuGet .Это лучший способ распространения и развертывания библиотек.

...