Разверните файл ресурса в папке App_GlobalResource при активации - PullRequest
6 голосов
/ 17 ноября 2008

Кто-нибудь знает лучший способ развернуть файл ресурса в папке App_GlobalResource веб-приложения, когда функция активирована?

Ответы [ 5 ]

8 голосов
/ 17 апреля 2011

Спасибо всем за ответы, но лучшим решением для SharePoint 2010 является следующее:

  • Добавить новый товар> Модуль
  • Копировать (или) Добавить туда файлы ресурсов
  • Измените свойство «Тип развертывания» каждого файла ресурсов на appGlobalResource
  • Измените свойство "Расположение развертывания> Путь" на пустое, чтобы файл ресурса правильно развернулся в "App_GlobalResources" в вашем веб-приложении

enter image description here

3 голосов
/ 17 февраля 2009

Итак, в завершение этого вопроса, вот что мы наконец сделали, чтобы полностью автоматизировать этот процесс.

Мы, как было предложено, использовали элемент ApplicationResourceFile в файле манифеста.

<?xml version="1.0" encoding="utf-8"?>
<Solution SolutionId="{185E973C-3A10-4e2a-9E0F-DC14414551F9}"
          xmlns="http://schemas.microsoft.com/sharepoint/"
          DeploymentServerType="WebFrontEnd">
  <ApplicationResourceFiles>
    <ApplicationResourceFile Location="yourappname.resx"/>
    <ApplicationResourceFile Location="yourappname.en-US.resx"/>
  </ApplicationResourceFiles> ...
</Solution>

Это фактически поместило файлы в папку "resources". Итак, мы просто получили доступ к ресурсам оттуда в коде так:

string appPath = HttpContext.Current.Request.MapPath(HttpContext.Current.Request.ApplicationPath);
ResourceManager resX = ResourceManager.CreateFileBasedResourceManager("ResourceFileName", appPath + "resources", null);

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    AddResource(resX, "DefaultTextBoxLabelText");

Мы запускаем этот код в конструкторе и добавляем записи из файла ресурсов в локальный словарь. Вы должны использовать RunWithElevatedPrivileges, потому что новая созданная папка «ресурсы» доступна только для учетной записи AppPool.

2 голосов
/ 27 июня 2012

Для SharePoint 2010 необходимо изменить имя узла XML, чтобы оно копировалось в новую папку App_GlobalResources вместо папки Resource в C: \ inetpub \ wwwroot \ wss \ VirtualDirectories \ 80 Ссылка MSDN: http://msdn.microsoft.com/en-us/library/ms463158.aspx

Пример:

<Solution SolutionId="{8a2f91f2-db85-4eb3-8e7c-330f05246e1a}"
          DeploymentServerType="WebFrontEnd"
          xmlns="http://schemas.microsoft.com/sharepoint/">
    <ApplicationResourceFiles>
        <App_GlobalResourceFile Location="yourResourceFile.resx"/>
    </ApplicationResourceFiles>
2 голосов
/ 17 ноября 2008

Файлы ресурсов приложения не могут быть развернуты с помощью функции, если вы не выполните некоторый код и не запустите задание таймера SharePoint, которое копирует файлы в папку App_GlobalResources на каждом интерфейсном веб-сервере.

Вместо этого следует разрешить инфраструктуре решений SharePoint развернуть файлы .RESX в папке App_GlobalResources на каждом сервере. Вы можете указать файлы ресурсов приложения следующим образом в файле manifest.xml вашего пакета решений WSP:

<?xml version="1.0" encoding="utf-8"?>
<Solution SolutionId="{185E973C-3A10-4e2a-9E0F-DC14414551F9}" 
          xmlns="http://schemas.microsoft.com/sharepoint/" 
          DeploymentServerType="WebFrontEnd">

  <ApplicationResourceFiles>
    <ApplicationResourceFile Location="yourappname.resx"/>
    <ApplicationResourceFile Location="yourappname.en-US.resx"/>
  </ApplicationResourceFiles>

 ...
</Solution>

При развертывании пакета решений WSP с использованием STSADM или центра администрирования среда решений SharePoint запускает задание таймера, которое развертывает эти файлы в папке App_GlobalResources всех веб-приложений, в которых вы решили развернуть решение.

0 голосов
/ 13 февраля 2009

Недавно мы столкнулись с той же проблемой при установке нашей фермы. К сожалению, добавление записей ApplicationResourceFile в манифест приводит только к переводу ваших ресурсов в папку Resources.

В то время как вы можете вручную развернуть файлы ресурсов из ресурсов в App_GlobalResources с помощью stsadm -o copyappbincontent (необходимо выполнить на каждом сервере переднего плана), мы закончили тем, что создали задание таймера для копирования файлов вручную, как указано здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...