Почему я получаю сообщение об ошибке "целевой объект GatherAllFilesToPublish не существует"?
недавно я установил новые средства разработки Azure для Visual Studio 2010 с пакетом обновления 1. Каждый раз, когда я пытаюсь опубликовать существующий сайт (с помощью развертывания файловой системы) я получаю следующую ошибку:
целевой объект "GatherAllFilesToPublish" не существует в проекте.
может ли кто-нибудь сказать мне, чего мне не хватает?
спасибо
18 ответов:
ребята, мне очень жаль, что вы столкнулись с этой проблемой.
Я думаю, что я знаю, в чем дело. При установке пакета SDK для Azure биты, он устанавливает некоторые против веб-публикации обновлений. Один из этих обновлений файла по адресу C:\Program файлы (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.Значение webapplication.цели. В зависимости от того, как определяется наша установка если этот файл имеет обновленную метку времени (по какой-либо причине), то при установке нового компонента файл не будет получить обновление.
чтобы решить эту проблему, вы должны быть в состоянии выполнить следующие действия:
- переименовать Microsoft.Значение webapplication.целей в Microsoft.Значение webapplication.цели.бак
- установка / ремонт с помощью exe в http://go.microsoft.com/fwlink/?LinkId=253458
вы можете попробовать его и дайте мне знать, если это работает или нет?
У меня была эта проблема, и она была исправлена путем добавления:
<Target Name="GatherAllFilesToPublish"> </Target>в файл проекта. Я до сих пор понятия не имею, что происходит.
это сработало для меня исправить - собрать все файлы для публикации ошибка
- щелкните правой кнопкой мыши проект и выберите Редактировать (название проекта).csproj. (например, редактировать в блокноте)
- искать
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />добавить следующее выше строки.
<PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">13.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup>сохранить и перезагрузить проект.
удаление этих установок решило проблему для меня:
- Microsoft Web Publish-Visual Web Developer Express 2010
- Microsoft Web Publish-Visual Studio 2010
у меня была аналогичная проблема, когда я хотел опубликовать свой ASP.Net приложение для Windows Azure. После многих проб и ошибок наконец-то этой решение работает для меня. Это не требует никакого переименования файлов или любой установки / переустановки исправлений / патчей. Вот что вам нужно сделать:
откройте ASP.Net файл проекта (.csproj) в Wordpad / Notepad и найдите строку, похожую на эту:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="'$(Solutions.VSVersion)' == '8.0'" />заменить его на строку как приведено ниже:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
У меня была аналогичная проблема, и я решил ее с помощью шагов, предоставленных Sayed.
файл, который я переименовал, был в каталоге v10.0.
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets.исходный файл, который был там, был датирован 18-Jan-2011, после переименования его с a .расширения bak затем переустановили KB2591016, публикация, похоже, снова работает. Новая дата файла Microsoft.Значение webapplication.цели теперь 11-авг-2011.
Я понимаю это в старом вопросе, но я столкнулся с ним недавно, и вот как я его решил.
фон: у меня был старый проект, который я обновил до VS studio 13. Похоже, что файл проекта не был обновлен должным образом.
в файле csproj есть ссылки на VS v10.0, но я запускаю VS 13, который действительно "v12.0".
поэтому я сказал файлу csproj использовать папку" v12.0", а не папку" v10.0".
это то, что я имел:
<PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(SolutionDir)\..\BuildTools\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(SolutionDir)\..\BuildTools\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />это то, что я изменил его на:
<PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">12.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />теперь моя публикация в файловой системе работает!
я боролся с той же проблемой с Visual Studio 2013 (и 2015).
решающим решением для меня было добавить
VSToolsPathпараметр свойства, который отсутствовал в моем файле проекта, по какой-либо причине.Я добавил его в
у меня была такая же ошибка. Почему-то эта линия отсутствовала.
<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />добавил его чуть ниже
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />отлично работает сейчас
У меня такая же проблема в VS2013, решение, которое я нашел, было путем создания нового пустого проекта веб-приложения, может скопировать следующие строки из него в мой старый проект веб-сайта: Наверху:
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)$(MSBuildToolsVersion)\Microsoft.Common.props')" /> <PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />
щелкните правой кнопкой мыши проект и выберите Редактировать (название проекта).csproj. (например, редактировать в блокноте) Искать Добавить следующее выше строки.
13.0 $(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion) Сохраните и перезагрузите проект.
Это действительно работает для меня, спасибо
для Visual Studio 2017 - он должен быть добавлен после блока в поле .файл csproj, используйте блокнот и ищите ".цели", чтобы найти его...
Я создал новый проект vs 2017 и это работает для меня (без предупреждения):
<PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" /> <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" /> <Target Name="MvcBuildViews" AfterTargets="AfterBuild" Condition="'$(MvcBuildViews)'=='true'"> <AspNetCompiler VirtualPath="temp" PhysicalPath="$(WebProjectOutputDir)" /> </Target>
та же проблема с VS2017. Вы можете попробовать это, это сработало для меня.
- выгрузите проект и отредактируйте файл csproj
поиск по ключевому слову " WebApplication.цели"
<Import Project="...\WebApplications\Microsoft.WebApplication.targets" ... >прокомментируйте или удалите эту строку.(может быть, две строки в зависимости от "условия")
- сохранить и перезагрузить проект
на этом шаге вам будет предложено установить какой-либо пакет около 500M...
после этого перезагрузите проект, тогда это работает!
Я думаю, я просто пропустил некоторые компоненты, когда я устанавливаю VS 2017.
также я замечаю, что путь MSBuild совсем другой в VS2017, но, возможно, это не связано с проблемой, потому что он использует относительный путь в файле csproj..
решение Sayed не работает в моем проекте, который был обновлен с помощью VS2012. Но этой работала
Если редактирование в VS2012 (Visual Studio 2012) проект VS2010 попробуйте это. Отредактируйте файл csproj из:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />и заменить на:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v11.0\WebApplications\Microsoft.WebApplication.targets" />
поскольку проблема не может быть воспроизведена на моей стороне, я хотел бы предложить вам попробовать переустановить SDK.
пожалуйста, попробуйте удалить старый SDK полностью перед установкой нового.
С Уважением,
Мин Сюй.
та же проблема, которую я исправил. Пожалуйста, проверьте, если некоторые файлы отсутствуют в решении. если вы столкнулись с ошибкой типа
Error - The target "GatherAllFilesToPublish" does not exist in the project.тогда просто откройте .proj файл и удалить эту строку<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />вы получаете фактическую ошибку или эти отсутствующие файлы в решение
Я столкнулся с этой проблемой с VS 2017, и я попытался вручную изменить файл csproj, как предложено здесь, и ни одно из предложенных исправлений не сработало для меня. Я наткнулся на этот пакет NuGet. Установка его работала для меня.
Comments