4

いくつかのSharepoint機能を含むutilsクラスライブラリプロジェクトがあります。プロジェクト参照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 を対象とする場合は、すべての bin フォルダーを列挙し、すべての Microsoft.Sharepoint.Sandbox.dll を削除する powershell またはバット スクリプトを作成できます。

于 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 に答える