Microsoft Robotics Studio y problemas de ruta absoluta
-
22-09-2019 - |
Pregunta
Acabo de instalar Microsoft Robotics Studio 2008 R2, y debo admitir que me sorprende descubrir cómo se manejan los caminos.
Primero del estudio quiere instalarse en mi perfil personal (esto está en Vista):
C:\Users\MyUserName\Microsoft Robotics Dev Studio 2008 R2
Supongo que esto se debe a que durante el desarrollo tengo que escribir archivos en la fabricación de la carpeta de Robotics Studio C:\Program Files
a no ir.
Luego, cuando creo un nuevo proyecto de robótica, se agregan muchas rutas absolutas que apuntan al estudio de robótica al proyecto. Si reviso mi proyecto en el control de la fuente y otro desarrollador lo verifica en su máquina, las rutas absolutas no se resolverán y el proyecto no se compilará.
Además, dado que todos los servicios se recopilan en una sola carpeta en la carpeta Robotics Studio que desarrolla múltiples servicios independientes en una sola computadora parece ser al menos confuso.
¿Tienes buenas estrategias para manejar este desastre?
Solución
Ahora he descubierto una manera de cambiar un proyecto de Microsoft Robotics DSS Service Visual Studio en algo que puede compilar y ejecutar en su propio árbol de origen independiente de la ruta de instalación del Robotics Studio. Aquí hay una descripción de lo que necesita hacer para modificar el proyecto:
Agregue el ruta de contenedor de Robotics Studio SENDERO Variable de entorno para poder ejecutar
dssproxy.exe
sin suministrar un camino completo. He instalado Robotics Studio en la carpeta de archivos de programa para evitar escribir archivos accidentalmente en las carpetas Robotics Studio.Abre el Propiedades página para el proyecto y seleccione el Construir pestaña. En el Producción Sección Cambiar el Ruta de salida a
Debug\bin
. Para proyectos .NET es costumbre compilar en carpetasbin\Debug
ybin\Release
Pero el servicio de alojamiento de robótica esperanza vivir en una carpeta llamadabin
y almacenará datos en la carpeta sobre elbin
carpeta.Ve a la Firma pestaña y seleccione una nueva clave en el Elija un archivo de clave de nombre fuerte caja. Puede generar su propia clave en ese momento o usar el
sn.exe
utilidad para generar una nueva clave. O si tiene su propia política para crear claves, siga eso. lossn.exe
la utilidad se puede encontrar en eltools
Carpeta de Robotics Studio.En el Construir eventos pestañas editar Línea de comandos de eventos posteriores a la construcción:
dssproxy.exe /dll:"$(TargetPath)" /proxyprojectpath:"$(ProjectDir)Proxy" /keyfile:"$(SolutionDir)Key.snk" $(ProxyDelaySign) $(CompactFrameworkProxyGen) /binpath:"." @(ReferencePath->'/referencepath:"%(RootDir)%(Directory) "', ' ')
Prestar atención al argumento a
/keyfile
. Ingrese una expresión que localice el archivo de clave de nombre fuerte creado en el paso anterior.Copiar los archivos
DssHost.exe
yDssHost.exe.config
(oDssHost32.exe
yDssHost32.exe.config
Para el servicio de alojamiento de 32 bits) desde la carpeta Bin de Robotics Studio en la carpeta del proyecto y agregue estos archivos al proyecto. Selecciona el Acción de construcción a Contenido y Copiar al directorio de salida a Copiar si es más nuevo. Haz lo mismo para el archivo manifestante para su servicio. En realidad, el archivo manifiesto no tiene que estar en la misma carpeta que el servicio, pero copiarlo a la carpeta de salida le permite realizar la implementación de XCopy.En el Depurar pestaña Cambiar el Iniciar programa externo hacia
DssHost.exe
en la carpeta de salida de su proyecto. Tendrá que crear el proyecto una vez para copiar el archivo en la carpeta de salida. Limpiar el Directorio de trabajo. Selecciona el Argumentos de la línea de comandos a/p:50000 /t:50001 /m:DSSService1.manifest.xml
Cambie el nombre del archivo manifiesto al nombre propio de su proyecto. Puede modificar los números de puerto utilizados aquí o en el
DssHost.exe.config
expediente. Si se ejecuta en un entorno de Windows protegido (UAC), deberá usar elhttpreserve
Ordene dar acceso a un puerto en particular. Tienes que ejecutar este comando como administrador.La configuración de depuración no se almacena en el archivo del proyecto y cada desarrollador tendrá que crear configuraciones personales.
También debes actualizar el Liberar configuración en consecuencia.
Otros consejos
Como solo estaba interesado en el CCR de MS Robotics, solo agrego estos ensamblajes como referencia a cualquier proyecto con el que lo use y solo termine con él.
Esto funciona sin ningún problema. Entonces, si también solo está interesado en la parte de CCR y DSS del estudio, entonces esta podría ser su solución
Reiniciar
Vemos mucho este problema. La solución más fácil es especificar el directorio de instalación al instalar Robotics Studio para que sea "C: Archivos de programa Microsoft Robotics Studio". De esa manera, mover el código entre máquinas, verificar el control de la fuente, etc., se vuelve mucho menos problemático.
La otra opción es usar DSSProjectMigration, que se incluye con RDS. Simplemente ejecute DSSProjectMigration contra el directorio de su proyecto, y corregirá todas las rutas codificadas.