如何阻止Microsoft.Sharepoint.Sandbox.dll被复制到我的bin文件夹中?

时间:2012-07-11 15:08:58

标签: asp.net sharepoint build project post-build-event

我有一个包含一些Sharepoint功能的utils类库项目。项目引用Microsoft.Sharepoint.dll(copy local设置为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文件夹中? 我不想使用post build脚本,因为有很多项目引用了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停止牵制隐含的引用?

3 个答案:

答案 0 :(得分:2)

如何将Microsoft.Sharepoint.Sandbox.dll程序集添加到GAC? 根据{{​​3}}:

  

如果部署/复制包含对a的引用的应用程序   在GAC中注册的自定义组件,该组件不会   无论Copy Local如何,都可以使用应用程序进行部署/复制   设置。有关详细信息,请参阅MSDN

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

根据this blog post by Louis Liang,解决方法是添加后期构建事件并删除DLL:

cd $(TargetDir)
del Microsoft.SharePoint.SandBox.dll