我有一个完善的项目,包括三个工人角色。这个项目一直使用F#,不是在worker角色本身,而是在他们调用的函数中。我最近在项目中添加了另一个worker角色,但架构(调用F#代码的C#worker角色)保持不变。由于这些更改我在部署后收到了这些消息:
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并将本地集复制为true。
我也尝试通过FSharp.Core nuget包将FSharp.core添加到解决方案中的C#项目。
答案 0 :(得分:3)
我不确定为什么你需要一个BR,因为它听起来像我一直在工作,只是添加一个新的工人角色有点拙劣。
在不知道您的部署过程的情况下,我建议首先执行Cloud Service的手动包(您可以使用cspack
直接在Visual Studio或命令行中执行此操作。这将为您提供一个zip文件,其中包含将部署到辅助角色的所有代码 - 确保它包含FSharp.Core(以及正确的版本)。
我还建议你做一个快速差异(如果你还没有这样做),因为你添加了新的辅助角色后发生了变化。
最后 - 注意FSharp.Core Nuget包 - FSharp.Core被Visual Studio区别对待,默认情况下,如果已经引用了FSharp.Core版本,则不会引用Nuget版本在项目中。