启动Azure worker角色期间出现FSharp.Core版本错误

启动Azure worker角色期间出现FSharp.Core版本错误,azure,f#,Azure,F#,我有一个完善的项目,包括三个工人角色。这个项目一直使用F#,不是在工作者角色本身中,而是在他们调用的函数中。我最近在项目中添加了另一个工作者角色,但架构(C工作者角色调用F代码)保持不变。由于这些更改,我在部署后收到了以下消息: Could not load file or assembly 'FSharp.Core, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependen

我有一个完善的项目,包括三个工人角色。这个项目一直使用F#,不是在工作者角色本身中,而是在他们调用的函数中。我最近在项目中添加了另一个工作者角色,但架构(C工作者角色调用F代码)保持不变。由于这些更改,我在部署后收到了以下消息:

Could not load file or assembly 'FSharp.Core, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference.
这在Autofac依赖项解析期间发生:

Autofac.Core.DependencyResolutionException", "exceptionMessage": "An exception was thrown while invoking the constructor 'Void .ctor(Amazon.DynamoDBv2.AmazonDynamoDBConfig
我知道这是一个众所周知的问题,解决方案通常是添加一些绑定重定向。我添加了一个重定向,因此:

<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" />

…添加到解决方案中具有app.config(包括所有工作人员角色)的每个项目。我还验证了对FSharp.core的每个引用都使用版本4.3.1.0,并将copy local设置为true


我还尝试通过FSharp.core nuget包将FSharp.core添加到解决方案中的C#项目中。

我不确定您为什么需要一个BR,因为我觉得这一直都是可行的,而仅仅添加一个新的工作者角色不知怎的把事情搞砸了

在不了解部署过程的情况下,我建议首先只执行云服务的手动包(您可以直接在Visual Studio中或使用
cspack
命令行执行此操作)。这将为您提供一个zip文件,其中包含将部署到worker角色中的所有代码-确保其中包含FSharp.Core(以及正确的版本)

我还建议你做一个快速的区分(如果你还没有这样做的话),看看自从你在中添加了新的工作者角色以来发生了什么变化


最后-请注意FSharp.Core Nuget包-FSharp.Core在Visual Studio中的处理方式不同,如果项目中已经引用了FSharp.Core的版本,则默认情况下不会引用Nuget版本。

谢谢-这里有几个精彩的提示。我会尽快发布结果。打包云服务,将cspkg文件重命名为zip并解压缩。将内部cssx文件重命名为zip并解压缩。发现其中同时存在FSharp.core.dll 4.3.1.0和4.4。意识到这是通过安装FSharp.Core Nuget包完成的。恢复该更改,重复上述操作,发现现在所有FSharp.core.dll都是4.3.1.0。现在重新部署该版本以证明问题仍然存在(我认为这将是在我使用FSharp.core之前发生的事情)。是的,再次失败-仍然无法加载文件或程序集“FSharp.Core,版本=4.3.1.0,区域性=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。定位到的程序集的清单定义与程序集引用不匹配”。我将吹走整个分支生成,并重新创建它,以防在生成过程中没有更新某些内容(MyGet)。使用重建的分支生成再次失败。现在,在替换所有绑定后重试oldVersion=“0.0.0-4.3.1.0”“使用0.0.0.0-4.4.0.0时再次失败。diff方法在逻辑上是合理的,但是有几十个提交(每个提交都有许多文件)需要处理——当您不知道自己在寻找什么时,这是很困难的。Azure支持将返回给我,所以这可能会发生。否则的话,我就没有主意了。我可能会尝试对项目进行打包,但我不愿意这样做,因为这是维护人员在遇到此组件时需要学习的另一件事。