Внешняя ошибка сборки VS2013 "ошибка MSB4019: импортированный проект <путь> не найден"
Я создаю проект через командную строку, а не внутри Visual Studio 2013. Заметьте, я обновил свой проект с Visual Studio 2012 до 2013 года. Проект строится в среде внутри IDE. Кроме того, я полностью удалил VS2012, перезагрузил и установил VS2013. Единственная версия Visual Studio, которая у меня есть, - 2013 Ultimate.
ValidateProjects:
39>path_to_project.csproj(245,3): error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
39>Done Building Project "path_to_project.csproj" (Clean target(s)) -- FAILED.
Вот две строки, о которых идет речь:
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
Первоначальная вторая строка была v10.0, но я вручную изменил ее на v12.0.
$(VSToolsPath) удлиняется от того, что я вижу в папке v11.0 (VS2012), которой, очевидно, больше нет. Путь должен был соответствовать v12.0.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\WebApplications\
Я попытался указать VSToolsPath в таблице переменных среды системы, но внешняя сборка по-прежнему использует v11.0. Я попытался выполнить поиск в реестре и ничего не придумал.
К сожалению, я не вижу простого способа получить точную командную строку. Я использую инструмент построения.
Мысли?
Ответы
Ответ 1
У меня была такая же проблема и найти более легкое решение
Это связано с тем, что Vs2012 добавляет в файл csproj эту часть:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Вы можете безопасно удалить эту часть, и ваше решение будет построено.
Как Сиелу указал, вы должны убедиться, что файл .proj начинается с <Project ToolsVersion="12"
в противном случае при следующем открытии проекта с визуальной студией 2010, он снова добавит удаленный node.
иначе, если вам нужно использовать webdeploy или вы используете сервер сборки, вышеуказанное решение не будет работать, но вы можете указать свойство VisualStudioVersion
в своей сборке script:
msbuild myproject.csproj /p:VisualStudioVersion=12.0
или отредактируйте определение сборки:
![edit build definition to specify the <code>VisualStudioVersion</code> property]()
Ответ 2
У меня тоже было это, и вы можете исправить это, установив версию инструментов в определение сборки.
Это очень легко сделать. Откройте определение сборки и перейдите на страницу Процесс. Затем в группе 3. Дополнительно вы обладаете свойством " Аргументы MSBuild". Поместите параметр там со следующим синтаксисом
/p:VisualStudioVersion=12.0
Если у вас больше параметров, отделите их пробелом, а не запятой.
Ответ 3
Это тесно связано, но может или не может исправить конкретную проблему OP. В моем случае я пытался автоматизировать развертывание сайта Azure с помощью VS2013. Однако создание и развертывание через VS-работы, используя MSBuild, показало аналогичную ошибку вокруг "целей". Оказывается, MSBuild отличается от VS2013 и теперь является частью VS, а не.NET Framework (см. Http://timrayburn.net/blog/visual-studio-2013-and-msbuild/). В основном, используйте правильную версию MSBuild:
OLD, VS2012
C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe
NEW, VS2013
C:\Program Files (x86)\MSBuild\12.0\bin\msbuild.exe
Новые, VS2015
C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe
Новейшие, VS2017 (не полностью тестируемые, но обнаруженные - они немного переместились)
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe
Ответ 4
Я получил ответ от Kinook, который дал мне ссылку :
В принципе, мне нужно вызвать следующее до завершения. Я предполагаю, что Visual Studio 2013 автоматически не регистрирует среду, но 2012 сделал, или я сделал и забыл.
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
Надеюсь, этот пост поможет кому-то еще.
Ответ 5
giammin solution частично неверно. Вы НЕ ДОЛЖНЫ удалить всю вашу PropertyGroup из своего решения. Если вы это сделаете, функция MSBuild "DeployTarget = Package" перестанет работать. Эта функция основана на настройке VSToolsPath.
<PropertyGroup>
<!-- VisualStudioVersion is incompatible with later versions of Visual Studio. Removing. -->
<!-- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> -->
<!-- VSToolsPath is required by MSBuild for features like "DeployTarget=Package" -->
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
...
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
Ответ 6
У меня была эта проблема для наших целей FSharp (FSharpTargetsPath был пуст).
Многие из путей построены со ссылкой на версию VS.
По разным причинам наша сборка работает с системными привилегиями, а переменная среды "VisualStudioVersion" была установлена (установщиком VS 2013) на уровне "пользователя" - что достаточно справедливо.
Убедитесь, что переменная окружения "VisualStudioVersion
" установлена на "12.0
" на уровне (система или пользователь), в котором вы работаете.
Ответ 7
Запуск этого в командной строке также устранит проблему.
SETX VisualStudioVersion "12.0"
Ответ 8
Если вы переносите Visual Studio 2012 на 2013 год, откройте файл проекта .csprorj с edior.
и отметьте элемент "Инструменты" тега "Project".
Это значение 4.0
Вы делаете это до 12.0
-
С
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0"
-
Для
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0"
Или Если вы создаете с помощью msbuild, просто укажите свойство VisualStudioVersion
msbuild/p:VisualStudioVersion = 12.0
Ответ 9
Я использовал внешнюю сборку. Подумайте о чем-то вроде муравьев, если я правильно понял продукт, просто коммерческую версию. Я должен был связаться с производителем для ответа.
Как оказалось, в проекте есть глобальный макрос, DEVSTUDIO_NET_DIR. Мне пришлось изменить путь к .Net там. Они перечисляют различные версии визуальной студии как "Действия", которые меня пропускают, но все дороги возвращаются к одной глобальной переменной за кулисами. Я бы назвал это дефектом продукта, если бы у меня был свой путь, если я не упустил что-то в своем понимании. Исправлена ошибка, связанная с исправлением пути.
Ответ 10
У меня установлена Visual Studio 2013. Это сработало для меня:
<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' != ''">12.0</VisualStudioVersion>`
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>
Итак, я изменил условие от ==
до !=
и значение от 10.0
до 12.0
.
Ответ 11
У меня была аналогичная проблема. Все предлагаемые решения просто работают вокруг этой проблемы, но не решают проблему ошибки. Решение @giammin не должно применяться, если вы используете сервер сборки tfs, поскольку он просто разрушает функцию публикации. @cat5dev решение - решает проблему, но не решает ее источник.
Я почти уверен, что вы используете шаблон процесса сборки для VS2012, как
ReleaseDefaultTemplate.11.1.xaml or DefaultTemplate.11.1.xaml
эти шаблоны сборки были созданы для VS2012 и $(VisualStudioVersion), установленных в 11.0
Вы должны использовать шаблон процесса сборки для VS2013
ReleaseTfvcTemplate.12.xaml or TfvcTemplate.12.xaml
, у которого $(VisualStudioVersion) установлено значение 12.0
Это работает без каких-либо изменений в файле проекта.
Ответ 12
У меня также была такая же ошибка.. Я сделал это, чтобы исправить ее
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />
измените на
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
и это сделано.
Ответ 13
В моем случае я просто прокомментирую следующую строку, открыв файл .csproj и выполнив трюк
. <!-- <Import Project="..\PRPJECTNAME.targets" /> -->
Моя проблема может быть другой, но меня тянут сюда, но это может помочь кому-то.
Я выбрал один веб-проект из своего решения и попытался открыть его как самостоятельный проект, который делал проблему, после того как я выше, могу решить проблему.
Ответ 14
В моем случае среда dev - VS2013, и я использую TFS 2010. Build была нацелена на .NET 4.5.1. Я настраивал автоматическую сборку для CI. всякий раз, когда я пробовал обходные решения, упомянутые выше, - например, полностью удалять группу свойств или заменять некоторые строки и т.д. Моя сборка используется в TFS, но моя публикация в azure используется для отказа с "MSDeploy" или иногда с какой-то другой ошибкой.
Я не мог достичь одновременно.
Итак, мне пришлось передать аргумент MSBuild, чтобы решить проблему.
Перейти к Редактировать определение сборки > Процесs > 3. Дополнительно > Аргументы MSBuild (установлены в)/p:VisualStudioVersion=12.0
Это сработало для меня.
Ответ 15
Скопировать папку WebApplications
из C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0 \
в C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\
Ответ 16
вы найдете
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets
в файле csproj, для которого появляется эта ошибка. Просто удалите это из csproj и затем создайте.
Ответ 17
Для решения проблемы необходимо выполнить только одно: обновить TeamCity до версии 8.1.x или выше, поскольку поддержка Visual Studio 2012/2013 и MSBuild Tools 2013 была введена только в TeamCity 8.1. После того, как вы обновили TeamCity, измените настройку версии MSBuild Tools на шаге сборки, и проблема исчезнет. Для получения дополнительной информации читайте здесь: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html
Ответ 18
Me - ничего не помогло в изменении значения v11.0 переменной VisualStudioVersion до версии 10.0. Изменение переменной в файле .csproj не помогло. Установка его командой commandt не сделала. Etc...
Закончено копирование моей локальной папки этой конкретной версии (v11.0) на мой сервер сборки.
Ответ 19
Я попробовал все вышеупомянутые решения и до сих пор не повезло. Я слышал, как люди устанавливали визуальную студию на своих серверах сборки, чтобы исправить ее, но у меня было всего 5 гб свободного места, поэтому я просто скопировал C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio на мой сервер сборки и назвал его днем, Начинал работать после этого, используя команду city 9.x и визуальную студию 2013 года.
Ответ 20
На основе сервера сборки TFS 2015
Если вы встретите эту ошибку ... Error MSB4019: The imported project "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\WebApplications\Microsoft.WebApplication.targets" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk.
Откройте файл .csproj
проекта, указанного в сообщении об ошибке, и закомментируйте раздел ниже
<!-- <PropertyGroup> -->
<!-- <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> -->
<!-- <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> -->
<!-- </PropertyGroup> -->
Ответ 21
Я получил эту ошибку, когда устанавливаю некоторые компоненты VS. К сожалению, ни один из этих ответов мне не помог. Я использую TFS для разработки команд, и у меня нет прав на редактирование определения сборки. Я решил эту проблему, удалив переменные среды, которые называются VS110COMNTOOLS
и VS120COMNTOOLS
. Я думаю, что он был установлен с моими VS-компонентами.
Ответ 22
Я обнаружил, что у меня отсутствует папка WebApplications на моем локальном ПК, не устанавливалась с Visual Studio 2017, как это было при использовании 2012 года.
Ответ 23
В моем случае я использовал неправильную версию MSBuild.exe
.
Версия, которую вам нужно использовать, зависит от того, какую версию Visual Studio вы использовали для создания своего проекта. В моем случае мне понадобилось 14.0 (с использованием Visual Studio 2015).
Это было найдено по адресу:
C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe
Вы можете посмотреть:
C:\Program Files (x86)\MSBuild
Найти другие версии.