2010-04-19 2 views
2

ситуациюMSBuild Override Ссылки проекта для разрешения на прекомпилирована Ассамблею

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

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

Покушение Решение

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

Вопрос

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

Благодаря

ответ

2

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

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

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

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