Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sharepoint 如何使用解决方案(wsp)将resx文件放置在App_GlobalResources文件夹中?_Sharepoint_Sharepoint 2007_Resources_Resx_Wsp - Fatal编程技术网

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

Sharepoint 如何使用解决方案(wsp)将resx文件放置在App_GlobalResources文件夹中?,sharepoint,sharepoint-2007,resources,resx,wsp,Sharepoint,Sharepoint 2007,Resources,Resx,Wsp,我已经为SharePoint 2007制作了很多解决方案(wsp),并且几乎自动化了所有需要的安装步骤,但有一件事我无法自动化 我如何制定将资源(resx)文件放置在虚拟应用程序的App_GlobalResources文件夹中的解决方案 提前感谢。您需要编写一个复制文件的功能接收器,因为无法通过SharePoint配置文件直接部署这些文件 当我不得不这样做时,我发现这篇博文很有用:解决方案框架不支持部署到App\u GlobalResources文件夹 您需要编写一个SharePoint tim

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

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


提前感谢。

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


当我不得不这样做时,我发现这篇博文很有用:

解决方案框架不支持部署到App\u GlobalResources文件夹

您需要编写一个SharePoint timerjob来复制文件。timerjob在服务器场中的所有服务器上运行,因此每个服务器都将复制资源文件。 您应该知道运行timerjob的上下文(域帐户)。要启动timerjob,您需要使用服务器场帐户-运行web应用程序的帐户不够(包括RunWithElevated…)-长话短说-从af服务器场功能或隐藏站点集合功能启动timerjob(隐藏功能作为服务器场帐户运行)

在这里找到更多灵感:


(引用的链接DylanW)

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

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


CopyAppBinContent在服务器场上运行时会出现一些问题,因此我使用了一个自定义SPJobDefinition来处理在服务器场中启动该命令的问题。

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


马特

你不认为计时作业不是正确的解决方案吗?就像这里所说的,这个解决方案就像用枪声杀死苍蝇一样(很抱歉将西班牙语翻译成英语)。在一个服务器设置中,您只需编写一些代码就可以直接在功能接收器中复制文件。但在多服务器设置中,确保在每台服务器上复制资源文件的唯一方法是使用timerjob,因为timerjob在每台服务器上运行,而代码仅在激活该功能的服务器上运行。还有另一种解决方案,您可以使用功能绑定(也在SharePoint资源、类型、使用和部署链接中提到),但我认为timerjob是这项工作的最佳解决方案。好吧,您的论点说服了我。还有一个问题,让这个作业执行一次,或者是一个更好的每日计划??一次就可以了-但是,如果您更新资源文件,那么它们就不会被复制(因为计时器作业不会运行)。因此,制作一个可以毫无困难地停用/激活的功能,以便控制操作