Не удалось загрузить файл или сборку 'Microsoft.Azure.Documents.Client - Azure-Table-Api - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь использовать 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

По-видимому, это распространенное сообщение об исключении . Я поместил свой простой код на GitHub на всякий случай. Я думаю, что попробовал все существующие подсказки или решения StackOverFlow, но безуспешно. Я не уверен, что является источником моей проблемы. Я использую ядро ​​dotnet 2.1.104 на Mac. Любая помощь будет принята с благодарностью.

.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 = "Walter@contoso.com"};

            // Create the TableOperation object that inserts the customer entity.
            TableOperation insertOperation = TableOperation.Insert(customer1);

            // Execute the insert operation.
            table.Execute(insertOperation);
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 25 июля 2019

Заменить Microsoft.Azure.CosmosDB.Table пакет на Microsoft.Azure.Cosmos.Table. Замените Microsoft.Azure.CosmosDB.Table пространство имен на Microsoft.Azure.Cosmos.Table.

0 голосов
/ 08 мая 2018

Как я уже проверял, я думаю, вам следует удалить все ваши пакеты с 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...