我有一个包含一些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停止牵制隐含的引用?
答案 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