所以我们一直热爱所有关于函数的事情,除了我们必须将某些库作为Azure函数保留,就像某些库更新的想法一样。 Microsoft.Owin就是其中之一。我们很想成为第4版。
无法加载文件或程序集“Microsoft.Owin,Version = 2.1.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。 (HRESULT异常:0x80131040)
我尝试过所有内容,例如强制通过Project.json以及整合整个解决方案。在VS中进行本地调试会发生同样的错误。如此部署以及本地正在发生这种情况。
我们遇到了与其他库类似的问题,例如AMQP。
我们正在运行最新的SDK - Microsoft.NET.SDK.Functions版本1.0.13
答案 0 :(得分:1)
可能重复以下问题。
Azure Functions - Could not load file or assembly ''Microsoft.WindowsAzure.Storage'
尝试查找Owin是否是Azure功能的本机库。如果是,您可以直接推荐。 #r“Library.Namspace”。否则,您需要遵循上述主题中的建议。
答案 1 :(得分:1)
感谢Ashokan的快速回复。我想我可能已经找到了解决这个问题的方法。
https://blog.slaks.net/2013-12-25/redirecting-assembly-loads-at-runtime/ 特别是这篇文章:https://blog.slaks.net/2013-12-25/redirecting-assembly-loads-at-runtime/
看看“npiasecki于2017年5月2日发表评论”,他在那里解释。这几乎就是诀窍而且现在一切正常 - 本地,通过Visual Studio进行调试。
private static void ConfigureBindingRedirects()
{
BindingRedirect.RedirectAssembly("Microsoft.Owin", new Version("4.0.0"), "31bf3856ad364e35");
}
private static void RedirectAssembly(
string shortName,
Version targetVersion,
string publicKeyToken)
{
ResolveEventHandler handler = null;
handler = (sender, args) =>
{
var requestedAssembly = new AssemblyName(args.Name);
if (requestedAssembly.Name != shortName)
{
return null;
}
var targetPublicKeyToken = new AssemblyName("x, PublicKeyToken=" + publicKeyToken)
.GetPublicKeyToken();
requestedAssembly.Version = targetVersion;
requestedAssembly.SetPublicKeyToken(targetPublicKeyToken);
requestedAssembly.CultureInfo = CultureInfo.InvariantCulture;
AppDomain.CurrentDomain.AssemblyResolve -= handler;
return Assembly.Load(requestedAssembly);
};
AppDomain.CurrentDomain.AssemblyResolve += handler;
}