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