首页 文章

启动Azure辅助角色期间的FSharp.Core版本错误

提问于
浏览
1

我有一个完善的项目,包括三个 Worker 角色 . 这个项目一直使用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#项目中 .

1 回答

  • 3

    我不知道为什么你需要一个BR在这里,因为它听起来像我一直在工作,只是添加一个新的 Worker 角色有点拙劣的东西 .

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

    我还建议你做一个快速的差异(如果你还没有这样做),因为你添加了新的辅助角色后发生了变化 .

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

相关问题