我试图将Azure Table Api与dotnet核心一起使用,但不断收到此异常:
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
显然,这是一个common exception message。我把简单的代码放在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>..\..\..\..\.nuget\packages\microsoft.azure.storage.common\9.0.0.1-preview\lib\netstandard1.3\Microsoft.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 = "[email protected]"};
// 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 = "[email protected]";
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>
关于c# - 无法加载文件或程序集'Microsoft.Azure.Documents.Client-Azure-Table-Api,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50223799/