O Visual Studio relata uma exceção ao carregar um projeto

1

Quando tentei abrir uma solução hoje, o Visual Studio 2015 marcou cada projeto no gerenciador de soluções com falha de carga . A janela de saída "solução" relatou a seguinte exceção, uma vez por projeto:

C:\Users\Path\To\My\Project\Foo.csproj : error : The expression "[System.IO.Path]::Combine("C:\Users\My Name\Documents\Visual Studio 2010\Projects", obj\Debug\Fakes)" cannot be evaluated. Illegal characters in path. C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Fakes\Microsoft.QualityTools.Testing.Fakes.targets

Tentando abrir mais algumas soluções, descobri que o Visual Studio agora relata esses erros para qualquer projeto que tente abrir.

Eu redefino todas as configurações do Visual Studio, o que não resolveu o problema. O Microsoft Fakes parece ser uma estrutura de simulação para fins de teste (corrija-me se estiver errado); os projetos não continham nenhum teste, nem eu acessei o Fakes intencionalmente.

Não estou ciente de ter alterado nada relacionado ao Visual Studio ou as soluções em questão desde ontem, quando tudo ainda funcionava. Minha instalação paralela do Visual Studio 2010 ainda funciona bem e pode carregar as soluções e projetos.

Como experiência, editei o arquivo mencionado na mensagem de erro Microsoft.QualityTools.Testing.Fakes.targets , particularmente a seguinte linha:

<FakesIntermediatePath>$([System.IO.Path]::Combine('$(ProjectDir)','$(IntermediateOutputPath)Fakes'))</FakesIntermediatePath>

Substitui '$(ProjectDir)' por uma string constante; isso faz com que o Visual Studio carregue os projetos novamente, mas, como não tenho certeza sobre qual é o objetivo desse script, hesito em usar essa solução alternativa. Isso também sugere que o valor de $(ProjectDir) pode conter caracteres inválidos, o que não consegui confirmar. Também estou me perguntando por que o diretório intermediário do Fakes pode ser colocado diretamente no diretório em que o Visual Studio coloca seus projetos.

    
por waldrumpus 31.08.2015 / 13:51

1 resposta

2

Ao digitar a pergunta, encontrei a causa do problema.

Embora eu não tenha alterado nenhuma configuração do Visual Studio ontem, o que fiz foi adicionar uma variável de ambiente chamada PROJECTDIR que apontava para o diretório de projetos do Visual Studio 2010. O script deve ter acessado essa variável em vez de sua própria. Depois de renomear a variável de ambiente, o Visual Studio é capaz de carregar os projetos novamente.

Essa é a razão pela qual a Fakes tentou configurar seu diretório intermediário no meu diretório Documents\Visual Studio 2010\Projects , em vez de em um subdiretório do projeto real. Em retrospectiva, parece óbvio, mas na época eu simplesmente não fazia a conexão entre uma variável de ambiente do sistema e uma variável usada por um script "alvos".

Ainda estou postando isso aqui porque esse tipo de interação costuma ser difícil de detectar, e talvez esse post possa trazer alguns problemas para alguém no futuro.

    
por 31.08.2015 / 13:51