如何使用解决方案(wsp)将resx文件放在App_GlobalResources文件夹中?

时间:2009-03-12 13:07:30

标签: sharepoint sharepoint-2007 resources resx wsp

我为SharePoint 2007制作了很多解决方案(wsp),我几乎已经完成了所需的所有安装步骤,但有一件事我无法自动化。

如何制作将资源(resx)文件放在虚拟应用程序的App_GlobalResources文件夹中的解决方案?

提前致谢。

4 个答案:

答案 0 :(得分:6)

您需要编写一个复制文件的功能接收器,因为无法通过SharePoint配置文件直接部署它们。

我发现这篇博文在我必须这样做时很有用:SharePoint Resources, Types, Use and Deployment

答案 1 :(得分:2)

解决方案框架不支持部署到App_GlobalResources文件夹。

您需要编写一个复制文件的SharePoint计时器。 timerjob在服务器场中的所有服务器上运行,因此每个服务器都将复制资源文件。 您应该注意的是运行timerjob的上下文(域帐户)。要启动timerjob,您需要使用一个服务器场帐户 - 运行Web应用程序的帐户是不够的(这包括RunWithElevated ...) - 长话短说 - 从af功能或隐藏的SiteCollection功能启动timerjob(隐藏功能作为服务器场帐户运行。)

在这里找到更多灵感:

Creating Custom Timer Jobs in Windows SharePoint Services 3.0

SharePoint Resources, Types, Use and Deployment(DylanW所指的链接)

答案 2 :(得分:1)

您可以使用stsadm命令CopyAppBinContent将文件frpm 12 / Resources复制到App_GlobalResources。因此,您的WSP(VS项目)需要将您的resx文件放在该文件夹中。我正在使用一个解决方案,我实际上将我的resx文件放在.csproj根目录中名为Resources的文件夹中(只是为了避免将它们放在12 / Resources中的奇怪命名空间),然后将它们(resx文件)XCopy到12 /我建立时的资源。

然后将CopyAppBinContent添加到部署过程(.bat文件中的一个步骤)。

CopyAppBinContent在服务器场上运行时遇到一些问题,并且我使用自定义SPJobDefinition处理服务器场中的该命令。

答案 3 :(得分:1)

我通过右键单击项目并选择以下内容将一个resx文件添加到App_GlobalResources文件夹: - 添加新项目 - 名为'资源'的空元素 - 然后将新的resx文件添加到新创建的“Resources”文件夹中 - 然后在resx文件上将“部署类型”更改为“AppGlobalResource”

马特