在.NET Core中使用Azure Table API时遇程序集加载异常求助
Microsoft.Azure.Documents.Client文件找不到异常 从你遇到的异常信息来看:
未处理的异常: System.IO.FileNotFoundException: 无法加载文件或程序集'Microsoft.Azure.Documents.Client, Version=1.20.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'。系统找不到指定的文件。在Microsoft.Azure.CosmosDB.Table.CloudTableClient..ctor(...)
这个问题的核心是**Microsoft.Azure.CosmosDB.Table包依赖的Microsoft.Azure.Documents.Client组件缺失或者版本不匹配**,下面是几个靠谱的解决步骤:
步骤1:手动安装指定版本的依赖包
旧版的Microsoft.Azure.CosmosDB.Table(用于Cosmos DB Table API)对Microsoft.Azure.Documents.Client的版本要求很严格,1.20.0.0对应的NuGet包版本就是1.20.0。你可以通过以下命令安装:
用.NET CLI:dotnet add package Microsoft.Azure.Documents.Client --version 1.20.0或者在Visual Studio的NuGet包管理器中搜索并安装这个版本。
步骤2:检查项目依赖的版本匹配性
打开你的.csproj文件,确认Microsoft.Azure.CosmosDB.Table和Microsoft.Azure.Documents.Client的版本是兼容的。比如Microsoft.Azure.CosmosDB.Table的1.1.2版本刚好依赖1.20.0的Documents.Client,你的项目文件里应该有类似这样的引用:<PackageReference Include="Microsoft.Azure.CosmosDB.Table" Version="1.1.2" /> <PackageReference Include="Microsoft.Azure.Documents.Client" Version="1.20.0" />不要随便单独升级其中一个包,否则很容易出现版本冲突。
步骤3:清理NuGet缓存并重建项目
有时候NuGet的本地缓存会导致包没有正确下载或引用,执行以下命令清理并重新恢复依赖:dotnet clean dotnet restore dotnet build如果用Visual Studio,右键项目选择「清理」,然后再选择「重建」也能达到同样效果。
步骤4:考虑迁移到新版Azure SDK(推荐)
旧的Microsoft.Azure.CosmosDB.Table包已经被官方弃用了,现在更推荐使用Azure.Data.Tables或者Microsoft.Azure.Cosmos.Table(注意是不带DB的那个包),这些新版SDK的依赖管理更完善,也更适配.NET Core环境。比如安装Azure.Data.Tables后,你可以使用TableClient替代原来的CloudTableClient,API设计更简洁,也能避免这类旧版本依赖问题。
内容的提问来源于stack exchange,提问作者Node.JS

