InnerException выдает TypeLoadException TypeLoadException: не удалось загрузить тип 'System.UriTemplate' из сборки 'System.ServiceModel, - PullRequest
0 голосов
/ 24 октября 2019

Я пытался реализовать функции Azure, но продолжаю получать следующее исключение.

  "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 и AzureFunctions с v2.0 и использую 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 голосов
/ 24 октября 2019

Функция 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.

если вы используете этот пакет в ложном техническом стеке, конечно, это исключение появится.

...