简体   繁体   中英

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

I am running a custom activity in Azure data factory, when i am trying to work on CloudAppendBlob the following exception occurs. It looks like a version issue but not able to figure a way to fix. I have compiled the code using Windows Azure Storage 7.0.0. Please help!

Unknown error in module:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.TypeLoadException: Could not load type 'Microsoft.WindowsAzure.Storage.Blob.CloudAppendBlob' from assembly 'Microsoft.WindowsAzure.Storage, Version=4.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. at MyDotNetActivity.SampleActivity.Execute(IEnumerable 1 linkedServices, IEnumerable 1 datasets, Activity activity, IActivityLogger logger) at Microsoft.Azure.Management.DataFactories.Runtime.ActivityExecutor.Execute(Object job, String configuration, Action`1 logAction) --- End of inner exception stack trace --- at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor) at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at Microsoft.DataPipeline.Compute.HDInsightJobExecution.ReflectingActivityWrapper.Execute() in f:_Bld\\12752\\4106\\Sources\\Product\\Common\\Compute\\src\\HDIComputeDelegatorJob\\ReflectingActivityWrapper.cs:line 44 at Microsoft.DataPipeline.Compute.HDInsightJobExecution.JobWrapper.RunJob() in f:_Bld\\12752\\4106\\Sources\\Produc t\\Common\\Compute\\src\\HDIComputeDelegatorJob\\JobWrapper.cs:line 94 at Microsoft.DataPipeline.Compute.HDInsightJobExecution.Launcher.Main(String[] args) in f:_Bld\\12752\\4106\\Sources\\Product\\Common\\Compute\\src\\HDIComputeDelegatorJob\\Launcher.cs:line 78.

I have run into the same problem myself. Turns out Azure Data Factory is restricted to version 4.3 of Microsoft.WindowsAzure.Storage. In order to load a different version you should take a look at Microsoft's CrossAppDomainDotNetActivitySample .

From the readme:

This sample allows you to author a custom .NET activity for ADF that is not constrained to assembly versions used by the ADF launcher (eg, WindowsAzure.Storage v4.3.0, Newtonsoft.Json v6.0.x, etc.).

The code includes an abstract base class (CrossAppDomainDotNetActivity) that implements app-domain isolation and a sample derived class (MyDotNetActivity) that demonstrates using WindowsAzure.Storage v6.2.0.

Note: The public types exposed by the ADF SDK are not serializable across app domain boundaries. As such, the derived class must provide pre-execution logic (PreExecute) to process the ADF objects into a serializable object that is then passed to the core logic (ExecuteCore).

In your app.config, add the following assembly binding redirect :

  <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>

If you encountered other similar issues afterwards, add assembly binding redirects for those assemblies as well.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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