VS.NET: поддержка исходного сервера включена; Не удается получить исходный файл с исходного сервера - PullRequest
2 голосов
/ 12 февраля 2010

Я установил сервер символов для одного из моих текущих проектов. Во время ночной сборки я:

  • построить мой источник
  • применить метку к исходным файлам, которые использовались в сборке
  • индексировать файлы pdb с необходимой информацией
  • хранит файлы pdb на сервере символов MS

(На самом деле, я следовал этой статье: Исходный сервер помогает вам устранять ошибки .

Теперь я ссылаюсь на библиотеку DLL, символы которой опубликованы в другом проекте. Я отлаживаю этот проект и хочу перейти к коду проекта, в котором опубликованы символы отладки.

Я настроил VS.NET, чтобы поддержка исходного сервера была включена. Когда я отлаживаю свой проект, я вижу (в окне Модули), что символы для моего ссылочного проекта действительно были загружены. Когда я хочу перейти к методу, который исходит из указанной DLL, VS.NET выдает предупреждение, в котором я должен подтвердить, что VS.NET действительно может выполнить команду для получения исходного кода с исходного сервера.

Команда выглядит так:

ss.exe get -GL"c:\Users\... -GF -I-Y -W "$/MyProject/Source/..." -VL"specificversion"

(для краткости опущены полные пути).

Когда я запускаю команду, я получаю сообщение об ошибке «исходный код недоступен».

Когда я выполняю эту команду в командной строке, я получаю сообщение об ошибке:

Неверный путь DOS

Кажется, что VSS возвращает эту ошибку, когда целевой путь не существует. Действительно, локальный путь, куда должен быть помещен извлеченный исходный файл, не существует на моем диске. VSS должен его создать.

Как я могу убедиться, что VS.NET выдает команду, чтобы целевой путь был создан при получении исходного кода с исходного сервера?

EDIT: Мне удалось продвинуться немного дальше в моих поисках. На моем компьютере с исходным сервером я отредактировал файл vss.pm и изменил команду, записанную в переменной VSS_EXTRACT_CMD, которая существует внутри «потока», записанного в файле PDB. Я изменил код (Perl?) На это:

push(@stream, "VSS_EXTRACT_CMD=if not exist %vsstrgdir% mkdir %vsstrgdir% | ss.exe get ".
                                   "-GL\"%vsstrgdir%\" -GF- -I-Y ".
                                   "-W \"\$/%var3%\" -VL\"%var4%\"");

Итак, фактически я добавил к нему часть «если не существует ... mkdir ...» и разделил две команды с помощью канала (|).

В VS.NET я указал, что команды SourceServer, которые выдаются VS.NET, также должны быть записаны в окне вывода. Поэтому, когда я копирую команду, найденную в окне вывода, и выполняю эту команду в командной строке, каталог создается и файл извлекается. \ О /

К сожалению, когда VS.NET делает это, файл не извлекается, и каталог также не был создан ... Есть идеи, в чем может быть проблема?

Edit: Я проверил это на компьютере с Windows XP, и это работает. Я использую Windows Vista в офисе, а в Vista она не работает. Кажется, VS.NET не разрешено создавать целевой каталог?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...