Я работаю над набором проектов, которые поддерживались в течение нескольких лет и видели ряд обновлений версий Visual Studio. В результате мы получаем ряд ссылок на версии, которые приводят нас в замешательство, когда мы строим проекты на «свежих» клиентских разработчиках, без сбоев всех старых версий.
Например:
C: \ Repos \ MyOldProject.csproj (415,3): ошибка MSB4019: импортированный проект "C: \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ WebApplications \ Microsoft.WebApplication.targets"не был найден. Убедитесь, что путь в объявлении правильный, и что файл существует на диске.
Как вы можете ожидать, указанный файл не существует на диске. Глядя на указанное место в файле проекта, я нахожу это:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
... И над этим:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Любопытно, что я не могу найти никаких примеров "v11.0 "в любых моих решений или проектов. Имея операторы условия в игре, я не могу с уверенностью сказать, имеет ли $(VSToolsPath)
исходное значение, или если он слипается в этой точке!
Могу ли я найти источник этихтипы переменных?
Есть ли способ заставить MssBuild.exe вывести окончательное значение этих переменных?
-S