Ошибка внешней сборки 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)MSBuildMicrosoftVisualStudiov11.0WebApplicationsMicrosoft.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)WebApplicationsMicrosoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)MicrosoftVisualStudiov12.0WebApplicationsMicrosoft.WebApplication.targets" Condition="false" />

исходная вторая строка была v10.0, но я вручную изменил это на В12.0.

$(VSToolsPath) удлиняется от того, что я вижу до v11.Папка 0 (VS2012), которой, очевидно, больше нет. Путь должен быть до 12.0.

C:Program Files (x86)MSBuildMicrosoftVisualStudiov12.0WebApplications

Я попытался указать VSToolsPath в моей таблице переменных среды системы, но внешняя утилита сборки все еще использует v11.0. Я попытался найти в реестре, и это ничего не дало.

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

мысли?

23 ответов


у меня была такая же проблема и найти более простое решение

это связано с добавлением Vs2012 в файл csproj этой части:

<PropertyGroup>
  <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

вы можете безопасно удалить эту часть, и ваше решение будет построено.

As Sielu указал вы должны убедиться, что .начало файла proj с <Project ToolsVersion="12" в противном случае при следующем открытии проект с visual studio 2010, он снова добавит удаленный узел.

в противном случае, если вы необходимо использовать webdeploy или использовать сервер сборки вышеуказанное решение не будет работать, но вы можете указать VisualStudioVersion свойство в вашем скрипте сборки:

msbuild myproject.csproj /p:VisualStudioVersion=12.0

или отредактируйте определение сборки:

edit build definition to specify the <code>VisualStudioVersion</code> property


У меня тоже было это, и вы можете исправить это, установив версию tools в определении сборки.

Это очень легко сделать. Откройте определение сборки и перейдите к "


это тесно связано, но может или не может исправить конкретную проблему OPs. В моем случае я пытался автоматизировать развертывание сайта Azure с помощью VS2013. Однако при построении и развертывании через VS works использование MSBuild показало аналогичную ошибку вокруг "целей". Оказывается, MSBuild отличается от VS2013 и теперь является частью VS, а не .NET Framework (см.http://timrayburn.net/blog/visual-studio-2013-and-msbuild/). В принципе, используйте правильную версию В MSBuild:

СТАРЫЙ, В VS2012

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

NEW, VS2013

C:\Program Files (x86)\MSBuild.0\bin\msbuild.exe

новее, VS2015

C:\Program Files (x86)\MSBuild.0\Bin\msbuild.exe

новее еще, VS2017 (не полностью тестирование, но обнаружено - они немного переместили вещи)

C:\Program Files (x86)\Microsoft Visual Studio17\Professional\MSBuild.0\Bin\msbuild.exe

Я только что получил ответ от Kinook, который дал мне ссылке:

в основном, мне нужно вызвать следующее до bulding. Я предполагаю, что Visual Studio 2013 автоматически не регистрирует среду сначала, Но 2012 сделал, или я сделал и забыл.

call "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86

надеюсь, этот пост поможет кому-то еще.


giammin это - это частично неправильно. Вы НЕ СЛЕДУЕТ удалите всю эту PropertyGroup из вашего решения. Если вы MSBuild в "DeployTarget=пакет" функция перестанет работать. Эта функция полагается на "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)' != ''" />

у меня была эта проблема для наших целей FSharp (FSharpTargetsPath был пуст).

многие пути построены со ссылкой на версию VS.

по разным причинам наша сборка выполняется с системными привилегиями, а переменная среды "VisualStudioVersion" была установлена только (установщиком VS 2013) на уровне "пользователь", что достаточно справедливо.

убедитесь, что "VisualStudioVersion "переменная окружения имеет значение"12.0 " на уровне (система или пользователь), который ты бежишь.


запуск этого в командной строке также исправит проблему. SETX VisualStudioVersion "12.0"


при переносе Visual Studio 2012 в 2013 откройте *.файл проекта csprorj с edior.
и проверьте элемент ToolsVersion тега "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


Я использовал внешнюю утилиту сборки. Подумайте о чем-то вроде муравьев, если я правильно понимаю продукт, просто коммерческая версия. Я должен был связаться с производителем для ответа.

Как оказалось, в проекте есть глобальный макрос DEVSTUDIO_NET_DIR. Мне пришлось изменить путь к .Net там. Они перечисляют различные версии visual studio как "действия", которые через меня выключены, но все дороги ведут обратно к этой глобальной переменной за кулисами. Я бы перечислил это как дефект против продукта, если бы у меня был свой путь, если я не упускаю что-то в своем понимании. Исправление пути там Исправлена проблема сборки.


у меня установлена Visual Studio 2013. Это сработало для меня:

<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' != ''">12.0</VisualStudioVersion>`
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
</PropertyGroup>

Итак, я изменил условие с == to != и значение 10.0 to 12.0.


у меня была аналогичная проблема. Все предлагаемые решения просто работают для этой проблемы, но не решают источник ошибки. решение @giammin не должно применяться, если вы используете сервер сборки tfs, так как это просто сбой функции публикации. @cat5dev solution-решает проблему, но не решает ее источник.

я почти уверен, что вы используете шаблон процесса сборки для 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

это работает без каких-либо изменений в файл проекта.


у меня тоже была такая же ошибка .. Я сделал это, чтобы исправить это

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />

заменить на

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v12.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

и это делается.


в моем случае я просто комментарий ниже линии открытия .csproj файл и сделал трюк

.<!-- <Import Project="..\PRPJECTNAME.targets" /> -->

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

Я выбрал один веб-проект из своего решения и попытался открыть его как автономный проект, который делал проблему, после того, как выше heck смог решить проблему.


в моем случае среда разработки-VS2013, и я использую TFS 2010. Сборка была предназначена для .NET 4.5.1. Я настраивал автоматическую сборку для CI. всякий раз, когда я пробовал обходные пути, упомянутые выше, - Например, полностью удалить группу свойств или заменить некоторые строки и т. д. моя сборка происходила в TFS, но моя публикация в azure обычно завершалась с ошибкой "MSDeploy" или иногда с другой ошибкой. Я не смог достичь и того, и другого одновременно.

поэтому, наконец, мне пришлось передать аргумент MSBuild для решения вопрос.

Goto изменить определение сборки > процесс > 3. Дополнительно > Аргументы MSBuild (задано значение) /p:VisualStudioVersion=12.0

Это сработало для меня.


вы должны скопировать папки WebApplications из файлов C:\Program (для x86)\MSBuild в папке\Microsoft\VisualStudio\V12 объемом.0\ к C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v11.0\


вы найдете

C:\Program Files  (x86)\MSBuild\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets 

в файле csproj, для которого эта ошибка появляется. Просто удалите это из csproj, а затем создайте.


для решения проблемы необходимо сделать только одно: обновить TeamCity до версии 8.1.x или выше, поскольку поддержка Visual Studio 2012/2013 и MSBuild Tools 2013 была представлена только в TeamCity 8.1. После того, как вы обновили настройки версии инструментов TeamCity изменить MSBuild в вашем шаге сборки соответственно и проблема исчезнет. Подробнее читайте здесь: http://blog.turlov.com/2014/07/upgrade-teamcity-to-enable-support-for.html


Me-ничто не помогало в изменении v11.0 значение переменной VisualStudioVersion для v10.0. Изменение переменной .файл csproj не сделал. Настройка его через команду promt не сделала. Etc...

закончил копирование моей локальной папки этой конкретной версии (v11.0) на мой сервер сборки.


Я попробовал все вышеперечисленные решения и до сих пор не повезло. Я слышал, как люди устанавливали visual studio на своих серверах сборки, чтобы исправить это, но у меня было только 5gb свободных мест, поэтому я просто скопировал C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio на мой сервер сборки и назвал его днем. После этого начал работать, используя team city 9.x и visual studio 2013.


на основе TFS 2015 Build Server

Если вы встречаете эту ошибку ... 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> -->


Я получил эту ошибку при установке некоторых компонентов VS. К сожалению, ни один из этих ответов мне не помог. Я использую TFS для разработки команд, и у меня нет разрешений на редактирование определения сборки. Я решил эту проблему, удалив переменные среды, которые назывались VS110COMNTOOLS и VS120COMNTOOLS. Я думаю, что он был установлен с моими компонентами VS.


Я обнаружил, что мне не хватает папки WebApplications на моем локальном ПК, не устанавливался с Visual Studio 2017, как это было, когда я использовал 2012.


В моем случае я использовал неправильный вариант MSBuild.exe.

версия, которую необходимо использовать, зависит от версии Visual Studio, используемой для создания проекта. В моем случае мне нужен 14.0 (используя Visual Studio 2015).

это было найдено на сайте:

C:\Program Files (x86)\MSBuild.0\Bin\msbuild.exe

вы можете ознакомиться в разделе:

C:\Program Files (x86)\MSBuild

найти другие варианты.