无法加载文件或程序集 'Microsoft.Azure.Documents.Client - Azure-Table-API



我正在尝试将Azure Table Api与dotnet core一起使用,但不断收到此异常:

Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'Microsoft.Azure.Documents.Client, Version=1.20.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. The system cannot find the file specified.
at Microsoft.Azure.CosmosDB.Table.CloudTableClient..ctor(StorageUri storageUri, StorageCredentials credentials, TableConnectionPolicy connectionPolicy, Nullable`1 desiredConsistencyLevel)
at Microsoft.Azure.CosmosDB.Table.CloudStorageAccountExtensions.CreateCloudTableClient(CloudStorageAccount account, TableConnectionPolicy connectionPolicy, Nullable`1 consistencyLevel)
at Testing.Program.Main(String[] args) in /Desktop/Repos/TestingWow/Testing/Program.cs:line 22

显然,这是一个常见的异常消息。我把我的简单代码放在GitHub上以防万一。我想我尝试了所有现有的StackOverFlow提示或解决方案,但没有成功。我不确定我问题的根源是什么。我在 Mac 上使用 dotnet core 2.1.104。任何帮助将不胜感激。

.csproj文件:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.Common" Version="2.1.4" />
<PackageReference Include="Microsoft.Azure.CosmosDB.Table" Version="1.1.2" />
<PackageReference Include="Microsoft.Azure.DocumentDB" Version="1.22.0" />
<PackageReference Include="Microsoft.WindowsAzure.ConfigurationManager" Version="3.2.3" />
</ItemGroup>
<ItemGroup>
<Reference Include="Microsoft.Azure.Storage.Common, Version=9.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>.........nugetpackagesmicrosoft.azure.storage.common9.0.0.1-previewlibnetstandard1.3Microsoft.Azure.Storage.Common.dll</HintPath>
</Reference>
</ItemGroup>
</Project>

简单代码:

using Microsoft.Azure.CosmosDB.Table;
using Microsoft.Azure.Storage;
namespace Testing
{
class Person : TableEntity
{
public string Firstname { get; set; }
}
class Program
{
static void Main(string[] args)
{
var connectionString =
"DefaultEndpointsProtocol=https;AccountName=accountname;AccountKey=1fgp8C2mImKcQfIFLMfAYBXwOK3LlYsXLyJdktuDEgXgmSCbJlDtd9tBeh2BgfnvGXmgltHFHzNnl7JpCR12Eg==;TableEndpoint=https://hello.table.cosmosdb.azure.com:443/;";
// Retrieve the storage account from the connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
// Create the table client.
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
// Create the CloudTable object that represents the "people" table.
CloudTable table = tableClient.GetTableReference("people");
// Create a new customer entity.
Person customer1 = new Person {Firstname = "Walter@contoso.com"};
// Create the TableOperation object that inserts the customer entity.
TableOperation insertOperation = TableOperation.Insert(customer1);
// Execute the insert operation.
table.Execute(insertOperation);
}
}
}

正如我所测试的那样,我认为您应该卸载所有关于Microsoft.Azure.CosmosDB.Table的软件包。

更改为使用WindowsAzure.Storage包在表中添加实体。

此外,还需要设置分区键和行键。 下面的代码定义一个实体类,该类使用客户的名字作为行键,使用姓氏作为分区键。

实体的分区键和行键在表中唯一标识它。具有相同分区键的实体的查询速度比具有不同分区键的实体更快,但使用不同的分区键可以提高并行操作的可伸缩性。

您可以参考以下代码:

在程序中:

public static void  Main(string[] args)
{
method().Wait();
}
static private async Task method()
{
var connectionString = "DefaultEndpointsProtocol=https;AccountName=accountname;AccountKey=xFWWad+YMoW/R7P54ppqGMDs7obGYj3ciEjokt+nkomwYfOh6mUcmcvJLV/puGistsKuGCfOwreCfptK1AwAAQ==;EndpointSuffix=core.windows.net";
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("table1");
Person customer1 = new Person("Harp", "Walter");
customer1.Firstname = "Walter@contoso.com";
TableOperation insertOperation = TableOperation.Insert(customer1);
await table.ExecuteAsync(insertOperation);
}
class Person : TableEntity
{
public Person(string lastName, string firstName)
{
this.PartitionKey = lastName;
this.RowKey = firstName;
}
public Person() { }
public string Firstname { get; set; }
}

在 csproj 中:

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="WindowsAzure.Storage" Version="9.1.1" />
</ItemGroup>
</Project>

Microsoft.Azure.CosmosDB.Table包替换为Microsoft.Azure.Cosmos.Table。将Microsoft.Azure.CosmosDB.Table命名空间替换为Microsoft.Azure.Cosmos.Table

相关内容

  • 没有找到相关文章

最新更新