Как разместить файлы resx в папке App_GlobalResources с помощью решений (wsp)?
Я разработал множество решений (wsp) для SharePoint 2007 и почти автоматизировал все необходимые шаги установки, но есть одна вещь, которую я не могу автоматизировать.
Как создать решение, которое помещает файлы ресурсов (resx) в папку App_GlobalResources виртуального приложения?
Заранее спасибо.
4 ответа
Вам нужно написать Feature Receiver, который копирует файлы, потому что нет способа развернуть их напрямую через файлы конфигурации SharePoint.
Я нашел эту запись в блоге полезной, когда мне пришлось сделать это: ресурсы SharePoint, типы, использование и развертывание
Платформа решения не поддерживает развертывание в папку App_GlobalResources.
Вам нужно написать SharePoint TimeJob, который копирует файлы. Timejob выполняется на всех серверах фермы, поэтому на каждый сервер будут скопированы файлы ресурсов. То, что вы должны знать, - это контекст (учетная запись домена), в которой вы запускаете свой timerjob. Для запуска таймера необходимо использовать учетную запись фермы - недостаточно учетной записи, которая запускает веб-приложение (включая RunWithElevated...) - короткая история - запустить таймер из функции фермы или скрытой функции SiteCollection (скрыто) функции работает как учетная запись фермы).
Найдите больше вдохновения здесь:
Создание пользовательских заданий таймера в Windows SharePoint Services 3.0
Ресурсы, типы, использование и развертывание SharePoint (ссылка на DylanW)
Вы можете использовать команду stsadm CopyAppBinContent, которая копирует файлы со страницы 12/Resources в App_GlobalResources. Таким образом, ваш WSP (проект VS) должен поместить файлы resx в эту папку. Я использую решение, в котором я на самом деле помещаю мои файлы resx в папку с именем Resources в корне.csproj (просто чтобы избежать странных пространств имен, которые возникают при размещении их в 12/Resources), а затем XCopy их (файлы resx) для 12 / Ресурсы, когда я строю.
Затем CopyAppBinContent добавляется в процесс развертывания (шаг в файле.bat).
У CopyAppBinContent есть некоторые проблемы при запуске на ферме, и для решения этой проблемы я использую пользовательское SPJobDefinition, которое обрабатывает запуск этой команды в ферме.
Я добавил файл resx в папку App_GlobalResources, щелкнув правой кнопкой мыши по проекту и выбрав: - Добавить новый элемент - Пустой элемент под названием "Ресурсы" - Затем добавьте новый файл resx во вновь созданную папку "Ресурсы" - Затем в файле resx измените "Тип развертывания" на "AppGlobalResource"
Matt