我正在使用适用于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选项下) - 这是什么反对?
由于
答案 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"
}