gpt4 book ai didi

silverlight - 在 Azure 中托管的 WCF RIA 服务应用程序的 Web 应用程序中引用 64 位 dll

转载 作者:行者123 更新时间:2023-12-03 03:20:57 24 4
gpt4 key购买 nike

我有一个使用 WCF RIA 服务并托管在 Azure 中的 Silverlight 应用程序。

Web 应用程序引用 Microsoft Z3 dll:

如果我引用此 dll 的 32 位版本,Azure 无法托管它,因为它需要 64 位版本。 如果我引用 64 位版本,RIA 服务将无法编译。

我需要找到一种在 Azure 中使用 32 位 dll 的方法,或者我需要找到一种为 RIA 服务引用 63 位 dll 的方法。

关于哪种方法是最好的方法以及如何进行有什么建议吗?

谢谢

山姆

最佳答案

我想我会快速分享我的方法,以防有人再次需要这样做或类似的事情,因为这些问题对于 Azure 中的其他 native C++ 库来说很常见。

问题与很多事情有关:Azure 没有 Z3 所需的所有 VC++ 运行时 dll; Z3 安装不包括其 bin 中的其他依赖项;如果解决方案或 bin 文件夹中存在任何 64 位 dll,Silverlight RIA 服务将无法编译; Azure 未运行 32 位版本的 Z3 dll; Azure 没有 F# 运行时等..

这就是我让它工作的方式:

  1. 为调用 Z3 的代码抽象出一个接口(interface)(在我的例子中,XxxAnalyzerCommon.dll 中有一个 IXxxAnalyzer 接口(interface))

  2. 请勿将此接口(interface)的具体 F# 实现作为引用、内容或资源直接添加到解决方案中。

  3. 而是使用 .NET zip 库来打包:

     a. XxxAnalyzer64.dll  (64bit version of the F# implementation of IXxxAnalyzer)

    b. XxxAnalyzerCommon.dll

    c. FSharp.Core.dll

    d. FSharp.PowerPack.dll

    e. Microsoft.Z3.dll (64bit version)
  4. 将 zip 作为内容添加到 Web 项目

  5. 将 VC++ 可再发行组件(64 位)vcredist_x64.exe 添加为 Web 项目的内容

  6. 创建一个 Azure 启动任务,在首次部署时以静默方式安装 VC++ redist。

  7. 在角色配置中创建 Azure 本地存储资源

  8. 启动时,将 zip 解压到本地存储(如果尚不存在)

  9. 使用 MEF(托管扩展性框架)通过指向本地存储的 DirectoryCatalog 动态导入具体的 IAnalyzer,因此项目不需要对 XxxAnalyzer64.dll 有任何直接引用或依赖。

FSharp.PowerPack.dll 强烈引用早期版本的 FSharp.Core.dll 也存在问题,我必须在 web.config 中使用程序集重定向语句来解决该问题。

关于silverlight - 在 Azure 中托管的 WCF RIA 服务应用程序的 Web 应用程序中引用 64 位 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7169168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com