2012-07-11 89 views
4

我有一個utils類庫項目,其中包括一些Sharepoint功能。該項目引用Microsoft.Sharepoint.dll(將本地複製設置爲false)。我們有許多其他項目參考了我們的utils dll,並且每當我們構建它們時Microsoft.Sharepoint.Sandbox.dll都被複制到這些應用程序的bin文件夾中。然後在運行任何應用程序,我得到了以下錯誤時:如何停止將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修復這個問題.. 有沒有辦法阻止被複制到bin文件夾這個Microsoft.Sharepoint.Sandbox.dll ? 我不想使用後期構建腳本,因爲有很多引用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

其他人可以重現嗎? – woggles 2012-07-12 10:18:35

+0

當您添加Microsoft.Sharepoint.dll時,它可能會隱式引用一個沙盒。嘗試添加一個明確的引用到沙盒,然後做一個複製本地=假。如何添加參考:http://sladescross.wordpress.com/2009/10/06/add-microsoft-sharepoint-reference-to-visual-studio/ -----這個鏈接可能有點幫助:http: //blah.winsmarts.com/2009-12-SharePoint_2010_Sandbox_solutions__Architecture_and_Restrictions.aspx – 2012-07-17 20:21:20

+0

@colinsmith感謝您的評論和鏈接。我敢肯定,它確實有一個隱含的引用沙箱DLL,這是造成這種不便。我需要一種方法告訴VS停止太聰明,並且不要複製隱式引用。 – woggles 2012-07-17 21:33:51

回答

1

嘗試進入項目屬性屏幕。生成選項卡。將「平臺目標」更改爲x64

+0

仍然不起作用 – woggles 2012-07-19 13:04:15

2

如何將Microsoft.Sharepoint.Sandbox.dll程序集添加到GAC? 據MSDN

If you deploy/copy an application that contains a reference to a custom component that is registered in the GAC, the component will not be deployed/copied with the application, regardless of the Copy Local setting. For more information, see Project References .

更新。如果你的目標任何CPU,你可以寫一個PowerShell或蝙蝠腳本枚舉所有bin文件夾中,並刪除所有Microsoft.Sharepoint.Sandbox.dll

+0

這適用於定位x64(dll不再可用拉到bin文件夾中)。不幸的是,我們需要針對任何CPU,因爲一些舊的32位服務器。 – woggles 2012-07-23 13:07:22

0

this blog post by Louis Liang,解決辦法是添加一個生成後事件和刪除該DLL:

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

是的,但建立時,但不幸的是不是當發佈解決方案時工作 – woggles 2012-11-19 06:46:27

+0

@woggles我看到...有沒有辦法以類似的方式定製發佈過程?我知道你不想使用這樣的腳本,但它似乎是唯一的選擇。 – 2012-11-20 01:18:14

+1

看起來這可能與一點工作...看到http://stackoverflow.com/questions/1360579/post-publish-events。 – woggles 2012-11-20 06:48:59

相關問題