我目前有一个SharePoint 2010项目,我在其中创建了一个空元素并创建了我的各种资源文件。我已将这些资源设置为AppGlobalResource类型。
这很好用,可以让我访问我的资源值
<asp:Label ID="myLabel" runat="server" Text="<%$Resources:MyResources, MyLabel %>" />
我希望能够做的下一件事是从后面的代码中访问资源值。所以I read要访问值我应该使用SPUtility.GetLocalizedString。
所以我创建了一个如下所示的辅助类。
public static class ResourceHelper
{
public static string GetResourceValue(string resource)
{
var lang = SPContext.Current.Web != null ? SPContext.Current.Web.Language : 1033;
string result = SPUtility.GetLocalizedString("$Resources:" + resource,"RegistrationResource",lang);
return result;
}
}
要使用此方法访问值,我需要允许将我的资源文件部署到配置单元,这很简单。添加映射的SharePoint文件夹并将文件添加到其中。但问题是我现在在同一个项目中有两个版本的文件。所以我尝试使用添加现有然后链接到选项添加资源文件,但它似乎不允许你这样做。
使用SharePoint功能/包部署到配置单元和Global_ResourceFolder而没有多个资源文件副本的最佳方法是什么?
修改 我已经编辑了Package.Template.xml文件,该文件成功地将文件部署到配置单元。但不在Resources文件夹中。如果我修改下面的位置以使用Resources \甚至是Resources /它会出错
错误1部署步骤“添加解决方案”时出错:错误: 找不到清单文件中指定的此文件:
资源\ RegistrationResource.resx 0 0 Company.Sharepoint.Resources
<?xml version="1.0" encoding="utf-8"?>
<Solution xmlns="http://schemas.microsoft.com/sharepoint/">
<RootFiles>
<RootFile Location="RegistrationResource.resx" />
</RootFiles>
</Solution>
答案 0 :(得分:2)
我采用的解决方案如下:
创建一个在预构建时运行的XCOPY命令,用于将资源从Element复制到映射文件夹(如下所示)
xcopy“$(ProjectDir)GlobalResources \ MyResource.resx”“$(ProjectDir)Resources \”/ Y / R
希望这有助于其他人,如果有人有更好的方法,请告诉我!
答案 1 :(得分:0)
岸堤,
在Application Directories的App_GlobalResources文件夹中部署资源文件的最佳方法。
对于此部署,请按照VS2010中的以下步骤进行操作。
然后部署要在其中部署资源文件的项目。
快乐部署...... !!!