从OSX(Mac)上的控制台应用程序访问Azure存储帐户

时间:2018-04-15 12:59:49

标签: c# macos azure .net-core azure-storage

我正在使用适用于Mac的VS 2017社区版编写代码并尝试访问Azure存储帐户上的Blob。但是,我遇到了异常,如下面的代码所示。

WindowsAzure.Storage版本为9.1.1

using System;
using Microsoft.Azure;
using Microsoft.WindowsAzure.Storage;

namespace storageaccount
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            var storageAccount = CloudStorageAccount.Parse(
                CloudConfigurationManager.GetSetting("StorageConnection"));

            //var blobClient = storageAccount.CreateCloudBlobClient();

            //var container = blobClient.GetContainerReference("images");

               //container.CreateIfNotExists(Microsoft.WindowsAzure.Storage.Blob.BlobContainerPublicAccessType.Blob);

        //Console.ReadKey();
        }
    }
}

从上述代码中抛出异常:

System.DllNotFoundException: fusion.dll
  at at (wrapper managed-to-native) Microsoft.Azure.NativeMethods.CreateAssemblyCache(Microsoft.Azure.NativeMethods/IAssemblyCache&,int)
  at Microsoft.Azure.NativeMethods.GetAssemblyPath (System.String name) [0x00037] in <bcbac5dcfbdd47eabe8212983b7d996d>:0
  at Microsoft.Azure.AzureApplicationSettings.GetServiceRuntimeAssembly () [0x0000d] in <bcbac5dcfbdd47eabe8212983b7d996d>:0
  at Microsoft.Azure.AzureApplicationSettings..ctor () [0x0001a] in <bcbac5dcfbdd47eabe8212983b7d996d>:0
  at Microsoft.Azure.CloudConfigurationManager.get_AppSettings () [0x0001e] in <bcbac5dcfbdd47eabe8212983b7d996d>:0
  at Microsoft.Azure.CloudConfigurationManager.GetSetting (System.String name, System.Boolean outputResultsToTrace) [0x00039] in <bcbac5dcfbdd47eabe8212983b7d996d>:0
  at Microsoft.Azure.CloudConfigurationManager.GetSetting (System.String name) [0x00000] in <bcbac5dcfbdd47eabe8212983b7d996d>:0
  at storageaccount.MainClass.Main (System.String[] args) [0x00001] in /Users/Projects/storageaccount/storageaccount/Program.cs:11

代码有什么问题?我正在使用Nuget包来访问云存储帐户。从抛出的异常中,不清楚OSx是否支持此功能。

感谢任何帮助。

其他信息: 我发现在创建新项目时,VS 2017(适用于Mac)有两个项目选项。 1. .Net核心控制台应用程序 2. .Net控制台应用程序(在.Net选项下) - 这是什么反对?

由于

1 个答案:

答案 0 :(得分:1)

正如您所提到的,Microsoft.WindowsAzure.ConfigurationManager是 .net framework 包,与.net核心平台不兼容

  

我仍在寻找有关如何在Mac上阅读.Net应用程序的app.config的信息

您可以使用System.Configuration.ConfigurationManager来执行此操作。

 var storeageString = ConfigurationManager.AppSettings["storagestring"];

的App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="storagestring" value ="Test string"/>
  </appSettings>
</configuration>

另一种方式是您可以将appsettings.json添加到.NET Core控制台应用程序。

  

所需的只是添加以下NuGet包和appsettings.json文件。

     
      
  • Microsoft.Extensions.Configuration

  •   
  • Microsoft.Extensions.Configuration.FileExtensions

  •   
  • Microsoft.Extensions.Configuration.Json

  •   

演示代码

var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json");
IConfigurationRoot configuration = builder.Build();
var connectionString = configuration["StorageConnection"];
Console.WriteLine(connectionString);

appsettings.json文件:

{
    "StorageConnection": "Test Connection string"
}

enter image description here