7

有谁知道激活功能时将资源文件部署到 Web 应用程序的 App_GlobalResource 文件夹的最佳方法?

4

5 回答 5

9

感谢大家的回答,但 SharePoint 2010 的最佳解决方案如下:

  • 添加新项目 > 模块
  • 复制(或)在那里添加您的资源文件
  • 将每个资源文件的“部署类型”属性更改为 appGlobalResource
  • 将“部署位置 > 路径”属性更改为空,以便资源文件正确部署到 Web 应用程序下的“App_GlobalResources”

在此处输入图像描述

于 2011-04-17T09:42:14.840 回答
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 帐户访问。

于 2009-02-17T17:41:28.610 回答
2

除非您执行某些代码并启动将文件复制到每个 Web 前端服务器上的 App_GlobalResources 文件夹的 SharePoint 计时器作业,否则无法通过功能部署应用程序资源文件。

您应该让 SharePoint 解决方案框架将 .RESX 文件部署到每台服务器上的 App_GlobalResources 文件夹。您可以在 WSP 解决方案包的 manifest.xml 文件中指定应用程序资源文件,如下所示:

<?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>

当您使用 STSADM 或管理中心部署 WSP 解决方案包时,SharePoint 解决方案框架将启动一个计时器作业,将这些文件部署到您决定将解决方案部署到的所有 Web 应用程序的 App_GlobalResources 文件夹中。

于 2008-11-17T18:54:29.360 回答
2

对于 SharePoint 2010,您需要更改 XML 节点名称,以便将其复制到新的 App_GlobalResources 文件夹,而不是 C:\inetpub\wwwroot\wss\VirtualDirectories\80 MSDN 链接中的 Resource 文件夹:http: //msdn.microsoft.com/ zh-CN/图书馆/ms463158.aspx

例子:

<Solution SolutionId="{8a2f91f2-db85-4eb3-8e7c-330f05246e1a}"
          DeploymentServerType="WebFrontEnd"
          xmlns="http://schemas.microsoft.com/sharepoint/">
    <ApplicationResourceFiles>
        <App_GlobalResourceFile Location="yourResourceFile.resx"/>
    </ApplicationResourceFiles>
于 2012-06-26T22:18:27.503 回答
0

我们最近在农场安装中遇到了同样的问题。不幸的是,在清单中添加 ApplicationResourceFile 条目只会将您的资源添加到 Resources 文件夹中。

虽然您可以使用 stsadm -o copyappbincontent 手动将资源文件从 Resources 部署到 App_GlobalResources(必须在每个前端服务器上发出),但我们最终创建了一个计时器作业来手动复制文件,如下所述

于 2009-02-13T19:26:35.577 回答