2017-11-20 9 views
1

Visual Studio 2015でSSDT(SQL Server Data Tools)を使用しているSSISプロジェクトで作業しています。 、SSISスクリプトタスク:ファイルまたはアセンブリの読み込みに失敗しました。Microsoft.WindowsAzure.Storage、Version = 5.0.0.0、Culture = neutral

は」Microsoft.WindowsAzure.Storageをファイルまたはアセンブリをロードできませんでした:私は、スクリプトタスク内のdll Microsoft.WindowsAzure.Storage.dllを参照すると、私のプロジェクトにC#を使用していますが、次のメッセージを投げ続けていますVersion = 5.0.0.0、Culture = neutral、PublicKeyToken = 31bf3856ad364e35 'またはその依存関係の1つ。システムは、指定されたファイルを見つけることができません。

私は私のプロジェクトフォルダにbinディレクトリにDLLをコピーしますが、結果なしですべてしていた場合、私はすでにWindows上でDLLを登録し、Windows PowerShellを使用してDLLのブロックを解除しようとしましたが、確認しました。

public void Main() 
    { 
     // TODO: Add your code here 
     string srcBlob = (string) Dts.Variables["User::dBlobName"].Value; 
     // Substitui o nome da pasta PROCESSAR para PROCESSADOS 
     string destBlobName = srcBlob.Replace((string)Dts.Variables["$Project::dSrcBlobDirectory"].Value, (string)Dts.Variables["$Project::dDestBlobDirectory"].Value); 
     string srcContainerName = (string)Dts.Variables["$Project::dBlobContainer"].Value; 
     string accountName = (string)Dts.Variables["$Project::dStorageAccountName"].Value; 
     //byte[] storageAccessKey = Encoding.ASCII.GetBytes((string) Dts.Variables["$Project::dStorageAccessKey"].Value); 
     string storageAccessKey = (string)Dts.Variables["$Project::dStorageAccessKey"].Value; 

     MoveBlobInSameStorageAccount(accountName, storageAccessKey, srcContainerName, srcBlob, destBlobName); 

     Dts.TaskResult = (int)ScriptResults.Success; 
    } 

    static void MoveBlobInSameStorageAccount(string accountName, string accountKey, string containerName, string sourceBlobName, string destBlobName) 
    { 
     var cred = new StorageCredentials(accountName, accountKey); 
     var account = new CloudStorageAccount(cred, true); 
     var client = account.CreateCloudBlobClient(); 
     var sourceContainer = client.GetContainerReference(containerName); 
     var sourceBlob = sourceContainer.GetBlockBlobReference(sourceBlobName); 
     var destinationContainer = client.GetContainerReference(containerName); 
     var destinationBlob = destinationContainer.GetBlockBlobReference(destBlobName); 
     destinationBlob.StartCopy(sourceBlob); 
     sourceBlob.Delete(DeleteSnapshotsOption.IncludeSnapshots); 
    } 

助けてもらえますか?

答えて

1

以前はBlob Storage REST APIを呼び出すためにHttpClientを使用しました。あなたの説明に基づいて、あなたはMicrosoft Azure Storage Client Library for .NETを使用していますが、GACにないため、アセンブリを正しくロードできないと想定しました。 AppDomain.AssemblyResolveイベントハンドラを使用してアセンブリをロードする必要があります。詳細なチュートリアルはHow to load an Assembly in a SSIS script task that isn’t in the GACを参照してください。

+0

あなたは最高です!ありがとうございました! –

+0

アセンブリ参照を削除してから元に戻す - 間違ったバージョンが不明な理由で参照されていて、いくつか問題があった –

関連する問題

 関連する問題