Microsoft Robotics Studio e problemas de caminho absoluto
-
22-09-2019 - |
Pergunta
Acabei de instalar o Microsoft Robotics Studio 2008 R2 e devo admitir que estou chocado ao descobrir como os caminhos são tratados.
Primeiro o estúdio quer se instalar no meu perfil pessoal (isso é no Vista):
C:\Users\MyUserName\Microsoft Robotics Dev Studio 2008 R2
Presumo que isso ocorra porque durante o desenvolvimento tenho que gravar arquivos na pasta do Robotics Studio, fazendo C:\Program Files
não vá.
Então, quando eu crio um novo projeto de robótica, muitos caminhos absolutos apontando para o estúdio de robótica são adicionados ao projeto.Se eu verificar meu projeto no controle de origem e outro desenvolvedor fizer check-out em sua máquina, os caminhos absolutos não serão resolvidos e o projeto não será compilado.
Além disso, como todos os serviços são coletados em uma única pasta na pasta do Robotics Studio, o desenvolvimento de vários serviços independentes em um único computador parece ser no mínimo confuso.
Você tem alguma boa estratégia para lidar com essa bagunça?
Solução
Agora descobri uma maneira de transformar um projeto do Visual Studio do Microsoft Robotics DSS Service em algo que você pode compilar e executar em sua própria árvore de origem, independentemente do caminho de instalação do Robotics Studio.Aqui está uma descrição do que você precisa fazer para modificar o projeto:
Adicione o caminho do bin do Robotics Studio para você CAMINHO variável de ambiente para poder executar
dssproxy.exe
sem fornecer um caminho completo.Instalei o Robotics Studio na pasta de arquivos de programas para evitar a gravação acidental de arquivos nas pastas do Robotics Studio.Abra o Propriedades página do projeto e selecione o Construir aba.No Saída seção alterar o Caminho de saída para
Debug\bin
.Para projetos .NET é comum compilar em pastasbin\Debug
ebin\Release
mas o serviço de alojamento robótico espera morar em uma pasta chamadabin
e armazenará os dados na pasta acima dobin
pasta.Vou ao Assinatura guia e selecione uma nova chave na Escolha um arquivo de chave com nome forte caixa.Você pode gerar sua própria chave nesse ponto ou usar o
sn.exe
utilitário para gerar uma nova chave.Ou se você tiver sua própria política para criação de chaves, siga-a.Osn.exe
utilitário pode ser encontrado notools
pasta do estúdio de robótica.No Criar eventos edição da guia Linha de comando do evento pós-compilação:
dssproxy.exe /dll:"$(TargetPath)" /proxyprojectpath:"$(ProjectDir)Proxy" /keyfile:"$(SolutionDir)Key.snk" $(ProxyDelaySign) $(CompactFrameworkProxyGen) /binpath:"." @(ReferencePath->'/referencepath:"%(RootDir)%(Directory) "', ' ')
Preste atenção ao argumento para
/keyfile
.Insira uma expressão que localize o arquivo de chave de nome forte criado na etapa anterior.Copie os arquivos
DssHost.exe
eDssHost.exe.config
(ouDssHost32.exe
eDssHost32.exe.config
para o serviço de hospedagem de 32 bits) da pasta bin do Robotics Studio para a pasta do projeto e adicione esses arquivos ao projeto.Colocou o Criar ação para Contente e Copiar para diretório de saída para Copie se for mais recente.Faça o mesmo para arquivo de manifesto para o seu serviço.Na verdade, o arquivo de manifesto não precisa estar na mesma pasta que o serviço, mas copiá-lo para a pasta de saída permite fazer a implantação do XCOPY.No Depurar guia alterar o Iniciar programa externo para o
DssHost.exe
na pasta de saída do seu projeto.Você terá que construir o projeto uma vez para copiar o arquivo para a pasta de saída.Limpar o Diretório de trabalho.Colocou o Argumentos de linha de comando para/p:50000 /t:50001 /m:DSSService1.manifest.xml
Altere o nome do arquivo de manifesto para o nome adequado em seu projeto.Você pode modificar os números de porta usados aqui ou no
DssHost.exe.config
arquivo.Se você estiver executando em um ambiente Windows protegido (UAC), você terá que usar ohttpreserve
comando para ter acesso a uma porta específica.Você deve executar este comando como administrador.As configurações de depuração não são armazenadas no arquivo do projeto e cada desenvolvedor terá que criar configurações pessoais.
Você também deve atualizar o Liberar configuração em conformidade.
Outras dicas
Como eu estava interessado apenas no CCR da MS Robotics, acabei de adicionar esses assemblies como uma referência a qualquer projeto com o qual eu o uso e apenas terminei com ele.
Isso funciona sem problemas. Portanto, se você também estiver interessado apenas na parte do CCR e DSS do estúdio, essa pode ser sua solução
Reinier
Vemos muito esse problema. A solução mais fácil é especificar o diretório de instalação ao instalar o Robotics Studio para ser "C: Arquivos de Programas Microsoft Robotics Studio". Dessa forma, mover o código entre máquinas, verificar o controle de origem, etc, torna -se muito menos problemático.
A outra opção é usar o DSSProjectMigration, incluído no RDS. Basta executar o DSSProjectMigration contra o diretório do projeto e corrigirá todos os caminhos codificados.