我正在研究使用 SSIS 2019 脚本任务连接到 Azure 数据湖存储的不同选项,其中一个选项是使用Azure .NET SDK。但是,我很难在脚本任务中使用它。我正在尝试使其与以下代码一起使用,但还没有运气。
C#代码:
static string path = null;
static ScriptMain()
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
}
static System.Reflection.Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
if (args.Name.Contains("dllname"))
{
return System.Reflection.Assembly.LoadFile(System.IO.Path.Combine(path, "dllname.dll"));
}
return null;
}
请指导我通过 SSIS 脚本任务连接到 Azure。
C#代码:
static async Task Main(string[] args)
{
//Connect to Azure Storage Account
var applicationId = "applicationId";
var secretKey = "secretKey";
var tenantId = "tenantId";
var storageAccountName = "myStorageAccountName";
var filesystem = "myFilesystemName";
var mypath = "my/AzureFolder/Path";
var client = DLStorageManagementClient.CreateClient(applicationId, secretKey, tenantId, storageAccountName);
var isFileSystemCreated = await client.CreateFilesystemAsync(filesystem);
var isDirectoryCreated = await client.CreateDirectoryAsync(filesystem, mypath);
string tmpFile = Path.GetTempFileName();
string fileName = HttpUtility.UrlEncode(Path.GetFileName(tmpFile));
File.WriteAllText(tmpFile, $"this is sample file content for {tmpFile}");
var isFileCreated = await client.CreateFileAsync(filesystem, mypath, fileName, new FileStream(tmpFile, FileMode.Open, FileAccess.Read));
var stream = new MemoryStream();
var isFileDownloaded = await client.DownloadFileAsync(filesystem, $"{mypath}/{fileName}", stream);
if (isFileDownloaded.IsSuccessStatusCode)
{
var contentString = UTF8Encoding.UTF8.GetString(stream.ToArray());
Console.WriteLine(contentString);
}
var isFileDeleted = await client.DeleteFileOrDirectoryAsync(filesystem, mypath, true);
var isFileSystemDeleted = await client.DeleteFilesystemAsync(filesystem);
}
错误:
Error CS1983 The return type of an async method must be void, Task, Task<T>, a task-like type, IAsyncEnumerable<T>, or IAsyncEnumerator<T>
Error CS0161 'ScriptMain.Main(string[])': not all code paths return a value