Как вы можете управлять именами файлов для.NET Service References?

У Windows ограничено 259 символов в путях. К сожалению, это начинает создавать проблемы для нас из-за некоторых имен наших сервисов.

Например, у нас есть ветвь TFS с уже длинным путем, а затем ссылки на службы.NET почти вдвое больше, потому что они всегда используют полностью квалифицированное пространство имен в качестве имени файла:

Some.Really.Long.Fully.Qualified.Namespace.Service.Reference.Name.datasource

AFAIK, вы не можете изменить имя сервисной ссылки, но я хочу, чтобы я ошибся. Это можно сделать?

Если нет, есть ли другие возможные обходные пути этой раздражающей проблемы?

EDIT: Кроме того, я знаю, что одним очевидным решением было бы сократить наши пространства имен и/или пути, но предположим, что мы не можем этого сделать в этом случае. :) Я в основном пытаюсь понять, как управлять именами файлов для ссылок на службы.

ОБНОВЛЕНИЕ: У меня есть проблема с корнем, когда TFS не позволяет мне получить последние данные на определенной ветке. Вот точная ошибка:

TF205022: Следующий путь содержит больше допустимых 259 символов: [C:\Some-really-long-259-character-path-here]

Ответ 1

Оказывается, эти.datasource файлы могут быть удалены, поскольку они не нужны для создания проекта. Таким образом, мы просто сделали все файлы.datasource в TFS и удалили их.

В этой статье больше об этом говорится.

Ответ 2

259? на самом деле это 32 к NTFS, но Windows Explorer ограничивается "256", есть определенные API Windows, которые позволяют создавать и обрабатывать более длинные пути до реального предела NTFS ~ 32k, правильная мощность 2, но большая часть программного обеспечения на самом деле не использует эти атрибуты...

см. здесь: Максимальная длина имени файла в NTFS (Windows XP и Windows Vista)? ,

Возможно, было бы использовать инструмент соединения из Sys Internals и соединить длинный путь ветки с чем-то гораздо короче непосредственно на С#, тогда все должно работать, потому что вы бы использовали только относительные пути, я полагаю.