将 Azure Table 存储引用到便携式 Class 库 (PCL)
Reference Azure Table Storage into a Portable Class Library (PCL)
我刚刚创建了一个使用 Azure Table storage v7.0.1-preview.
的可移植 class 库
而且我在使它正常工作时遇到了一些问题。下面的代码抛出异常 (TypeLoadException
):
var cloudStorageAccount = CloudStorageAccount.Parse(connectionString);
var cloudTable = cloudStorageAccount.CreateCloudTableClient().GetTableReference(settingsTableName);
var seg = await cloudTable.ExecuteQuerySegmentedAsync(new TableQuery(), null);
return seg.Results;
Could not load type 'Microsoft.WindowsAzure.Storage.Table.TableQuerySegment' from assembly 'Microsoft.WindowsAzure.Storage, Version=7.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
我创建了一个可移植的 class 库:
我添加了对 WindowsAzure.Storage v7.0.1-preview 的引用:
Install-Package WindowsAzure.Storage -Version 7.0.1-preview
所以为了重现这个问题,我在这个库中有一个 class:
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
的引用。
控制台应用程序引用了便携式 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;
}
}
谁能解释一下我错过了什么^^?
编辑:异常详情:
抛出一个System.TypeLoadException。
消息:无法从程序集 'Microsoft.WindowsAzure.Storage, Version=7.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
加载类型 'Microsoft.WindowsAzure.Storage.Table.TableQuerySegment'
堆栈跟踪:
在AzureTableStorageUtility.AzureTableUtilitiy.RetrieveAsync(字符串连接字符串,字符串设置表名称)
at AzureTableStorageTest.Program.Main(String[] args) 在 C:\Projects\AzureTableStorageTest\AzureTableStorageTest2\Program.cs:第 24 行
编辑
这是重现该问题的示例应用程序:
这是瞎猜的,但您能否尝试将 PCL 的 Microsoft.WindowsAzure.Storage 引用中 "Copy Local" 的值更改为 true。
我刚刚创建了一个使用 Azure Table storage v7.0.1-preview.
的可移植 class 库而且我在使它正常工作时遇到了一些问题。下面的代码抛出异常 (TypeLoadException
):
var cloudStorageAccount = CloudStorageAccount.Parse(connectionString);
var cloudTable = cloudStorageAccount.CreateCloudTableClient().GetTableReference(settingsTableName);
var seg = await cloudTable.ExecuteQuerySegmentedAsync(new TableQuery(), null);
return seg.Results;
Could not load type 'Microsoft.WindowsAzure.Storage.Table.TableQuerySegment' from assembly 'Microsoft.WindowsAzure.Storage, Version=7.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
我创建了一个可移植的 class 库:
我添加了对 WindowsAzure.Storage v7.0.1-preview 的引用:
Install-Package WindowsAzure.Storage -Version 7.0.1-preview
所以为了重现这个问题,我在这个库中有一个 class:
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
的引用。
控制台应用程序引用了便携式 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;
}
}
谁能解释一下我错过了什么^^?
编辑:异常详情:
抛出一个System.TypeLoadException。
消息:无法从程序集 'Microsoft.WindowsAzure.Storage, Version=7.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.
加载类型 'Microsoft.WindowsAzure.Storage.Table.TableQuerySegment'
堆栈跟踪:
在AzureTableStorageUtility.AzureTableUtilitiy.RetrieveAsync(字符串连接字符串,字符串设置表名称)
at AzureTableStorageTest.Program.Main(String[] args) 在 C:\Projects\AzureTableStorageTest\AzureTableStorageTest2\Program.cs:第 24 行
编辑
这是重现该问题的示例应用程序:
这是瞎猜的,但您能否尝试将 PCL 的 Microsoft.WindowsAzure.Storage 引用中 "Copy Local" 的值更改为 true。