2016-04-18 2 views
0

Я только что создал портативную библиотеку классов, которая использовала 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 '.

Я создал портативный библиотеки классов:

Create a portable class library using visual studio 2015

Я добавил ссылку на WindowsAzure.Storage v7.0.1-предпросмотре:

Install-Package WindowsAzure.Storage -Version 7.0.1-preview 

Add WindowsAzure.Storage v7.0.1 preview using Nuget Package Manager Console

Чтобы воспроизвести проблему, у меня есть один класс в этой библиотеке :

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

это пример приложения, которые воспроизводят вопрос:

+0

Какое исключение вы получаете? Трассировка исключения/стека даст нам более глубокое понимание. –

+0

@ jehine-MSFT, я обновил трассировку стека. Вы хотите, чтобы я создал репозиторий github для запуска приложения? – Thomas

+0

Немой вопрос: @ Томас, вы включили Microsoft.WindowsAzure.Storage.Table, а также Microsoft.WindowsAzure.Storage? Я считаю, что вам нужны они и –

ответ

0

Это выстрел в темноте здесь, но не могли бы вы попытаться изменить значение «Копировать локальную» в ссылку Microsoft.WindowsAzure.Storage на PCL на true.

Вот статья, в которой говорится об этом: https://blogs.msdn.microsoft.com/asiatech/2013/01/09/how-to-resolve-the-could-not-load-file-or-assembly-issues-on-windows-azure-web-sites/

+0

Уже задано это свойство .... Спасибо в любом случае ^^ – Thomas

Смежные вопросы