Почему я получаю сообщение об ошибке "Цель 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>
в файл проекта. Я до сих пор понятия не имею о том, что происходит.
Это сработало для меня исправить - собрать все файлы, чтобы опубликовать ошибку
- Щелкните правой кнопкой мыши проект и выберите "Изменить" (имя проекта).csproj. (например, Редактировать в блокноте)
- Ищу
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Добавьте следующее над строкой.
<PropertyGroup> <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">13.0</VisualStudioVersion> <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath> </PropertyGroup>
Сохранить и перезагрузить проект.
Я столкнулся с этой проблемой в VS 2017 и попытался вручную изменить файл csproj, как предложено здесь, и ни одно из предложенных исправлений не помогло мне. Я наткнулся на этот пакет Nuget. Установка у меня сработала.
htt ps://www.nuget.org/packages/MSBuild.Microsoft.VisualStudio.Web.targets/
Та же проблема с VS2017. Вы можете попробовать это, это сработало для меня.
- Выгрузите проект и отредактируйте файл csproj
поиск по ключевому слову "WebApplication.targets"
<Import Project="...\WebApplications\Microsoft.WebApplication.targets" ... >
КОММЕНТАРИЙ или УДАЛИТЕ эту строку (может быть две строки в зависимости от "Условие")
- Сохранить и перезагрузить проект
На этом этапе вам будет предложено установить пакет размером около 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 перед установкой нового.
С уважением,
Мин Сюй.