Ошибка внешней сборки VS2013 MSB4019: импортированный проект ‹path› не найден
Автор вопроса: Sarah WeinbergerОтветов: 12
Я создаю проект через командную строку, а не внутри 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.
Я попытался указать VSToolsPath в таблице переменных моей системной среды, но утилита внешней сборки по-прежнему использует v11.0. Я попытался выполнить поиск в реестре, но ничего не дал.
К сожалению, я не вижу простого способа использовать точную командную строку. Я использую инструмент для сборки.
Мысли?
Аналогичный вопрос здесь stackoverflow.com/questions/17433904/ Anthony F 15.04.2015
В моем случае мне пришлось указать правильную версию VisualStudioVersion в событии сборки, которое создавалось с целью WebPublish. user145400 06.02.2017
Вы можете безопасно удалить эту часть, и ваше решение будет построено.
Как отметил Сиелу убедитесь, что файл .proj начинается с <Project ToolsVersion="12", иначе при следующем открытии проекта с помощью Visual Studio 2010 удаленный узел снова будет добавлен.
В противном случае, если вам нужно использовать webdeploy или вы используете сервер сборки, вышеуказанное решение не будет работать, но вы можете указать свойство VisualStudioVersion в своем скрипте сборки:
У меня тоже было это, и вы можете исправить это, указав версию инструментов в определении сборки.
Сделать это очень просто. Откройте определение сборки и перейдите на страницу "Процесс". Затем в группе "3. Дополнительно" у вас есть свойство под названием "Аргументы MSBuild". Поместите туда параметр со следующим синтаксисом
/p:VisualStudioVersion=12.0
Если у вас есть другие параметры, разделите их пробелом, а не запятой.
Ответ 3 · рейтинг 51 · Jester
Это тесно связано, но может или не может исправить конкретную проблему OP. В моем случае я пытался автоматизировать развертывание сайта Azure с помощью VS2013. Сборка и развертывание через VS работает, однако использование MSBuild показало аналогичную ошибку в отношении "целей". Оказывается, MSBuild отличается от VS2013 и теперь является частью VS, а не .NET Framework (см. http://timrayburn.net/blog/visual-studio-2013-and-msbuild/). Как правило, используйте правильную версию MSBuild:
Я только что получил ответ от Kinook, который дал мне ссылку:
В принципе, мне нужно позвонить по следующему адресу перед постройкой. Я предполагаю, что Visual Studio 2013 не регистрирует среду автоматически, но 2012 год сделал, или я это сделал и забыл.
call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
<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 · рейтинг 10 · Scott
У меня была эта проблема для наших целей FSharp (FSharpTargetsPath был пуст).
Многие пути построены со ссылкой на версию VS.
По разным причинам наша сборка выполняется с системными привилегиями, а переменная среды "VisualStudioVersion" была установлена (установщиком VS 2013) только на "пользовательском" уровне, что вполне справедливо.
Убедитесь, что для переменной среды "VisualStudioVersion" установлено значение "12.0" на уровне (системном или пользовательском), на котором вы работаете.
Ответ 7 · рейтинг 6 · Steve
Запуск этого в командной строке также решит проблему. SETX VisualStudioVersion "12.0"
Ответ 8 · рейтинг 4 · Kim Ki Won
Если вы переносите Visual Studio 2012 на 2013, откройте файл проекта * .csprorj с помощью edior. и проверьте элемент ToolsVersion тега Project.
Или, если вы строите с помощью msbuild, просто укажите свойство VisualStudioVersion
msbuild /p:VisualStudioVersion=12.0
Ответ 9 · рейтинг 2 · Sarah Weinberger
Я использовал внешнюю утилиту для сборки. Подумайте о чем-то вроде Муравьев, если я правильно понимаю продукт, просто коммерческую версию. Пришлось связаться с производителем для ответа.
Как оказалось, в проекте есть глобальный макрос DEVSTUDIO_NET_DIR. Мне пришлось изменить там путь к .Net. Они перечисляют различные версии визуальной студии как "Действия", которые через меня отключены, но все дороги ведут к этой единственной скрытой глобальной переменной. Я бы перечислил это как дефект продукта, если бы у меня был свой путь, если я не упустил что-то в своем понимании. Исправление пути там устранило проблему сборки.
Ответ 10 · рейтинг 2 · pinus.acer
У меня установлена Visual Studio 2013. Это сработало для меня:
Итак, я изменил условие с == на != и значение с 10.0 на 12.0.
Ответ 11 · рейтинг 2 · Imaginary
У меня была аналогичная проблема. Все предлагаемые решения просто обходят эту проблему, но не устраняют источник ошибки. Решение @giammin не следует применять, если вы используете сервер сборки tfs, поскольку это просто сбой функции публикации. Решение @ cat5dev - решает проблему, но не устраняет ее источник.
Я почти уверен, что вы используете шаблон процесса сборки для VS2012, например ReleaseDefaultTemplate.11.1.xaml or DefaultTemplate.11.1.xaml эти шаблоны сборки были созданы для VS2012, а для $ (VisualStudioVersion) установлено значение 11.0
Вы должны использовать шаблон процесса сборки для VS2013ReleaseTfvcTemplate.12.xaml or TfvcTemplate.12.xaml, для которого $ (VisualStudioVersion) установлено значение 12.0
Это работает без каких-либо изменений в файле проекта.
Ответ 12 · рейтинг 2 · Pyro
У меня тоже была такая же ошибка .. Я сделал это, чтобы исправить