Ссылка на проект переопределения MSBuild для разрешения прекомпилированной сборки - PullRequest
2 голосов
/ 19 апреля 2010

Положение

У меня есть около 400 файлов csproj с использованием ссылок на проекты. Около 3 из них отдельная команда хочет раскошелиться и включить в отдельное приложение.

Я разветвлял 3 проекта, представляющих интерес, и поскольку отдельная команда использует репо diff SVN, я использовал svn externals, чтобы вставить эти проекты в папку автономного приложения. Очевидно, что поскольку эта команда использует другую структуру папок, ссылки на проекты больше не разрешаются.

Попытка решения

Я полагал, что установка свойств msbuild ReferencePath и AdditionalLibPaths для указания каталога со всеми предварительно скомпилированными зависимостями позволила бы проекту ссылаться на точку восстановления и корректно разрешаться. Однако, похоже, это не так.

Вопрос

  • Кто-нибудь знает способ получить неудачный проект разрешить в предварительно скомпилированную dll?
  • Возможно, укажите мне на автоматизированный инструмент преобразовать проектные ссылки в dll ссылки?
  • Или есть лучший способ решить эту проблему?

Спасибо

Ответы [ 2 ]

3 голосов
/ 23 апреля 2010

Ссылки на проекты разрешаются целью - ResolveProjectReferences. Он в основном вызывает GetTargetPath для указанного проекта и использует его как resolved путь сборки проекта. IIUC, путь к файлу вашего проекта в новой установке неверен, поэтому GetTargetPath завершится ошибкой.

Вы можете решить эту проблему многими способами, например, иметь цель [1], которая отображает пути к старым файлам проекта в разрешенные пути сборки и добавляет их в FooItem [2]. Или вы можете просто добавить все файлы из каталога с «всеми предварительно скомпилированными deps» в @ (ReferencePath). ReferencePath заполняется после разрешения, поэтому он имеет все окончательные пути. Добавление пути поиска к нему не поможет.

  1. И добавить эту цель в свойство ResolveReferencesDependsOn

  2. Вызов GetTargetPath должен добавить возвращаемые пути к какому-либо имени элемента, замените FooItem этим именем элемента.

0 голосов
/ 19 апреля 2010

Файлы проекта (csproj) - это файлы XML, вы можете написать свой собственный инструмент, если вам потребуется выполнить какие-либо манипуляции:

...