Почему я получаю сообщение об ошибке "Цель GatherAllFilesToPublish не существует"?

Недавно я установил новые средства разработки Azure для Visual Studio 2010 с пакетом обновления 1. Каждый раз, когда я пытаюсь опубликовать существующий веб-сайт (используя развертывание файловой системы), я получаю следующую ошибку:

Цель "GatherAllFilesToPublish" не существует в проекте.

Может кто-нибудь сказать мне, что мне не хватает?

Спасибо

18 ответов

Решение

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

Я думаю, что я знаю, в чем проблема. При установке битов Azure SDK устанавливаются некоторые обновления веб-публикации VS. Одно из этих обновлений - файл в C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets. Исходя из того, как определяется наша установка, если этот файл имеет обновленную временную метку (по какой-либо причине), то при установке нового компонента файл не обновляется.

Чтобы решить эту проблему, вы должны выполнить следующие шаги:

  • Переименуйте Microsoft.WebApplication.targets в Microsoft.WebApplication.targets.bak
  • Установите / восстановите, используя exe-файл на http://go.microsoft.com/fwlink/?LinkId=253458

Можете ли вы попробовать и дайте мне знать, если это работает или нет?

У меня была эта проблема, и она была исправлена ​​путем добавления:

<Target Name="GatherAllFilesToPublish">
</Target>

в файл проекта. Я до сих пор понятия не имею о том, что происходит.

Это сработало для меня исправить - собрать все файлы, чтобы опубликовать ошибку

  1. Щелкните правой кнопкой мыши проект и выберите "Изменить" (имя проекта).csproj. (например, Редактировать в блокноте)
  2. Ищу <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  3. Добавьте следующее над строкой.

    <PropertyGroup> 
     <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">13.0</VisualStudioVersion>
     <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
    </PropertyGroup>
    
  4. Сохранить и перезагрузить проект.

Я столкнулся с этой проблемой в VS 2017 и попытался вручную изменить файл csproj, как предложено здесь, и ни одно из предложенных исправлений не помогло мне. Я наткнулся на этот пакет Nuget. Установка у меня сработала.

htt ps://www.nuget.org/packages/MSBuild.Microsoft.VisualStudio.Web.targets/

Та же проблема с VS2017. Вы можете попробовать это, это сработало для меня.

  1. Выгрузите проект и отредактируйте файл csproj
  2. поиск по ключевому слову "WebApplication.targets"

     <Import Project="...\WebApplications\Microsoft.WebApplication.targets" ... >
    

    КОММЕНТАРИЙ или УДАЛИТЕ эту строку (может быть две строки в зависимости от "Условие")

  3. Сохранить и перезагрузить проект

На этом этапе вам будет предложено установить пакет размером около 500M...

После этого перезагрузите проект, тогда все заработает!

Я думаю, я просто скучаю по некоторым компонентам, когда я устанавливаю VS 2017.

Также я заметил, что MSBuild Path в VS2017 сильно отличается, но, возможно, это не связано с проблемой, потому что он использует относительный путь в файле csproj.

Удаление этих установок решило проблему для меня:

  • Веб-публикация Microsoft - Visual Web Developer Express 2010
  • Веб-публикация Microsoft - 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" />

У меня была такая же проблема: я создал проект в VS 2010, и пришлось публиковать из VS 2019. Ни одно из решений здесь не помогло мне, и я занимался этой проблемой около дня.

Что работало по этой ссылке: http://www.dotnetxp.com/visual-studio-error-publish-target-gatherallfilestopublish-not-exist-project/

Вот что я сделал:

** Выгруженный проблемный проект.

** Откройте файл csproj в текстовом редакторе.

** Найдите эту строку

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />

и замените этим. я использую16.0 потому что это версия, которую я использую (vs2019).

<PropertyGroup>
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">16.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\v16.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

** Перезагрузите проект и опубликуйте.

Работал как шарм.

Я понимаю это в старом вопросе, но недавно столкнулся с ним, и вот как я решил это.

Предыстория: у меня был старый проект, который я обновил до 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)' != ''" />

Теперь моя публикация в файловой системе работает!

У меня была похожая проблема, и я решил ее, используя шаги, предоставленные Сайедом.

Файл, который я переименовал, был в каталоге v10.0.

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

Исходный файл, который был там, был датирован 18 января 2011 года, после переименования его с расширением.bak, а затем переустановки KB2591016, публикация, похоже, снова работает. Новая дата файла Microsoft.WebApplication.targets теперь 11 августа 2011 года.

Я боролся с той же проблемой с Visual Studio 2013 (и 2015).

Решающим для меня решением было добавить VSToolsPath настройка свойства, которая отсутствовала в моем файле проекта, по любой причине.

Я добавил это в <PropertyGroup> директива:

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

Примечание: мой файл проекта также ссылается на версию v10.0 Microsoft.WebApplication.targets файл, но это вроде бы нормально.

У меня была такая же ошибка. Каким-то образом эта строка отсутствовала.

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Добавил это чуть ниже

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

Теперь работает нормально

Для Visual Studio 2017 - его следует добавить после блока в файле.csproj, использовать блокнот и искать ".targets", чтобы найти его...

Я создал новый проект 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>

У меня та же проблема в 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) Сохранить и перезагрузить проект.

Это действительно работает для меня, спасибо

Решение Саида не сработало в моем проекте, который был обновлен с использованием 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" />

Та же проблема, которую я исправил. Пожалуйста, проверьте, отсутствуют ли некоторые файлы в решении. если вы сталкиваетесь с ошибкой, как Error - The target "GatherAllFilesToPublish" does not exist in the project. Затем просто откройте файл.proj и удалите эту строку <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="false" />

Вы получаете фактическую ошибку или отсутствующие файлы в решение

Поскольку проблема не может быть воспроизведена на моей стороне, я хотел бы предложить вам попытаться переустановить SDK.

Пожалуйста, попробуйте полностью удалить старый SDK перед установкой нового.

С уважением,

Мин Сюй.

Другие вопросы по тегам