在激活时将资源文件部署到App_GlobalResource文件夹

web*_*res 6 sharepoint resources

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

Mou*_*awa 8

感谢所有人的答案,但作为SharePoint 2010的最佳解决方案如下:

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

在此输入图像描述


web*_*res 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>
Run Code Online (Sandbox Code Playgroud)

实际上,这确实将文件放入了“资源”文件夹中。因此,我们只需通过代码从那里访问资源,如下所示:

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

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    AddResource(resX, "DefaultTextBoxLabelText");
Run Code Online (Sandbox Code Playgroud)

我们在构造函数中运行此代码,并将资源文件中的条目添加到本地字典中。您必须使用 RunWithElevatedPrivileges,因为创建的新“资源”文件夹只能由 AppPool 帐户访问。