gpt4 book ai didi

c# - 使用 FSharp.Data 将 Web 应用程序部署到 Azure 网站

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:20 29 4
gpt4 key购买 nike

这是与 How do I deploy a web application using F# to Azure Web Site 类似的问题.我的 C#/F# MVC 项目使用 FSharp.Data NuGet 包,部署过程失败并显示消息

无法找到程序集“FSharp.Data,Version=1.1.4.0,Culture=neutral,PublicKeyToken=null”。

我能看到的唯一有效解决方法是将所有 NuGet 引用(FSharp.Data、FSharp.Data.DesignTime、FSharp.Data.Experimental、FSharp.Data.Experimental.DesignTime)替换为对 DLL 的显式引用,和复制本地设置为真。我不愿意以这种方式将 NuGet 婴儿连同洗澡水一起倒掉。有没有更聪明的方法?或者,是否有我可以投票的未决问题?

最佳答案

您可以添加 <dependentAssembly>元素到你的web.config确保 FSharp.Data将项目部署到 Azure 时包含程序集。在将混合的 F#/C# ASP.NET MVC 项目部署到 Azure 时,我曾使用过这种技术;已经有一段时间了,但我认为我不必更改 Copy Local在引用的程序集上设置(我通过 NuGet 添加)。

无论如何,您需要添加的条目应该如下所示:

<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="FSharp.Data" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

根据 Rob 的评论,他仍然收到相同的错误消息,下面是我将采取的后续步骤来诊断问题。

  • 构建 Azure 部署包(您不需要部署它)。构建完成后,找到部署包文件(*.cspkg);这实际上只是一个 zip 文件,所以将内容解压到一个文件夹中,例如,使用 7-zip。 .在提取的文件夹中,应该有一个带有 *.cssx 的文件。扩展比其他扩展大得多;它也是一个 zip 文件,因此将其解压缩到另一个文件夹中,然后使用 Windows 资源管理器浏览到该文件夹​​。从那里,进入 sitesroot文件夹,然后是 0文件夹。您现在应该查看网站的根目录(即,将复制到网络服务器上的 C:\inetpub\wwwroot 的文件/文件夹)。检查 bin文件夹——你看到FSharp.Data了吗?在那里组装?如果不是,这是构建/打包问题,而不是服务器问题;如果你确实看到 FSharp.Data组装,进行下一步。
  • 将您的项目部署到 Azure,然后将远程桌面部署到托管您的项目的实例之一。 (有一个在实例上启用远程桌面的特殊程序——如果您还没有这样做,则需要在继续之前这样做。)登录后,您可以打开事件查看器(在管理工具下);查看 Windows 日志 下的应用程序 日志——那里有任何 ASP.NET 错误吗?如果是这样,请单击它们并查看错误消息,它可能包含有关无法解析 FSharp.Data 的 .NET 异常消息。集会。如果是,请浏览至 C:\inetpub\wwwroot\并确保 FSharp.Databin网站的文件夹。如果是,请继续下一步。
  • 如果FSharp.Data程序集与您的 Web 项目一起被正确打包和部署,那么当您的项目在 .NET 4.5 上运行时,它(或其依赖项之一)作为 .NET 4.0 程序集可能会出现一些问题。登录到 Azure 实例(通过远程桌面)后,您可以启用 Fusion 日志记录并使用 Fusion 日志查看器来跟踪 CLR 如何尝试加载程序集。如果您确实找到了问题,解决它的可能方法是添加 <bindingRedirect> <dependentAssembly> 中的元素您在 web.config 中创建的条目.以下是我如何让原始 F# PowerPack(针对 FSharp.Core 的 .NET 2.0 版本)在我的 .NET 4.0 上的 F#/C# 项目中工作:

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

关于c# - 使用 FSharp.Data 将 Web 应用程序部署到 Azure 网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17221978/

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