HTTP 経由でファイルを取得する SSIS 制御フロー タスクを実装するために、次のコードを作成しました。
using System;
using Microsoft.SqlServer.Dts.Runtime;
namespace HttpTask
{
[DtsTask(
DisplayName = "HTTP Task",
TaskContact = "Iain Elder",
RequiredProductLevel = DTSProductLevel.None
)]
public class HttpTask : Task
{
public string LocalPath {get; set;}
public string Connection {get; set;}
public bool OverwriteDestination {get; set;}
public DTSExecResult Execute(Connections connections,
VariableDispenser dispenser, IDTSComponentEvents events,
IDTSLogging log, object transaction)
{
HttpClientConnection http = AcquireHttpConnection(connections);
http.DownloadFile(this.LocalPath, this.OverwriteDestination);
return DTSExecResult.Success;
}
private HttpClientConnection AcquireHttpConnection(Connections connections)
{
ConnectionManager cm = connections[this.Connection];
object nativeConnection = cm.AcquireConnection(null);
return new HttpClientConnection(nativeConnection);
}
}
}
Visual Studio で、このビルド後のスクリプトを使用してタスクをビルドおよびデプロイし、パッケージをグローバル アセンブリ キャッシュにコピーします。
"C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\gacutil.exe" /if "$(TargetPath)"
copy $(TargetFileName) "C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Tasks"
Business Intelligence Development Studio を使用すると、ツールボックスにタスクが表示されます。
タスクをデザイン ウィンドウにドラッグすると、次のエラーが表示されます。
タスクはデザイン キャンバスに表示されません。
ここで私は何を間違えましたか?
編集:シヴァは、厳密な名前でアセンブリに署名する必要があることを提案しました。Benny Austin のブログにあるアセンブリに署名するためのガイドの手順 1 と 2 に従いました。ビルド後のスクリプトがコンポーネントをデプロイするため、他の手順は実行しませんでした。
Visual Studio プロジェクトのプロパティで、[署名] タブに移動し、アセンブリ用の新しい厳密な名前のキー ファイルを作成します。
設定を保存し、パッケージを再構築します。ビルド後のスクリプトが新しいパッケージをデプロイします。
私はまだまったく同じエラーが発生します。