Доступ к учетной записи хранения Azure из консольного приложения в OSX (Mac)

Я пишу код с помощью версии сообщества VS 2017 для Mac и пытаюсь получить доступ к BLOB-объекту в учетной записи хранения Azure. Однако у меня возникают исключения, как показано в приведенном ниже коде.

Версия 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 core 2. Консольное приложение .Net (под опцией .Net) - С чем это противоречит?

Спасибо

По опыту могу сказать, что он работает на Mac (VS 2017). Отредактируйте свой вопрос и включите версию пакета WindowsAzure.Storage, которую вы установили.

Gaurav Mantri 15.04.2018 15:05

@CamiloTerevinto Я внес необходимые изменения.

raring sunny 15.04.2018 15:18

@GauravMantri Я также добавил версию пакета для версии WindowsAzure.Storage.

raring sunny 15.04.2018 15:19

Спасибо! Я пытаюсь воспроизвести его, но не могу найти Microsoft.Azure в пакетах Nuget. Можете ли вы сказать мне, какой пакет вы для этого установили?

Gaurav Mantri 15.04.2018 15:56

@GauravMantri Я установил Microsoft.WindowsAzure.ConfigurationManager (v 3.2.3). Надеюсь это поможет.

raring sunny 15.04.2018 20:50

Я нашел одно решение, но оно не позволяет мне использовать файл app.config. Когда я удалил пакет CloudConfigurationManager и напрямую использовал строку подключения, он заработал. Это CloudConfigurationManager, который вызывает проблему на Mac. Я все еще ищу информацию о том, как читать app.config для приложения .Net на Mac.

raring sunny 16.04.2018 03:09
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
437
1

Ответы 1

Как вы упомянули, Microsoft.WindowsAzure.ConfigurationManager - это пакет .NET Framework, это не совместим с базовой платформой .net.

I am still looking for information on how to read app.config for .Net application on Mac

Для этого вы можете использовать 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.

All that’s required is to add the following NuGet packages and an appsettings.json file.

  • 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"
}

Спасибо за ваш ответ. Будет ли работать на Mac решение, которое вы предоставили? Мой проект не является консольным приложением .net core. В версии сообщества VS 2017 для OSX я использую консольный проект под .net. Существует отдельный проект консоли ядра .Net. Мне нужно продолжить исследование разницы между ними.

raring sunny 16.04.2018 05:34

@raringsunny. Да, он должен работать на Mac. Вам необходимо создать основной проект .net. И вы можете получить больше информации о ядре .net из этого гид

Tom Sun - MSFT 16.04.2018 07:01

Спасибо, @Tom попробует.

raring sunny 18.04.2018 06:47

Есть ли у вас обновления по этому поводу? Если это будет полезно, вы можете отметить это как ответ.

Tom Sun - MSFT 03.05.2018 08:19

У меня еще не было возможности попробовать это. Попробую на этой неделе

raring sunny 03.05.2018 08:31

еще одна вещь, я предполагаю, что я использую проект ядра без aspnet (вероятно, моно). Пожалуйста, имейте это в виду

raring sunny 03.05.2018 08:37

Другие вопросы по теме