【问题标题】:FSharp.Core.sigdata not found alongside FSharp.Core在 FSharp.Core 旁边找不到 FSharp.Core.sigdata
【发布时间】:2010-04-28 22:00:28
【问题描述】:

我正在尝试将 F# 用于 ASP.NET MVC 应用程序。我的控制器操作之一将 F# 列表发送到视图,所以我写:

<%@ Page Language="C#" Inherits="ViewPage<FSharpList<int>>" %>

当然,为此,我必须将 Microsoft.FSharp.Collections 添加到我的 web.config 中的 namespaces 元素:

<add namespace="Microsoft.FSharp.Collections"/>

并在assemblies 元素中添加对FSharp.Core 的引用:

<add assembly="FSharp.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>

添加此程序集引用后,每个视图(无论是否使用 F# 类型)都会失败并出现以下错误:

错误 FS1221:在 FSharp.Core 旁边找不到 FSharp.Core.sigdata

我可以通过在我的视图中不包含任何 F# 特定类型来解决此问题,但此错误的原因是什么?另外,FSharp.Core.sigdata 在哪里?它不在我的 GAC 中,我在任何地方都找不到。

【问题讨论】:

  • 你能把你当前的项目上传到某个地方吗?我很乐意尝试它,但是从一些项目开始会很有用:-)。
  • @Tomas:谢谢,我会尝试创建一个小项目来重现这一点。
  • @Tomas:这是项目:box.net/shared/7xnkfg5yps
  • 我也有类似的问题。不过是暂时的。在我的 CI 服务器上,一个构建工作正常,另一个在查找 sigdata 时失败。他们使用完全相同的构建脚本。它们之间唯一的区别是当没有 ubild 错误时会发生什么

标签: asp.net-mvc f#


【解决方案1】:

您会在参考程序集中找到它,因为 sigdata 和 optdata 是设计时的东西(但我猜 CodeDom 也需要它们?),例如:

C:\Program Files\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.dll
C:\Program Files\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.optdata
C:\Program Files\Reference Assemblies\Microsoft\FSharp\2.0\Runtime\v2.0\FSharp.Core.sigdata

如果您将那些复制到应用正在使用的 FSharp.Core 旁边,它可能会起作用。

【讨论】:

  • 尝试将 optdata 和 sigdata 复制到我的应用程序的 bin,同样的错误。我还尝试将它们复制到 GAC 中的 FSharp.Core 目录,同样的事情。
  • 在复制 optdata 和 sigdata 以及 FSharp.Core.dll 后为我解决了问题。
  • @tovyo:对于 Web 应用程序?
  • 在部署文件夹中复制 opdata 和 sigdata 以及 FSharp.Core.dll 在 .Net 4.5 控制台应用程序中对我有用
  • 这实际上有所帮助,将 FSharp.Core.optdata 和 FSharp.Core.sigdata 作为内容添加到项目中并将属性设置为 CopyAlways 并解决了问题。
猜你喜欢
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
  • 2019-07-15
  • 1970-01-01
  • 2015-03-18
  • 2016-11-21
相关资源
最近更新 更多