繁体   English   中英

无法从程序集'Microsoft.WindowsAzure.Storage,Version = 4.3.0.0加载类型'Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob'

[英]Could not load type 'Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob' from assembly 'Microsoft.WindowsAzure.Storage, Version=4.3.0.0

我正在Azure数据工厂中运行自定义活动,当我尝试使用CloudAppendBlob时,会发生以下异常。 它看起来像版本问题,但无法找到解决方法。 我使用Windows Azure Storage 7.0.0编译了代码。 请帮忙!

模块中的未知错误:

System.Reflection.TargetInvocationException:调用目标抛出了异常。 ---> System.TypeLoadException:无法从程序集“Microsoft.WindowsAzure.Storage,Version = 4.3.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”加载类型“Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob”。 at MyDotNetActivity.SampleActivity.Execute(IEnumerable 1 linkedServices, IEnumerable 1数据集,活动活动,IActivityLogger记录器),位于Microsoft.Azure.Management.DataFactories.Runtime.ActivityExecutor.Execute(对象作业,字符串配置,Action`1 logAction)---内部异常堆栈跟踪的结束---在System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj,Object []参数,Object []的System.RuntimeMethodHandle.InvokeMethod(Object target,Object []参数,Signature sig,Boolean构造函数)中在System.Reflection.RuntimeMethodInfo.Invoke(Object obj,BindingFlags invokeAttr,Binder binder,Object []参数,CultureInfo文化)中的参数)在f:_Bld \\ 12752 \\ 4106中的Microsoft.DataPipeline.Compute.HDInsightJobExecution.ReflectingActivityWrapper.Execute() \\ Sources \\ Product \\ Common \\ Compute \\ src \\ HDIComputeDelegatorJob \\ ReflectingActivityWrapper.cs:第44行,位于f:_Bld \\ 12752 \\ 4106 \\ Sources \\ Produc中的Microsoft.DataPipeline.Compute.HDInsightJobExecution.JobWrapper.RunJob() t \\ Common \\ Compute \\ src \\ HDIComputeDelegatorJob \\ JobWrapper.cs:f:_Bld \\ 12752 \\ 4106 \\ Sources \\ Product \\ Common \\ Compute中的Microsoft.DataPipeline.Compute.HDInsightJobExecution.Launcher.Main(String [] args)中的第94行\\ src \\ HDIComputeDelegatorJob \\ Launcher.cs:第78行。

我自己遇到了同样的问题。 原来,Azure Data Factory仅限于Microsoft.WindowsAzure.Storage的4.3版本。 要加载不同的版本,您应该查看Microsoft的CrossAppDomainDotNetActivitySample

从自述文件:

此示例允许您为ADF创建自定义.NET活动,该活动不受ADF启动程序使用的程序集版本的限制(例如,WindowsAzure.Storage v4.3.0,Newtonsoft.Json v6.0.x等)。

该代码包括一个实现app-domain隔离的抽象基类(CrossAppDomainDotNetActivity)和一个使用WindowsAzure.Storage v6.2.0演示的示例派生类(MyDotNetActivity)。

注意:ADF SDK公开的公共类型不能跨应用程序域边界进行序列化。 因此,派生类必须提供预执行逻辑(PreExecute)以将ADF对象处理为可序列化对象,然后将其传递给核心逻辑(ExecuteCore)。

在app.config中,添加以下程序集绑定重定向

  <dependentAssembly>
    <assemblyIdentity name="Microsoft.WindowsAzure.Storage" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
    <bindingRedirect oldVersion="0.0.0.0-7.0.0.0" newVersion="7.0.0.0"/>
  </dependentAssembly>

如果之后遇到其他类似问题,还要为这些程序集添加程序集绑定重定向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM