SharePoint 2010: настройка локальной среды разработки из производственных данных - не удалось загрузить файл или сборку из-за недопустимого PublicKeyToken

Я пробовал несколько способов передать производственный контент SharePoint в мою недавно установленную локальную среду разработки, которая работает на виртуальной машине Windows Server 2008 R2. После того, как экспорт фермы и восстановление не удалось, я наткнулся на это сообщение в блоге и следовал этим инструкциям: http://richardstk.wordpress.com/2012/02/03/build-a-sharepoint-2010-development-test-environment/. Подводя итог, можно сказать, что в основном выполняется резервное копирование действующей базы данных контента SQL, а также баз данных Profile, Sync и Social, а затем их восстановление на компьютере разработчика и указание SharePoint использовать эти новые базы данных вместо старых. Затем после этого я развернул пользовательские веб-части на сервере разработки из Visual Studio.

Я сделал это, и это, казалось, работало довольно хорошо. Я могу получить доступ к центральному администратору, а также настроить соединение SharePoint в Visual Studio и видеть все страницы, списки, документы и т. Д. Так что это определенно указывает на новую базу данных контента. Следует отметить, что я также могу подключиться через SharePoint Designer и получить доступ ко всем нужным материалам, мастер-страницам, спискам и т. Д.

Проблема, с которой я сталкиваюсь, заключается в том, что я получаю ошибку "Не удалось загрузить файл или сборку", когда я захожу на сайт в браузере, и он переходит в /Pages/Home.aspx. Файл представляет собой пользовательскую веб-часть, которую я развернул из Visual Studio. Когда я смотрю в GAC, я вижу сборку в списке, но PublicKeyToken отличается от того, который показан в сообщении об ошибке.

Когда я углубляюсь в это, я вижу, что пользовательский элемент управления зарегистрирован на моей главной странице, и когда я смотрю на файл ascx в каталоге _controltemplates, где он находится, появляется сборка, которая выглядит следующим образом:

<%@ Assembly Name="BlogRoll, Version=1.0.0.0, Culture=neutral, PublicKeyToken=529e9730fe2a198d" %>

Этот PublicKeyToken подходит для живого сайта, когда я смотрю в GAC, но когда я развернул его в своем локальном GAC, он создал новый PblicKeyToken. Извините, если я болтаю, но я не был уверен, что было актуально, а что нет.

Я думаю, мой вопрос, как справиться с этим? Кажется неумным менять все файлы ascx локально, чтобы они соответствовали новым PublicKeyToken, которые есть у меня в локальном GAC, потому что тогда, когда я разверну эти изменения, они не найдут подходящую сборку. Каков наилучший способ справиться с этим?

ОБНОВИТЬ

В рассматриваемом коде есть файл key.snk, который используется для его строгой подписи. Насколько я понимаю, это должно сделать так, чтобы он каждый раз компилировался с определенным PublicKeyToken и, следовательно, устанавливался в GAC с определенным PublicKeyToken. Если это так, то я полагаю, что единственная причина, по которой в моей среде разработки будут отличаться маркеры ключей, заключается в том, что предоставленный файл key.snk неверен. Это правда?

1 ответ

Вы можете использовать WSP Builder или WinGac для принудительного развертывания сборки с правильным PublicKeyToken в вашем локальном GAC.

Другие вопросы по тегам