Por que o Visual Studio não consegue encontrar um arquivo em% path%?

0

Eu criei um arquivo em lotes que é executado após a criação bem-sucedida de um projeto de winforms C # no Visual Studio 2015 (atualização 3 da edição da comunidade). Nesse arquivo em lote, quero garantir que alguns outros executáveis não estejam em execução no momento.

Para esse fim, o arquivo de lote contém linhas semelhantes a:

tskill notepad

Quando eu construo, o arquivo em lote é executado, mas a saída lê (em parte):

'tskill' is not recognized as an internal or external command, 
operable program or batch file.

No entanto, posso executar o arquivo em lote a partir de um prompt de cmd fora do Visual Studio e ele funciona conforme o esperado (mata os executáveis especificados sem erros relatados).

Eu tentei excluir coisas óbvias: usando o caminho completo para tskill , certificando-se de que tskill exista no diretório c:\windows\system32 e que esse diretório esteja no caminho.

Eu também adicionei ECHO %path% ao arquivo em lote para comparar o caminho quando chamado do VS, bem como de uma linha de comando - o caminho é idêntico em ambos os casos.

Fechei e reiniciei o Visual Studio em execução como administrador - os mesmos resultados.

Então: Por que um arquivo em lotes chamado do Visual Studio não pode encontrar c: \ windows \ system32 \ tskill.exe?

(Nota: estou ciente de que o taskkill existe e é um utilitário similar, esta pergunta não é sobre alternativas para o tskill, mas sim porque o VS não pode encontrá-lo.)

Editar : para esclarecer as dúvidas de um comentarista: o mesmo erro é relatado se eu usar o caminho completo para o arquivo ou apenas o nome do executável. Minha variável de ambiente do sistema% path% atual tem 1564 caracteres de comprimento (o padrão máximo para o windows 7 é 2047). O arquivo em lotes funciona corretamente quando executado como um usuário não elevado fora do Visual Studio a partir de uma linha de comando.

Editar 2 : realizou o teste a seguir. 1) Abra o bloco de notas, 2) do prompt de comando elevado chamar tskill com o caminho completo para exe, 3) verificar o bloco de notas não está mais em execução.

Editar 3 : eu adicionei a linha where tskill ao meu arquivo de lote para ver se ele estava chamando o arquivo errado. Em um prompt de comando, o arquivo em lote gera: C:\Windows\System32\tskill.exe . De dentro do Visual Studio, a linha gera: INFO: Could not find files for the given pattern(s) .

Editar 4 : por sugestão nos comentários, tentei usar o prompt de comando do desenvolvedor para o VS2015. Embora a variável% path% tenha sido mais longa, outro comportamento foi o mesmo (por exemplo, ela pode encontrar tskill em c: \ windows \ system32 tanto de um lote quanto da linha de comando).

    
por GojiraDeMonstah 12.10.2016 / 16:07

0 respostas