Есть несколько связанных вопросов о стековом потоке, но либо у меня другая ситуация, либо я слишком туп, чтобы связать их с ситуацией. Я надеюсь, что кто-то может помочь мне с этим. Более того, я даже не являюсь разработчиком .NET, поэтому заранее прошу прощения за неправильное использование терминологии.
Мой сценарий следующий: инструмент, используемый для развертывания нашего приложения .net (одним щелчком мыши?), Помещает его в каталог, полное имя которого превышает 300 символов. Приложение использует сторонний компонент - назовем его dbstore - который обрабатывает указанный файл, который находится в каталоге развертывания приложения.
До сих пор мы использовали Assembly.GetExecutingAssembly().GetName().CodeBase
для создания полного имени файла для передачи в dbstore. Но dbstore использует API старого стиля и завершает работу при попытке открыть файл.
Поскольку ожидается, что dbstore скоро не изменится, было рекомендовано приложить chdir к каталогу развертывания и передать ему относительный путь в текущем каталоге. Это также подход, описанный в принятом ответе PathTooLongException в коде C #
Однако я считаю, что Directory.SetCurrentDirectory
также выбрасывает PathTooLongException
. Это происходит, даже когда я использую UNC-путь, например имя, начинающееся с \\?\0000000000000\...
Я делаю что-то в корне неправильно? Есть ли другая функция для использования?
РЕДАКТИРОВАТЬ: Кажется, нет никакого способа достичь того, что я ищу. Насколько я могу судить, нет способа установить в текущем каталоге длинный путь.