我创建了几个.Net Standard 2.0库,通过控制台应用程序测试了执行情况,还进行了一些测试-一切都很好。
然后,我尝试将该特定版本下载到API Function项目中:
我正在使用Visual Studio版本15.7.0预览5.0。我已将Azure Function更新为4.7 ...,因为控制台和测试项目均已完成-并且这些工作正常。
在这个地方呆了太多个小时..所以我希望分辨率不会太疯狂。Ef Core 2.1.0-rc1-final也参与其中。对Required,MaxLength,NotMapped使用数据注释。
图形错误说:Microsoft.EntityFrameworkCore:无法加载文件或程序集'System.ComponentModel.Annotations,版本= 4.2.0.0
我建议一旦启动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(...)
方法的第一行,并且在函数类的静态构造函数中进行尝试,但是在构建过程中似乎没有调用它吗?是的,这正是我正在做的-在Run(...)或构造函数上运行它。不应在构建过程中调用它,这是运行时问题,因此只有在那时才调用它。
非常感谢; 也为我工作。
注意:这只会重定向在调用该方法的项目中安装的软件包。例如,如果您
FunctionsAssemblyResolver.RedirectAssembly()
在“服务”项目中调用,即使将其添加为参考,它也不会更改“基础结构”项目中的软件包。话虽如此,谢谢!我已经为这个愚蠢的问题尝试了许多解决方案,而这是行之有效的。