4

我有一个 utils 类库项目,其中包含一些 Sharepoint 功能。项目引用Microsoft.Sharepoint.dll(复制本地设置为 false)。我们有许多其他项目引用了我们的 utils dll,每当我们构建它们时,它们Microsoft.Sharepoint.Sandbox.dll都会被复制到这些应用程序的 bin 文件夹中。然后在运行任何应用程序时出现以下错误:

Could not load file or assembly 'Microsoft.Sharepoint.Sandbox' or one of its dependencies. An attempt was made to load a program with an incorrect format.

删除 dll 解决了问题。有没有办法阻止这个 Microsoft.Sharepoint.Sandbox.dll 被复制到 bin 文件夹中?我不想使用构建后脚本,因为有很多项目引用了 utils 项目,而且我们仍然需要在部署时手动删除 dll。

我可以复制如下:

1)创建一个新的解决方案

2)添加一个名为utils的类库项目

3) 参考 Microsoft.Sharepoint.dll

4)Class1.cs:

namespace Utils
{
    public class Class1
    {

        public void testMeth()
        {
            Microsoft.SharePoint.DefaultItemOpen c; 
        }
    }
}

5) 在解决方案中添加一个新的 Web 项目 (WebApplication1)

6)引用Utils项目并尝试运行WebApplication1

编辑: Microsoft.Sharepoint.Sandbox 是一个 64 位 dll,但我需要针对任何 CPU。

有没有办法告诉 VS 停止跨越隐式引用?

4

3 回答 3

2

将 Microsoft.Sharepoint.Sandbox.dll 程序集添加到 GAC 怎么样?根据MSDN

如果您部署/复制包含对在 GAC 中注册的自定义组件的引用的应用程序,则无论“复制本地”设置如何,该组件都不会随应用程序一起部署/复制。有关详细信息,请参阅项目参考

更新。 如果您以任何 CPU 为目标,则可以编写一个 powershell 或 bat 脚本来枚举所有 bin 文件夹并删除所有 Microsoft.Sharepoint.Sandbox.dll

于 2012-07-23T10:22:45.053 回答
1

尝试进入项目属性屏幕。构建选项卡。将“平台目标”更改为 x64

于 2012-07-18T15:56:24.873 回答
0

根据Louis Liang的这篇博文,解决方法是添加构建后事件并删除 DLL:

cd $(TargetDir)
del Microsoft.SharePoint.SandBox.dll
于 2012-11-19T02:43:54.253 回答