按照本文中的步骤(https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-how-to-use-dotnet),我创建了一个控制台应用程序,并将以下代码添加到main方法中:
string connection = "DefaultEndpointsProtocol=https;AccountName=MyStorageAccountName;AccountKey=MyAccountKey;EndpointSuffix=core.windows.net";
CloudStorageAccount account;
if (!CloudStorageAccount.TryParse(connection, out account))
{
throw new Exception("Unable to parse storage account connection string.");
}
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference("mytable");
// this is the line at which I get the error:
table.CreateIfNotExists();
但是,执行最后一行时出现以下错误:
无法加载文件或程序集“Microsoft.Data.OData,Version = 5.6.2.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其中一个依赖项。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
为什么我收到此错误的任何想法?
注意:我编写了类似的代码,它针对的是同一个存储帐户,但创建了一个队列,并且工作正常。
答案 0 :(得分:0)
看起来是时候删除解决方案的包文件夹并清理和重建项目了。还要确保实际安装了Microsoft.Data.OData nuget包。:)
答案 1 :(得分:0)
为什么我收到此错误的任何想法?
由于您已安装WindowAzure.Storage(版本8.4.0)程序包,因此还将安装其名为Microsoft.Data.OData(版本5.8.2)的其中一个依赖项。可能有一些其他软件包引用了Microsoft.Data.OData(版本5.6.2),它将导致您在帖子中提到的异常。
要解决此问题,可以在配置文件(app.config)中添加assemblyBinding。它会将Microsoft.Data.OData的所有依赖项绑定到您安装的程序集。 assemblyBinding的格式如下所示。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" /></startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.8.3.0" newVersion="5.8.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.OData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.8.3.0" newVersion="5.8.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.8.3.0" newVersion="5.8.3.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>