1

Когда я попытался открыть решение сегодня, Visual Studio 2015 пометил каждый проект в обозревателе решений как неудачный. Окно вывода "решения" сообщило о следующем исключении, один раз для проекта:

C:\Users\Path\To\My\Project\Foo.csproj: error: выражение "[Система.IO.Path]:: Combine(«C:\Users\ Мое имя \ Documents \ Visual Studio 2010 \Projects», obj \ Debug \ Fakes) не может быть оценено. Нелегальные персонажи в пути. C:\ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v14.0 \ Fakes \ Microsoft.QualityTools.Тестирование.Fakes.targets

Пытаясь открыть еще несколько решений, я обнаружил, что Visual Studio теперь сообщает об этих ошибках для любого проекта, который пытается открыть.

Я сбросил все настройки Visual Studio, которые не решили проблему. Microsoft Fakes, похоже, является фальшивой средой для тестирования (поправьте меня, если я ошибаюсь); проекты не содержали никаких тестов, и я не обращался к Fakes преднамеренно.

Я не знаю, что изменило что-либо, связанное с Visual Studio или рассматриваемыми решениями, со вчерашнего дня, когда все еще работало. Моя параллельная установка Visual Studio 2010 по-прежнему работает нормально и может загружать решения и проекты.

В качестве эксперимента я отредактировал файл, упомянутый в сообщении об ошибке, Microsoft.QualityTools.Тестирование.Fakes.targets, особенно следующая строка:

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

Я заменил '$(ProjectDir)' на постоянную строку; это заставляет Visual Studio снова загружать проекты, но, поскольку я не уверен, какова цель этого сценария, я не решаюсь использовать этот обходной путь. Также это говорит о том, что значение $(ProjectDir) может содержать недопустимые символы, что я не смог подтвердить. Мне также интересно, почему промежуточный каталог Fakes может быть размещен непосредственно в каталоге, в котором Visual Studio размещает свои проекты.

1 ответ1

2

При наборе вопроса я нашел причину проблемы.

Хотя вчера я не менял никаких настроек Visual Studio, я добавил переменную среды PROJECTDIR которая указывала на мой каталог проектов Visual Studio 2010. Сценарий должен был получить доступ к этой переменной вместо ее собственной. После переименования переменной среды Visual Studio снова может загружать проекты.

Именно поэтому Fakes попытался установить свой промежуточный каталог в моем каталоге Documents\Visual Studio 2010\Projects , а не в подкаталоге реального проекта. Оглядываясь назад, это кажется очевидным, но в то время я просто не установил связь между системной переменной среды и переменной, используемой сценарием "target".

Я все еще публикую это здесь, потому что такого рода взаимодействие часто трудно обнаружить, и, возможно, этот пост спасет кого-то от проблем в будущем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .