Внешняя ошибка сборки 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

Найти другие версии.