Рубрики
sharepoint

SharePoint 2010 + VS 2012 + VisualWebPart = невозможно

Столкнулся с необходимостью добавить в проект SharePoint веб-часть VisualWebPart (веб-часть с ascx контролом) в Visual Studio 2012. Оказалось, что это не так просто. Студия далеко не всегда корректно работает с проектом SharePoint (надеюсь, баги будут правиться, вот и 13я студия вышла), хотя надо отметить что по сравнению с версией 2010 сделан большой шаг вперёд в плане удобства добавления новых частей в проект.

Суть проблемы: при добавлении в проект Visual Web Part из шаблонов модулей, предлагаемых студией, ascx файл контрола не генерируется, и кроме того появляется ошибка неописанного метода InitializeControls().

После пары часов тщетных попыток скопировать другую веб-часть и переименовать, перенести веб-часть из пустого проекта, удалить CKSDev, перезагрузить компьютер… в сети я наткнулся на решение проблемы от, как мне кажется, восходящей звезды SharePoint трабл киллинг блоггинга Anatoly Mironov http://chuvash.eu/2012/09/20/the-original-visual-web-part-template-is-missing-in-visual-studio-2012/. Автору огромное спасибо!

Решение. Вот краткий перевод и пересказ оригинала. Решение проблемы состоит в замене шаблона для Visual Web Part в vs2012 версией шаблона из vs2010.
Шаги:

1. Скопировать в отдельное место zip-файл из папки со студией 2010 (взять с компьютера со студией 2010 или по ссылке из статьи) и разархивировать:
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\SharePoint\SharePoint14\1033\
SharePoint14VisualWebPart.zip

2. Изменить в файле SharePointVisualWebPart.vstemplate версию сборки на 11 (для 12ой студии). Должно выглядеть так:
Microsoft.VisualStudio.SharePoint.ProjectExtensions.Wizards, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

3. Нужно на всякий случай забекапить оригинальный шаблон. Переименовываем — добавляем окончание .bak в папках 12ой студии файлу SharePointVisualWebPart.vstemplate:
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\SharePoint\SharePoint14\1033\
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplatesCache\CSharp\SharePoint\SharePoint14\1033\

4. В те же 2 папки скопировать шаблон студии 2010 (с изменённым на шаге 2 файлом):
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplates\CSharp\SharePoint\SharePoint14\1033\
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\ItemTemplatesCache\CSharp\SharePoint\SharePoint14\1033\