Существует два типа длинных путей, связанных со сборкой. Один из них - это пути, которые на самом деле не слишком длинные, но содержат много ".. \". Как правило, это значения HintPath ссылок. MSBuild должен нормализовать эти пути ниже максимального предела, чтобы они работали.
Другой вид пути слишком длинный. Извините, но это не сработает. Если взглянуть честно, проблема в том, что API для поддержки длинных путей просто недостаточно. У команды BCL (см. Их блог) были подобные проблемы. Только некоторые из Win32 API поддерживают формат \? \. Произвольные инструменты сборки, и, вероятно, 98% приложений там, нет; и хуже, вероятно, будет вести себя плохо (подумайте обо всех буферах, размер которых указан для MAX_PATH).
Мы пришли к выводу, что до тех пор, пока не будут предприняты большие усилия в экосистеме, чтобы заставить работать длинные пути, или пока Windows не придумает какой-то оригинальный способ заставить их работать в любом случае (например, искажение коротких путей?), Длинные пути просто невозможны для MSBuild для поддержки. Обходные пути включают в себя sub, как вы нашли; но если ваше дерево просто слишком глубокое, ваши единственные варианты - построить его по фрагментам или сократить имена папок. К сожалению.
Dan / MSBuild