InnerException引发TypeLoadException TypeLoadException:无法从程序集“ System.ServiceModel”中加载类型“ System.UriTemplate”,

时间:2019-10-24 08:55:38

标签: c# azure .net-core azure-functions .net-framework-version

我试图实现一种天蓝色的功能,但是不断出现以下异常。

  "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不兼容。

希望有人知道我不知道的事,并且愿意提供帮助,而我已经告诉了我足够的知识来解决这个难题。

1 个答案:

答案 0 :(得分:0)

Azure函数具有两个版本。一种基于.NET Framework,另一种基于.NET Core。根据您的描述,似乎您正在使用.NET Core 3.0Function v2.0

您的项目使用WindowsAzure.ServiceBus v6.0.0,但是您是否看到了此Nuget软件包的说明?

https://www.nuget.org/packages/WindowsAzure.ServiceBus/

它基于.NET Framework。

如果您在错误的技术堆栈上使用此软件包,则当然会出现此异常。