Microsoft Robotics Studio и проблемы абсолютного пути
Я только что установил Microsoft Robotics Studio 2008 R2, и я должен признать, что я потрясен, обнаружив, как обрабатываются пути.
Сначала студия хочет установить себя в мой личный профиль (это на Vista):
C:\Users\MyUserName\Microsoft Robotics Dev Studio 2008 R2
Я предполагаю, что это связано с тем, что во время разработки мне нужно записывать файлы в папку робототехнической студии. C:\Program Files
не идти.
Затем, когда я создаю новый проект по робототехнике, в проект добавляется множество абсолютных путей, указывающих на студию робототехники. Если я проверяю свой проект в системе управления версиями, а другой разработчик проверяет его на своем компьютере, абсолютные пути не будут решаться, и проект не будет компилироваться.
Кроме того, поскольку все сервисы собраны в одной папке в папке робототехнической студии, разработка нескольких независимых сервисов на одном компьютере, по меньшей мере, сбивает с толку.
У вас есть какие-нибудь хорошие стратегии для решения этой проблемы?
3 ответа
Теперь я нашел способ превратить проект Visual Studio Microsoft Robotics DSS Service в нечто, что вы можете скомпилировать и запустить в своем собственном дереве исходных кодов независимо от пути установки студии робототехники. Вот описание того, что вам нужно сделать, чтобы изменить проект:
Добавьте путь bin для студии робототехники в переменную окружения PATH, чтобы иметь возможность выполнять
dssproxy.exe
без указания полного пути. Я установил робототехническую студию в папку программных файлов, чтобы избежать случайной записи файлов в папки робототехнической студии.Откройте страницу свойств проекта и выберите вкладку " Сборка ". В разделе " Выход " измените путь вывода на
Debug\bin
, Для проектов.NET принято компилировать в папкиbin\Debug
а такжеbin\Release
но служба робототехники ожидает жить в папке с именемbin
и будет хранить данные в папке надbin
папка.Перейдите на вкладку " Подписание " и выберите новый ключ в поле " Выбрать файл ключа строгого имени". Вы можете сгенерировать свой собственный ключ на этом этапе или использовать
sn.exe
утилита для генерации нового ключа. Или, если у вас есть собственная политика создания ключей, следуйте этому.sn.exe
Утилита может быть найдена вtools
папка студии робототехники.На вкладке " События сборки " отредактируйте командную строку события после сборки:
dssproxy.exe /dll:"$(TargetPath)" /proxyprojectpath:"$(ProjectDir)Proxy" /keyfile:"$(SolutionDir)Key.snk" $(ProxyDelaySign) $(CompactFrameworkProxyGen) /binpath:"." @(ReferencePath->'/referencepath:"%(RootDir)%(Directory) "', ' ')
Обратите внимание на аргумент
/keyfile
, Введите выражение, которое находит файл ключа строгого имени, созданный на предыдущем шаге.Скопируйте файлы
DssHost.exe
а такжеDssHost.exe.config
(или жеDssHost32.exe
а такжеDssHost32.exe.config
для 32-битного хостинга) из папки bin студии робототехники в папку проекта и добавьте эти файлы в проект. Установите для параметра " Действие построения" значение " Содержимое", а для параметра " Копировать в выходной каталог" - значение " Копировать, если новее" Сделайте то же самое для файла манифеста для вашего сервиса. На самом деле, файл манифеста не обязательно должен находиться в той же папке, что и служба, но копирование его в выходную папку позволяет выполнить развертывание XCOPY.На вкладке " Отладка " измените внешнюю программу " Пуск" на
DssHost.exe
в выходной папке вашего проекта. Вам нужно будет собрать проект один раз, чтобы скопировать файл в выходную папку. Очистить рабочий каталог. Установите аргументы командной строки в/p:50000 /t:50001 /m:DSSService1.manifest.xml
Измените имя файла манифеста на правильное имя в вашем проекте. Вы можете изменить номера портов, используемых здесь или в
DssHost.exe.config
файл. Если вы работаете в защищенной среде Windows (UAC), вам придется использоватьhttpreserve
Команда, чтобы дать себе доступ к определенному порту. Вы должны запустить эту команду от имени администратора.Настройки отладки не сохраняются в файле проекта, и каждый разработчик должен будет создать личные настройки.
Вам также следует соответствующим образом обновить конфигурацию выпуска.
Так как меня интересовал только CCR MS Robotics, я просто добавляю эти сборки в качестве ссылки на любой проект, с которым я его использую, и просто заканчиваю с ним.
Это работает без проблем. Так что если вас интересует только CCR и DSS часть студии, тогда это может быть вашим решением.
Reinier
Мы часто видим эту проблему. Абсолютно простое решение - указать каталог для установки при установке робототехнической студии как "C:\program files\microsoft robotics studio". Таким образом, перемещение кода между машинами, выход из системы контроля версий и т. Д. Становится намного менее проблематичным.
Другой вариант - использовать dssprojectmigration, который включен в RDS. Просто запустите dssprojectmigration для каталога вашего проекта, и он исправит все жестко заданные пути.