简体   繁体   中英

Could not load file or assembly 'System.Private.ServiceModel' in Azure Function v2

I used a v2 azure function (durable function) with custom dll (.net core 2.2) that calls a service and I get the following exception:

Could not load file or assembly 'System.Private.ServiceModel, Version=4.1.2.4, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

In the debugging process, I can't step into the method and the exception is thrown without letting me inside it and I don't know exactly what tried to access that library. Putting manually the package from .nuget in the bin folder didn't work and the strange thing is that if a run the same code with a sample C# function it works.

fixed Nuget Install or Update System.Private.ServiceModel

Install-Package System.Private.ServiceModel -Version 4.7.0

https://www.nuget.org/packages/System.Private.ServiceModel/

This issue is detailed here: https://github.com/dotnet/wcf/issues/2824

How I solved it was to download the nuget System.Private.ServiceModel

and add the following to my .csproj

<Target Name="CopySPSM" BeforeTargets="Build">
<Copy SourceFiles="$(USERPROFILE)\.nuget\packages\system.private.servicemodel\4.5.3\runtimes\win\lib\netstandard2.0\System.Private.ServiceModel.dll" DestinationFolder="$(OutputPath)\bin" />
</Target>

There is a big thread about this on github . I added the PostBuild event as in that thread, but I was still struggling in the CI/CD build pipeline. In the end, I also added a cmd line script step in the build pipeline after the "Build Solution" step with the following code:

copy $(Agent.TempDirectory)\WebAppContent\bin\runtimes\win\lib\netstandard2.0\System.Private.ServiceModel.dll $(Agent.TempDirectory)\WebAppContent\bin\System.Private.ServiceModel.dll 

This solution does not seem that clean but it worked for me.

I got this with a Blazor 3.1 app. Works fine locally, but, when deployed to Azure I get:

System.IO.FileNotFoundException: Could not load file or assembly 'System.Private.ServiceModel

To fix it, in the Publish Profile, in Visual Studio, I changed the Target runtime from win-x86 to portable

在此处输入图片说明

如果 System.Private.ServiceModel.dll 已实现,请尝试检查您的 cs.proj,如果不是这种情况,您可以参考此工作: https : //github.com/dotnet/wcf/issues/2824

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM