у меня есть C# проект MyProject.csproj, который находится в растворе со следующей структурой папок и ссылок Dependency.dll:Используя те же ссылки на сборки в csproj с различными структурами папок
- Libs
- Dependency.dll
- Проекты
- MyProject
- MyProject.csproj
- MyProject
Таким образом, ссылка на Dependency.dll в MyProject.csproj имеет HintPath что-то вроде этого:
..\..\Libs\Dependency.dll
Теперь я как использовать MyProject в другом решении в другой структуре проекта, без изменений, в качестве источника. Это связано с тем, что MyProject находится в собственном репозитории управления версиями, и я использую его в разных решениях как субрепозитории Mercurial/подмодули Git. (Проблема может быть решена на уровне управления источником ...) Такое diffreent решение будет выглядеть следующим образом:
- Libs
- Dependency.dll
- MyProject
- MyProject.csproj
Обратите внимание: папка MyProject теперь находится на том же уровне, что и папка Libs. Таким образом, исходный HintPath теперь недействителен (поскольку он должен быть ..\Libs\Dependency.dll
), и я получаю ошибки сборки.
Есть ли способ исправить это, но сохранить тот же csproj через различные решения?
Я нашел следующие возможные решения, которые являются большими, но требуют модификации csproj. Это в основном возможно в моем случае, но иногда есть внешние компоненты, где я не могу запрашивать такие модификации, поэтому я хотел бы, если это возможно, переопределить уровень решения.
- Условный HintPath на основе проверки существования файла: .csproj multiple hint paths for an assembly Это может работать как в большинстве случаев структура решения хорошо известна здесь.
- Задание несколько мест поиска сборки: https://stackoverflow.com/a/15816779/220230
Спасибо.