cod*_*ter 15 c# entity-framework-core azure-functions
我创建了几个.Net Standard 2.0库,通过控制台应用程序测试执行,以及几个测试 - 一切都很好.
然后我尝试将该特定版本下载到API Function项目中:

我正在使用Visual Studio版本15.7.0预览5.0.我已将Azure功能更新为4.7 ...因为控制台和测试项目是 - 并且这些工作.
这是一个太多的小时..所以我希望决议不是疯狂的事情.Ef Core 2.1.0-rc1-final也在混合中.使用Required,MaxLength,NotMapped的数据注释.
图形错误说:Microsoft.EntityFrameworkCore:无法加载文件或程序集'System.ComponentModel.Annotations,Version = 4.2.0.0
小智 21
一旦启动Azure功能,我建议在下面运行此功能.它会将任何程序集重定向到现有版本.
public class FunctionsAssemblyResolver
{
public static void RedirectAssembly()
{
var list = AppDomain.CurrentDomain.GetAssemblies().OrderByDescending(a => a.FullName).Select(a => a.FullName).ToList();
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var requestedAssembly = new AssemblyName(args.Name);
Assembly assembly = null;
AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
try
{
assembly = Assembly.Load(requestedAssembly.Name);
}
catch (Exception ex)
{
}
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
return assembly;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 8
我按照这里的说明操作:
并添加了以下重定向:
"BindingRedirects": "[ { "ShortName": "System.ComponentModel.Annotations", "RedirectToVersion": "4.2.1.0", "PublicKeyToken": "b03f5f7f11d50a3a" } ]"
Run Code Online (Sandbox Code Playgroud)
注意:它不是v 4.5.0.0 ......实际上是4.2.1.0.
小智 6
如果被误用,接受的响应将导致 CPU 泄漏+=,并且会使您的函数应用程序停止运行。如果使用 IoC,最好使用单例。这里:
public class FunctionsAssemblyResolver
{
static FunctionsAssemblyResolver()
{
AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
}
// At least one static member needs to be invoked in order to execute the static constructor,
// but it will only run the constructor once.
public static void StaticInstance() { }
private static Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{
var requestedAssembly = new AssemblyName(args.Name);
try
{
// Feel free to resolve any other assemblies, but this will take care of Annotations
return requestedAssembly.Name == "System.ComponentModel.Annotations"
? Assembly.Load(requestedAssembly.Name)
: null;
}
catch
{
// do nothing
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
要使用,只需FunctionsAssemblyResolver.StaticInstance()在任何 IoC 解析之前调用即可。这也可以用于任何非 IoC 方法。
| 归档时间: |
|
| 查看次数: |
5646 次 |
| 最近记录: |