Pergunta

O VS tem uma variável de ambiente para o caminho para a solução atual?

Há, por exemplo, "%PathToWebRoot%", que é geralmente definida como a "WebSites" de diretório em sua VS diretório de projeto.O valor pode ser alterado em qualquer número de maneiras.Eu estou querendo saber se há uma variável que muda a cada vez que você carregar uma solução para o ponto a é raiz.

Eu estou a criação de testes de unidade que podem ser executados em máquinas diferentes e uma das direções, você precisa definir antes o método é o AspNetDevelopmentServerHost.É recomendado não rígido código-los, claro, mas o recomendado variável de ambiente não é necessariamente onde o seu site será e não neste caso.

Foi útil?

Solução

VS tem um monte de variáveis Macro que trabalham a partir de dentro VS.O que dá a você todo o caminho para a solução é chamado de $(SolutionDir).No entanto, enquanto este trabalha a partir da Pré - e Pós-eventos de compilação (e, AFAIK, na solução do MSBuild), esta não é uma variável de ambiente.Se você pensar, você não pode ter um (global) variável de ambiente que aponta para "o caminho para a solução atual", pois você pode ter mais de uma instância do VS aberto.

Dependendo da sua unidade de framework de testes, muitas vezes você pode perguntar a ele sobre seu contexto de execução para obter o diretório atual.Que não pode dar-lhe a solução caminho, embora...

Outras dicas

O Visual Studio expõe uma variável de ambiente para o caminho da solução - é chamado SolutionPath. Se parece com isso:

SolutionPath=D:\Team\MyProject\main-branch\MyProject.sln

É importante ressaltar que você pode usá -lo em qualquer processo gerado do Visual Studio - por exemplo, lançando scripts em lote da sua solução (é assim que ela pode ser diferente em diferentes instâncias do Visual Studio).

Se você configurar o Visual Studio para lançar .bat arquivos clicando duas vezes neles seguindo este guia, a variável de ambiente estará disponível no seu arquivo em lote.

No meu caso particular, eu precisava chegar a um diretório dentro da minha solução e tive alguns ramos de código tudo no mesmo nível. Mas meu script em lote estava em um nível mais alto na árvore de origem e não tinha uma maneira fácil de determinar o ramo 'atual'. Por exemplo, essa era minha estrutura:

D:\Team\MyProject\
  L-- Build
      L-- MyBatchScript.bat
  L-- main-branch
      |-- MyProject.sln
      L-- important-folder
  L-- dev-branch
      |-- MyProject.sln
      L-- important-folder

Eu referenciei MyBatchScript.bat Como um item de solução em cada solução para que eu pudesse iniciá -lo clicando duas vezes nele.

Para obter a pasta da solução em vez do caminho para o arquivo de solução, usei um pouco de script de scripts do DOS:

FOR %%d IN (%SolutionPath%) DO SET SolutionFolder=%%~dpd
REM Now I can run a tool with the correct folder
mycustomtool.exe %SolutionFolder%important-folder
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top