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 в нечто, что вы можете скомпилировать и запустить в своем собственном дереве исходных кодов независимо от пути установки студии робототехники. Вот описание того, что вам нужно сделать, чтобы изменить проект:

  1. Добавьте путь bin для студии робототехники в переменную окружения PATH, чтобы иметь возможность выполнять dssproxy.exe без указания полного пути. Я установил робототехническую студию в папку программных файлов, чтобы избежать случайной записи файлов в папки робототехнической студии.

  2. Откройте страницу свойств проекта и выберите вкладку " Сборка ". В разделе " Выход " измените путь вывода на Debug\bin, Для проектов.NET принято компилировать в папки bin\Debug а также bin\Release но служба робототехники ожидает жить в папке с именем bin и будет хранить данные в папке над bin папка.

  3. Перейдите на вкладку " Подписание " и выберите новый ключ в поле " Выбрать файл ключа строгого имени". Вы можете сгенерировать свой собственный ключ на этом этапе или использовать sn.exe утилита для генерации нового ключа. Или, если у вас есть собственная политика создания ключей, следуйте этому. sn.exe Утилита может быть найдена в tools папка студии робототехники.

  4. На вкладке " События сборки " отредактируйте командную строку события после сборки:

    dssproxy.exe /dll:"$(TargetPath)" /proxyprojectpath:"$(ProjectDir)Proxy" /keyfile:"$(SolutionDir)Key.snk" $(ProxyDelaySign) $(CompactFrameworkProxyGen) /binpath:"." @(ReferencePath->'/referencepath:"%(RootDir)%(Directory) "', ' ')

    Обратите внимание на аргумент /keyfile, Введите выражение, которое находит файл ключа строгого имени, созданный на предыдущем шаге.

  5. Скопируйте файлы DssHost.exe а также DssHost.exe.config (или же DssHost32.exe а также DssHost32.exe.config для 32-битного хостинга) из папки bin студии робототехники в папку проекта и добавьте эти файлы в проект. Установите для параметра " Действие построения" значение " Содержимое", а для параметра " Копировать в выходной каталог" - значение " Копировать, если новее" Сделайте то же самое для файла манифеста для вашего сервиса. На самом деле, файл манифеста не обязательно должен находиться в той же папке, что и служба, но копирование его в выходную папку позволяет выполнить развертывание XCOPY.

  6. На вкладке " Отладка " измените внешнюю программу " Пуск" на 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 для каталога вашего проекта, и он исправит все жестко заданные пути.

Другие вопросы по тегам