Pergunta

Em uma compilação bem-sucedida, eu gostaria de copiar o conteúdo do diretório de saída para um local diferente sob o mesmo "base" pasta. Esta pasta pai é uma parte relativa e pode variar de acordo com as configurações de controle de origem.

Eu listei alguns dos valores de macro disponíveis para mim ...

$ (SolutionDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ build

$ (ProjectDir) = D: \ GlobalDir \ Version \ AppName \ Solution1 \ Version \ ProjectA \

Eu quero copiar o conteúdo de saída DIR para a seguinte pasta:

D: \ GlobalDir \ Version \ AppName \ Solution2 \ Project \ Dependência

O local de base "D: \ GlobalDir \ Version \ AppName" precisa de ser obtida a partir de uma das macros acima. No entanto, nenhum da lista de valores macro única o local pai.

Como faço para extrair única a localização base para o comando de cópia pós construção?

Foi útil?

Solução

Se nenhum dos TargetDir ou outras macros apontar para o lugar certo, use o diretório ".." para ir para trás até a hierarquia da pasta.

ie. Use $(SolutionDir)\..\.. para obter seu diretório base.


Para a lista de todas as macros, consulte aqui:

http://msdn.microsoft.com/en-us/library/ c02as0cs.aspx

Outras dicas

Aqui está o que você quer colocar na linha pós-build comando evento do projeto:

copy /Y "$(TargetDir)$(ProjectName).dll" "$(SolutionDir)lib\$(ProjectName).dll"

EDIT:. Ou se o seu nome de destino é diferente do que o nome do projeto

copy /Y "$(TargetDir)$(TargetName).dll" "$(SolutionDir)lib\$(TargetName).dll"

Você pode tentar:

$(SolutionDir)..\..\

Eu acho que isso é relacionado, mas eu tive um problema ao construir diretamente usando linha de comando msbuild (a partir de um arquivo de lote) vs construir a partir de dentro VS.

Usando algo como o seguinte:

<PostBuildEvent>
  MOVE /Y "$(TargetDir)something.file1" "$(ProjectDir)something.file1"
  start XCOPY /Y /R "$(SolutionDir)SomeConsoleApp\bin\$(ConfigurationName)\*" "$(ProjectDir)App_Data\Consoles\SomeConsoleApp\"
</PostBuildEvent>

(nota: start XCOPY em vez de XCOPY utilizado para contornar um problema de permissões que impediu copiar)

O $(SolutionDir) macro avaliados para ..\ ao executar msbuild de um batchfile, o que resultou no comando XCOPY falhando. É trabalhado de outro modo bem quando construída de dentro do Visual Studio. Confirmado usando /verbosity:diagnostic para ver a saída avaliado.

Usando o $(ProjectDir)..\ macro em vez disso, o que equivale à mesma coisa, funcionou bem e manteve o caminho completo em ambos os cenários de construção.

Não faria sentido usar msbuild diretamente? Se você está fazendo isso com cada compilação, em seguida, você pode adicionar uma tarefa msbuild no final? Se você gostaria apenas de ver se você não consegue encontrar outro valor macro que não é mostrado no Visual Studio IDE, você pode ligar as opções MSBuild para diagnóstico e que irá mostrar-lhe todas as variáveis ??que você poderia usar, como bem como o seu valor atual.

Para mudar isso em no estúdio visual, vá em Ferramentas / Opções, em seguida, role a exibição de árvore para a seção chamada projetos e soluções, expandir esse e clique em Criar e executar, à direita o seu é um drop-down que especificar o construção de saída verbosidade, estabelecendo que, para diagnóstico, irá mostrar-lhe o que outros valores macro você poderia usar.

Porque eu não sei bem em que nível você gostaria de ir, e quão complexo você quer a sua construção a ser, isso pode lhe dar uma ideia. Estive recentemente fazendo scripts de construção, que mesmo executar código SQL como parte da compilação. Se você gostaria de mais alguma ajuda ou até mesmo alguns scripts de construção de amostra, deixe-me saber, mas se ele é apenas um pequeno processo que você deseja executar no final da compilação, o talvez indo o script msbuild completo é um pouco de matar mais .

Hope isso ajuda Rihan

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top