1

我们有一个由 WSP 文件部署的 SharePoint 计时器作业。该作业由 SharePoint 功能安装,其 dll 放置在 GAC 上。每个其他 SharePoint 自定义都由另一个 WSP 文件部署,该文件位于 SharePoint 站点的 bin 文件夹中,而不是 GAC 上。

SharePoint 计时器作业由服务 Windows SharePoint Services 计时器 (OWSTIMER.EXE) 执行,并且没有任何 http 或 SharePoint 上下文。

如果作业有任何外部引用,我们也必须将每个引用的 dll 都放在 GAC 上。但是,我们不能这样做,因为服务器策略不允许 GAC 部署除作业 dll 之外的任何其他内容......

然后,我们的团队手动复制并粘贴将被引用的代码,并将其放入作业项目中,并构建一个巨大的独特 dll。这种复制过程造成了各种各样的麻烦,因为有时代码在工作内部变得不同步。尽管如此,复制从来都不是一件美好的事情,我们知道当我们因此而死时,我们会直接下地狱。

是否可以部署作业而不在 gac 上部署其引用?或者是否可以将引用的 dll 合并到一个唯一的 dll 中?或者如果其他一切都失败了,是否可以构建项目以便在编译时复制引用的代码?

谢谢你的先进。

4

2 回答 2

3

真正的问题是您的服务器管理员全面禁止 GAC 部署用于作业 DLL 以外的任何内容。没有考虑其影响,没有什么比政策更好的了;)

这方面的创可贴是ILMerge

ILMerge 是一个实用程序,可用于将多个 .NET 程序集合并为一个程序集。ILMerge 采用一组输入程序集并将它们合并到一个目标程序集中。

这将允许您将您的作业程序集和所有相关程序集合并到一个超级作业程序集以进行部署 - 比手动复制和粘贴代码要好得多。另外,您可以在后期构建步骤中执行此操作,以便将其全部内置到您的构建过程中。

于 2010-12-18T14:46:11.923 回答
-1

为什么引用的dll不能放在bin目录下?当然可以。

于 2010-12-17T17:22:37.430 回答