2009-03-12 1 views
3

Я сделал много решений (wsp) для SharePoint 2007, и я почти автоматизировал все шаги установки, но есть одна вещь, которую я не могу автоматизировать.Как разместить файлы resx в папке App_GlobalResources с помощью решений (wsp)?

Как я могу сделать решение, которое размещает ресурсы (resx) в папке App_GlobalResources виртуального приложения?

Заранее спасибо.

ответ

6

Вам необходимо написать Feature Receiver, который копирует файлы, потому что нет возможности развернуть их непосредственно через файлы конфигурации SharePoint.

Я нашел этот блог полезен, когда я должен был сделать это: SharePoint Resources, Types, Use and Deployment

2

Рамка решения не поддерживает развертывание в папку App_GlobalResources.

Вам необходимо написать таймер для SharePoint, который копирует файлы. Программа timerjob запускается на всех серверах i фермы, поэтому каждый сервер будет копировать файлы ресурсов. Что вы должны знать о контексте (учетной записи домена), вы запускаете свой таймер. Чтобы запустить timerjob, вам нужно использовать учетную запись фермы - учетной записи, которая запускает веб-приложение, недостаточно (в том числе RunWithElevated ...) - короткая короткая история - запустите таймер из функции af Farm или скрытую функцию SiteCollection (Скрытый функции выполняются как учетная запись фермы).

Найти больше вдохновения здесь:

Creating Custom Timer Jobs in Windows SharePoint Services 3.0

SharePoint Resources, Types, Use and Deployment (ссылка DylanW называют)

+0

не кажется ли вам, что timerjob не является правильным решением? Как сказано здесь, это решение похоже на использование стрельбы, чтобы убивать мух (извините за перевод с испанского на английский). – jaloplo

+0

В одной конфигурации сервера вы можете просто написать код для копирования файлов непосредственно в приемнике функций. Но при настройке нескольких серверов единственный способ убедиться, что файлы ресурсов будут скопированы на каждом сервере, - это таймерjob –

+0

, поскольку timerjob запускается на каждом сервере, а код работает только на сервере, функция включена.Существует альтернативное решение, в котором вы используете сшивание функций (также упоминается в ссылках на ресурсы SharePoint, типы, использование и развертывание), но я считаю, что timerjob - лучшее решение для работы. –

1

Вы можете использовать команду CopyAppBinContent Stsadm, которая копирует файлы frpm 12/Ресурсы для App_GlobalResources. Поэтому ваш WSP (проект VS) должен поместить ваши файлы resx в эту папку. Я использую решение, где я фактически размещаю свои файлы resx в папке «Ресурсы» в корне .csproj (просто чтобы избежать странных пространств имен, которые поставляются с размещением их в 12/Resources), а затем XCopy (файлы resx) на 12/Ресурсы при создании.

CopyAppBinContent затем добавляется в процесс развертывания (шаг в файле .bat).

У экземпляра CopyAppBinContent есть некоторые проблемы при запуске на ферме, и для этого я использую настраиваемое SPJobDefinition, которое запускает эту команду в ферме.

1

Я добавил Resx файл в папку App_GlobalResources щелкнув правой кнопкой мыши проект и выбрав: - Добавить новый элемент - пустой элемент под названием «Resources» - Затем добавьте новый Resx файл вновь созданных «ресурсов» папка - Тогда на Resx файле изменить «Тип развертывания» на «» AppGlobalResource

Matt

Смежные вопросы