我试图实现一种天蓝色的功能,但是不断出现以下异常。
"TypeLoadException: Could not load type 'System.UriTemplate' from assembly 'System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
似乎还有其他一些人获得了相同的例外。 https://github.com/Azure/azure-functions-host/issues/3568
我已经通过.NETCore 3.0和带有v2.0的AzureFunctions实现了我的解决方案,并使用WindowsAzure.ServiceBus v6.0.0,System.private.ServiceModel 4.6.0和System.ServiceModel.Primitives 4.6.0。 据我所知,版本应该没有问题,但目前还不确定。
在链接中有很多解决方法,我已经尝试过,但是没有结果。在所有这些文件中,我都更改了文件结构以匹配我的文件结构。 (我知道其中一些是针对其他类型的项目的,依此类推,但仍然值得一试)。
<Target Name="FixForDotnetWcfIssueBuild" BeforeTargets="PostBuildEvent"> <Copy SourceFiles="$(OutputPath)bin\runtimes\win\lib\netstandard2.0\System.Private.ServiceModel.dll" DestinationFolder="$(OutputPath)bin" /> </Target>
<Target Name="FixForDotnetWcfIssuePublish" AfterTargets="AfterPublish"> <Copy SourceFiles="$(PublishDir)bin\runtimes\win\lib\netstandard2.0\System.Private.ServiceModel.dll" DestinationFolder="$(PublishDir)bin" /> </Target>
在我看来,WindowsAzure.ServiceBus 6.0.0与.NETCoreApp v3.0不兼容。
希望有人知道我不知道的事,并且愿意提供帮助,而我已经告诉了我足够的知识来解决这个难题。
答案 0 :(得分:0)
Azure函数具有两个版本。一种基于.NET Framework,另一种基于.NET Core。根据您的描述,似乎您正在使用.NET Core 3.0
,Function v2.0
。
您的项目使用WindowsAzure.ServiceBus v6.0.0
,但是您是否看到了此Nuget软件包的说明?
https://www.nuget.org/packages/WindowsAzure.ServiceBus/
它基于.NET Framework。
如果您在错误的技术堆栈上使用此软件包,则当然会出现此异常。