簡體   English   中英

SSIS如何在腳本任務中執行dll(未找到SharePoint功能)

[英]SSIS how to execute dll in script-task (SharePoint function not found)

我不能在SSIS腳本任務中使用特定的DLL。 在c#console-project中,一切都很好。 SSIS引發錯誤:

錯誤:無法加載程序集“ Microsoft.SharePoint.Client,版本= 14.0.0.0,區域性=中性PublicKeyToken = ....”中的類型“ Microsoft.SharePoint.Client.ClientRuntimeContext”。

我正在使用Datatools運行Visual Studio 2017。 我從NuGet-paket-manager獲得了庫,並將它們保存在本地C:/

  • Microsoft.SharePoint.Client版本14.0.0.0,運行時版本v2.0.50727
  • Microsoft.SharePoint.Client.Runtime版本15.0.0.0,運行時版本v4.0.30319

我的控制台項目是.NET 4.6,並且我還將SSIS項目也設置為.NET 4.6。 在這兩種情況下,我都通過右鍵單擊“引用”>“添加”>“從計算機搜索”來添加庫

我剛剛測試了一個控制台項目,沒有任何問題:


static void Main(string[] args)
{
    using (ClientContext clientContext = new ClientContext("urltomysite.com"))
    {
    }
    Console.WriteLine("finished");
}

這是SSIS中的代碼(類似...僅使用對象ClientContext:


public void Main()
{
    //Loading assemblies extra
    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
    AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve2);

    try
    {
        //Testing the assembly method
        Class1.TESTIT();
    }
    catch (Exception ex)
    {
        Dts.Events.FireError(0, "Error", ex.Message, null, 0);
        Dts.TaskResult = (int)ScriptResults.Failure;
    }

}

static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
        return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine("C:/", "Microsoft.SharePoint.Client.dll"));
}

static System.Reflection.Assembly CurrentDomain_AssemblyResolve2(object sender, ResolveEventArgs args)
{
        return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine("C:/", "Microsoft.SharePoint.Client.Runtime.dll"));
}

class Class1
{
    public static void TESTIT()
    {
        using (ClientContext clientContext = new ClientContext("urltomysite.com"))
        {
        }
    }
}

我終於找到了錯誤...

我必須先加載

  • Microsoft.SharePoint.Client.Runtime.dll

然后,我不得不加載另一個庫

  • Microsoft.SharePoint.Client.dll

所以在Main我切換了庫加載:

AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve2);
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM