无法评估扩展元数据的"Cosmos.CRTCompat.dll"。异常消息:IL 格式错误



在Visual Studio 2019中发布azure函数时收到以下警告。

无法评估扩展元数据的"Cosmos.CRTCompat.dll"。异常消息:IL格式错误。无法评估扩展元数据的"Microsoft.Azure.Documents.ServiceInterop.dll"。异常消息:IL格式错误。

我在一个空白项目中尝试了同样的操作,但同样的警告即将到来。

我可以看到VS代码的相同问题

C:\Users\pankaj.ra.nuget\packages\microsoft.azure.webjobs.script.extensionsmetadatagenerator\1.1.5\build\microsoft.azure.webjobs.script.extensionsmetadatagenerator.targets(63,5(:警告:无法评估扩展名的"Cosmos.CRTCompat.dll"元数据。异常消息:IL格式错误。

我的函数项目文件

<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<AzureFunctionsVersion>v3</AzureFunctionsVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.EventHubs" Version="4.1.1" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="3.0.5" />
</ItemGroup>
<ItemGroup>
<None Update="host.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Update="local.settings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</None>
</ItemGroup>
</Project>

因为在一个空白项目中会出现同样的错误,所以很难解决这个问题。我创建了一个空白函数,并在local和azure中都能很好地运行它。

首先,清理所有的nuget缓存(本地和全局(并恢复所有内容。

dotnet nuget locals all——清除

这很可能是因为处理器体系结构不匹配:例如,loading 64-bit assemblies when you use 32-bit causes this

如果您的应用程序使用32位组件,请确保它始终作为32位应用程序运行
请确保您使用的组件不是使用其他版本的.NET Framework创建的
请确保文件映像是有效的托管程序集或模块。

而且,就列表上的第一项而言:

如果应用程序项目的Platform target属性设置为AnyCPU,则编译的应用程序可以在64-bit32-bit模式下运行。当它作为64位应用程序运行时,即时(JIT(编译器会生成64位本机代码。如果应用程序依赖于32位托管或非托管组件,则该组件将无法在64位模式下加载。若要更正此问题,请将项目的Platform target属性设置为x86并重新编译。

有关更多详细信息,请参阅本文。

最新更新