В прошлый раз я описал причину этой ошибки. Оказалось что это не единственный источник ошибки.
Эта ошибка возникает при публикации проекта предназначенного для разворачивания в Windows Azure. Для того чтоб было с чем экспериментировать создал проект AzureApp, содержащий WebRole – проект MvcApplication1. Загрузить его можно отсюда.
Связана она с тем что на билд сервере отсутствует каталог:
32-bit Windows
\Program Files\MSBuild\Microsoft\VisualStudio\v10.0\Web\
- 64-bit Windows
\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\Web\
В нем должно присутствовать 5 файлов:
Microsoft.Web.Publishing.Tasks.Dll
Microsoft.Web.Publishing.targets
Microsoft.Web.Publishing.AllFilesInProjectFolder.targets
Microsoft.Web.Publishing.AllFilesInTheProject.targets
Microsoft.Web.Publishing.OnlyFilesToRunTheApp.targets
Конечно можно один раз сложить файлы в данный каталог и не беспокоиться, но лишь до того времени когда интеграционная сборка проекта не будет перенесена на новый сервер. И как назло к этому времени нюанс с Microsoft.Web.Publishing.targets останется только в голове уже уволившегося сотрудника, забывшего описать это в документации к проекту. Для того чтобы избежать этого нужно создать рядом с проектом каталог куда и скопировать вышеприведенные файлы. В моем примере я поместил файлы в каталог Resource. После этого открываем файл проекта MvcApplication1.csproj в любом текстовом редакторе. Я предпочитаю Notepad++. И после 114 строки с добавить следующее:
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets"
Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets')" />
<Import Project="..\Resource\Microsoft.Web.Publishing.targets"
Condition="!Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets')" />
Архив с проектом со всеми модификациями можно скачать тут. После этого можно открыть проект в Visual Studio и проверить работоспособность пункта “Publish”.
Related posts: