Чому я отримую повідомлення про помилку "Цільовий GatherAllFilesToPublish не існує"?


78

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

Ціль "GatherAllFilesToPublish" у проекті не існує.

Хтось може сказати мені, чого мені не вистачає?

Дякую


У мене така сама проблема, я видалив інструменти, але поки не зміг її виправити
Едуардо Кампаньо

Це також відбувається при локальній побудові до файлової системи. Гаряче у відповіді Саєда спрацювало на мене.
Адам Цукерман

Це мені не вдалося :( Я використовую VS 2013.
kulNinja

Потрапляючи сюди з VS2019 - проблема все ще існує.
Крістіан

Відповіді:


82

Я думаю, що знаю, в чому проблема. Коли ви встановлюєте біти Azure SDK, він встановлює деякі оновлення VS Web Publish. Одне з цих оновлень файлу за адресою

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

Залежно від того, як визначається наше налаштування, якщо цей файл має оновлену позначку часу (з якоїсь причини), тоді при встановленні нового компонента файл не оновлюється.

Щоб вирішити цю проблему, ви повинні мати можливість виконати наведені нижче дії:


1
Як сказав Спринкл, файли знаходяться в папці v10.0, але зробили трюк! Дякую!
Зенука

2
Я не змінював Microsoft.WebApplication.targets, але HotFix працював у мене.
Брайан

4
У мене спрацювало після того, як я застосував виправлення, закрив Visual Studio і знову відкрив його знову, щоб набути чинності.
Джефф

1
Прикро те, що ця відповідь взяла на себе результати пошуку цієї помилки, хоча вона стосується лише 2010 року - чи є рішення для інших версій VS?
Джордж Мауер

3
для мене навіть після закриття VS скаже, що KB2591016 не застосовується або заблокований іншою умовою на вашому комп'ютері
Іман

72

У мене була ця проблема, і її виправили, додавши:

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

до файлу проекту.


1
Це спрацювало для мене, але створює додаткову папку під назвою Резервне копіювання та створює до неї резервну копію файлу. Проклятий VS 2013 глючить
PhillyNJ

1
Це вирішило проблему для мене у VS2013. Не бачу жодної зайвої папки Backup, згадану @PhilVallone
Олександр Пучков

6
Я спробував це. Помилка зникла, але всі файли .cs також були опубліковані. Я вважаю, це тому, що ви додаєте лише заглушку. Ця відповідь не є виправленням кореневої проблеми, це обхідний шлях.
chiccodoro 03.03.15

2
Працював у мене. Переконайтеся, що при додаванні цілі його не слід коментувати.
kulNinja

2
це вирішило проблему і для мене. Щоб усі зрозуміли, для реалізації цього потрібно клацнути правою кнопкою миші проект (не рішення) у Visual Studio, вибрати «Вивантажити проект», потім ще раз клацнути правою кнопкою миші та вибрати «Редагувати <назва проекту>», потім після цього <Target ....> у файл та збережіть його, закрийте файл, а потім клацніть правою кнопкою миші ще раз і виберіть «Перезавантажити проект». Потім протестуйте свою публікацію ще раз і переконайтесь, що вона працює
mknopf

46

Це мені вдалося виправити - зібрати всі файли для публікації помилки

  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. Зберегти та перезавантажити проект.


13? Я не уявляю, чому це могло б спрацювати. Чи не є остання версія Visual Studio 2013 у реальній версії 12?
Матіас Ліккегор Лоренцен

2
Так і сталося. Я використовую VS 2013.
PhillyNJ

1
Я використовував версію мого VS - $ (VisualStudioVersion) вже повинен бути визначений, тому він, можливо, пропустить цей рядок. VSToolsPath - це те, що насправді зробило для мене.
Matt DeKrey

3
Це мені це виправило. Проект ASP.NET MVC у VS2013
Яанс

3
Я зіткнувся з цією помилкою зі 100% свіжою установкою VS2015 на свіжу інсталяцію Windows. Цей допис це виправив для мене, за винятком того, що вам доведеться змінити 13.0 на 14.0. Дякую тоні @PhillyNJ!
Салони

9

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

  • Microsoft Web Publish - Visual Web Developer Express 2010
  • Веб-публікація Microsoft - Visual Studio 2010

Довідково


Я спробував все інше в цій публікації ... дуже здивований, що це не було позначено як відповідь, це спрацювало для мене! Дякую :)
Шон Хадді,

1
У мене немає жодної з цих програм, що запускає Visual Studio 2015
Іман,

9

Я зіткнувся з цією проблемою з VS 2017, і я спробував вручну змінити файл csproj, як запропоновано тут, і жодне із запропонованих виправлень не працювало для мене. Я натрапив на цей nuget-пакет. Встановлення його спрацювало для мене.

MSBuild.Microsoft.VisualStudio.Web.targets


Дуже дякую! Це спрацювало для мене. І я думав, що це буде один із ТІХ днів.
Тімоті Канскі

Дякую! Наведена вище пропозиція, яка говорить про додавання вузла Target до файлу проекту, включає занадто багато файлів, і я погоджуюсь з коментарями щодо того, що це обхідний шлях, а не рішення. Здається, це публікується саме так, як очікувалося після встановлення цього пакета Nuget. Знову дякую!
zpert

5

У мене була подібна проблема, коли я хотів опублікувати свою програму 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" />

Будь ласка, спробуйте прочитати цей stackoverflow.com/help/deleted-answers , щоб отримати більше розуміння, як не відповідати. А саме: "Відповіді, які принципово не відповідають на питання": ледве більше, ніж посилання на зовнішній сайт
Радім Келер

1
Ти врятував мій день! Я спробував усі інші відповіді, і жодна не вийшла. Виявилося, що в моєму файлі csproj, з якоїсь причини, рядок навіть містив атрибут у буквальній формі Conditon="false". Мені також довелося почистити та відновити проект, перш ніж він запрацював.
chiccodoro 03.03.15

5

Та сама проблема з VS2017. Ви можете спробувати це, мені це вдалося.

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

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

    КОМЕНТУЙТЕ або ВИДАЛІТЬ цей рядок. (Можливо, два рядки залежно від "Стану")

  3. Зберегти та перезавантажити проект

На цьому кроці вам буде запропоновано встановити якийсь пакет приблизно 500M ...

Після цього перезавантажте проект, тоді він працює!

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

Також я помічаю, що шлях MSBuild зовсім інший у VS2017, але, можливо, це не пов'язано з проблемою, тому що він використовує відносний шлях у файлі csproj ..


Найпростіший. Дякую!
Антонін Прохазка,

4

Я усвідомлюю це у старому питанні, але нещодавно зіткнувся з ним, і ось як я це вирішив.

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

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


3

У мене була подібна проблема і я вирішив її, виконавши дії, надані Саєдом.

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

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

Оригінальний файл, що був там, був датований 18 січня 2011 р., Після перейменування його з розширеннями .bak, а потім переінстальованої KB2591016, видається, публікація знову працює. Нова дата файлу Microsoft.WebApplication.targets тепер 11 серпня 2011 року.


3

Я боровся з тією ж проблемою з Visual Studio 2013 (і 2015).

Найважливішим виправленням для мене було додати параметр VSToolsPathвластивості, якого з будь-якої причини не було у моєму проектному файлі.

Я додав це до <PropertyGroup>директиви:

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

Як додаткове зауваження: мій файл проекту також посилається на версію Microsoft.WebApplication.targetsфайлу v10.0 , але, здається, це нормально.


2

У мене була та ж помилка. Якось цього рядка не було.

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

Додав його трохи нижче

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

Зараз чудово працює


У моєму випадку це було <Імпорт проекту = "$ (MSBuildToolsPath32) \ Microsoft.CSharp.targets" />
Джой Ачарія

2

У мене така сама проблема у 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" />

2

Клацніть проект правою кнопкою миші та виберіть Редагувати (назва проекту) .csproj. (наприклад, Редагувати в блокноті) Шукайте Додати нижче над рядком.

13,0 $ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v $ (VisualStudioVersion) Збереження та перезавантаження проекту.

Це справді працює для мене, дякую


2

Для 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>

2

У мене була та ж проблема: я створив проект у програмі 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" />

** Перезавантажте проект та опублікуйте.

Працював як оберіг.


1

Рішення Саєда не працювало в моєму проекті, який був оновлений за допомогою VS2012. Але це спрацювало


1

Якщо редагуєте у 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" />

1
рядок може виглядати як <Імпорт проекту = "$ (MSBuildExtensionsPath32) \ Microsoft \ VisualStudio \ v10.0 \ WebApplications \ Microsoft.WebApplication.targets" condition = 'false' /> він працював у мене, дякую @SushiGuy
Kashif R

0

Оскільки проблему не вдається відтворити на моїй стороні, я хотів би запропонувати вам спробувати перевстановити SDK.

Спробуйте повністю видалити старий SDK, перш ніж встановлювати новий.

З найкращими побажаннями,

Мін Сю.


Я повністю видалив інструменти та перевстановив, але це, здається, не спрацювало. Я повністю видалив нові інструменти (Windows Azure SDK для .NET) і повернувся до використання старих (поточних) функцій публікації Visual Studio 2010 SP1.
Джо

1
Чому все так глючить? Серйозно. Я очікував від Microsoft більше.
Матіас Ліккегор Лоренцен,

0

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

Ви отримуєте фактичну помилку або ті відсутні файли у вирішенні

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.