Разверните файл ресурсов на папке App_GlobalResource на активации

Я могу немного опоздать, но, скорее всего, следующий XQuery будет делать то, что вы хотите, он возвращает путь к каждому XML-файлу, который не содержит определенного элемента:

let $path := "."
for $file in file:list( $path, true(), '*.xml')
  let $path := $path || "/" || $file
  where not(
    exists(fetch:xml($path)/foo/bar[text() = "Text"])
  )  
return $path 

Если вы были заинтересованы только в том, чтобы в конкретном XML-файле были или не содержали определенный элемент, следующий запрос мог бы быть полезным:

declare variable $path := "/Users/michael/Code/foo";

every $doc in file:list($path, true(), '*.xml') (: returns a sequence of file-names :)
              => for-each(concat($path,"/", ?)) (: returns a sequence of full paths to each file :)
              => for-each(fetch:xml#1)          (: returns a sequence of documents :)
satisfies exists(
  $doc/*/*[text() = "Text"]
)

Надеюсь, это поможет; -)

6
задан webwires 17 November 2008 в 16:11
поделиться

3 ответа

Так, поскольку заключительное продолжение этого вопроса здесь - то, что мы наконец сделали для завершенной автоматизации этого процесса.

Мы, как был предложен, действительно использовали элемент 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>

Это действительно на самом деле помещало файлы в папку "ресурсов". Так, мы просто получили доступ к ресурсам оттуда в коде как так:

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.

3
ответ дан 8 December 2019 в 16:12
поделиться

Мы недавно столкнулись с той же проблемой о нашей установке фермы. К сожалению, добавление записей ApplicationResourceFile в декларации только получает Ваши ресурсы к папке Ресурсов.

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

0
ответ дан 8 December 2019 в 16:12
поделиться

Файлы ресурса приложений не могут быть развернуты через функцию, если Вы не выполняете некоторый код и запускаете задание таймера 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 всех веб-приложений, которых Вы решили развернуть решение.

2
ответ дан 8 December 2019 в 16:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: