Я только что создал портативную библиотеку классов, которая использовала Azure Table storage v7.0.1-preview.Справочное хранилище таблиц Azure в библиотеке портативных классов (PCL)
И у меня есть некоторые проблемы, которые делают это правильно. Приведенный ниже код сгенерирует исключение (TypeLoadException
):
var cloudStorageAccount = CloudStorageAccount.Parse(connectionString);
var cloudTable = cloudStorageAccount.CreateCloudTableClient().GetTableReference(settingsTableName);
var seg = await cloudTable.ExecuteQuerySegmentedAsync(new TableQuery(), null);
return seg.Results;
Не удалось загрузить тип 'Microsoft.WindowsAzure.Storage.Table.TableQuerySegment' из сборки «Microsoft.WindowsAzure.Storage, Version = 7.0.1.0, культура = нейтральный, PublicKeyToken = 31bf3856ad364e35 '.
Я создал портативный библиотеки классов:
Я добавил ссылку на WindowsAzure.Storage v7.0.1-предпросмотре:
Install-Package WindowsAzure.Storage -Version 7.0.1-preview
Чтобы воспроизвести проблему, у меня есть один класс в этой библиотеке :
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Table;
public class AzureTableUtilitiy
{
public static async Task<IList<DynamicTableEntity>> RetrieveAsync(string connectionString, string settingsTableName)
{
var cloudStorageAccount = CloudStorageAccount.Parse(connectionString);
var cloudTable = cloudStorageAccount.CreateCloudTableClient().GetTableReference(settingsTableName);
var seg = await cloudTable.ExecuteQuerySegmentedAsync(new TableQuery(), null);
return seg.Results;
}
}
И я просто хотел, чтобы проверить его ... с помощью консольного приложения (названный AzureTableStorageTest) => Я добавил ссылку на WindowsAzure.Storage v7.0.1-preview
также в этом проекте.
Приложение Console имеет ссылку на портативную библиотеку CLASS.
class Program
{
static void Main(string[] args)
{
var result = AzureTableUtilitiy.RetrieveAsync(
ConfigurationManager.ConnectionStrings["StorageAccountConnectionstring"].ConnectionString,
"ExternalSettingsStore").Result;
}
}
Таким образом, код выше генерирует исключение. Но если я выполняю код непосредственно из приложения консоли, каждая вещь отлично работает:
class Program
{
static void Main(string[] args)
{
var cloudStorageAccount = CloudStorageAccount.Parse(ConfigurationManager.ConnectionStrings["StorageAccountConnectionstring"].ConnectionString);
var cloudTable = cloudStorageAccount.CreateCloudTableClient().GetTableReference("ExternalSettingsStore");
var seg = cloudTable.ExecuteQuerySegmentedAsync(new TableQuery(), null).Result;
var result = seg.Results;
}
}
Может кто-нибудь объяснить мне, что я пропускаю ^^?
EDIT: Детали исключения:
System.TypeLoadException отбрасывается.
сообщение: Не удалось загрузить тип 'Microsoft.WindowsAzure.Storage.Table.TableQuerySegment' из сборки 'Microsoft.WindowsAzure.Storage, Version = 7.0.1.0, культура = нейтральной, PublicKeyToken = 31bf3856ad364e35.
StackTrace:
в AzureTableStorageUtility.AzureTableUtilitiy.RetrieveAsync (String, String ConnectionString settingsTableName)
в AzureTableStorageTest.Program.Main (String [] арг) в C: \ Проекты \ AzureTableStorageTest \ AzureTableStorageTest2 \ Программа.CS: линия 24
EDIT
это пример приложения, которые воспроизводят вопрос:
Какое исключение вы получаете? Трассировка исключения/стека даст нам более глубокое понимание. –
@ jehine-MSFT, я обновил трассировку стека. Вы хотите, чтобы я создал репозиторий github для запуска приложения? – Thomas
Немой вопрос: @ Томас, вы включили Microsoft.WindowsAzure.Storage.Table, а также Microsoft.WindowsAzure.Storage? Я считаю, что вам нужны они и –