Как вы можете контролировать имена файлов для .NET Service References? - PullRequest
14 голосов
/ 01 сентября 2011

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

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

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

AFAIK, вы не можете изменить название справочной службы - но Ihoping, я не прав.Можно ли это сделать?

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

РЕДАКТИРОВАТЬ: Кроме того, я знаю, что одним очевидным решением было бы сократить наши пространства имен и / или пути, но предположим, что мы не можем сделать это в этом случае.:) В основном я пытаюсь выяснить, как управлять именами файлов для ссылок на службы.

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

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

Ответы [ 2 ]

13 голосов
/ 04 октября 2011

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

В этой статье об этом подробнее говорится.

0 голосов
/ 01 сентября 2011

259?NTFS на самом деле составляет 32 Кб, но Windows Explorer ограничивается значением «256», существуют определенные API-интерфейсы Windows, которые позволяют создавать и обрабатывать более длинные пути вплоть до реального предела NTFS ~ 32 Кб, надлежащая мощность 2, но большинство программного обеспеченияна самом деле не использует эти родные apis ...

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

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

...