MSBuild target PipelinePreDeployCopyAllFilesToOneFolder не может быть найден при развертывании

Развертывание проекта веб-приложения из RTM VS2010 вызывает ошибку в MSBuild. Он жалуется, что цель PipelinePreDeployCopyAllFilesToOneFolder не найдена.

Есть ли способ продолжить диагностику?

Спасибо.

Ответ 1

У меня была такая же проблема, и когда я посмотрел файл .csproj для своего веб-приложения, у меня были следующие строки...

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" Condition="'$(Solutions.VSVersion)' == '8.0'" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v9.0\WebApplications\Microsoft.WebApplication.targets" Condition="'$(Solutions.VSVersion)' == '9.0'" />

Я предполагаю, что это произошло, так как я недавно обновился от VS2008 до VS2010. Таким образом, похоже, что во время процесса преобразования он все испортил. Чтобы исправить это, я просто заменил эти строки...

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

После этого все работало так, как должно.

Ответ 2

Я видел ответ, который дал brodie в нескольких местах в Интернете, что для меня странно, потому что эта задача ( PipelinePreDeployCopyAllFilesToOneFolde r) даже не содержится в этой целевой среде (Microsoft.WebApplication.targets)

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

Если вы действительно заходите и находите этот файл (на машине x64 он находится в C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets, или эквивалент версии 12.0, если вы используете VS2013) и откройте его в средстве просмотра текста, вы увидите его там нет.

Он действительно содержится в файле, о котором упоминает Сайид Ибрагим Хашими, который является файлом Microsoft.Web.Publishing.targets(C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets).

Итак, чтобы получить это в файле MSBuild/.csproj, включите следующее:

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />

Ответ 3

У вас установлена ​​Visual Studio 2010 на компьютере, где вы пытаетесь построить? Если это так, найдите файл, расположенный в % Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets, он должен иметь эту цель. Если это не так, эти файлы, возможно, были повреждены и, вероятно, исправили вашу установку VS 2010, она должна ее исправить.

Я думаю, что цели/задачи Web Deployment поставляются с самим VS, а не с платформой .NET, поэтому вам нужно установить VS (или вы можете вручную настроить машину)/

Ответ 4

Несмотря на то, что это старый пост, он по-прежнему очень помог!

Моя установка использует удаленный хост для автоматизации проекта, построенного в VS2013. Удаленный хост не содержит все цели VS2013, когда вы устанавливаете только MSBuild 12.0, и это привело к тому, что файл Microsoft.Web.Publishing.targets не существует.

Чтобы обойти эту целевую ошибку, мне пришлось скопировать файлы с моего локального пути VS2013 и скопировать ее на удаленный хост в эквивалентном месте.