【问题标题】:Can't reference an F# class library无法引用 F# 类库
【发布时间】:2016-06-30 01:52:58
【问题描述】:

这个问题与标题中描述的完全一样。

我有一个可移植的 F# 类库。我创建了一个 ASP.NET Core Web 应用程序(.NET Framework 和 .NET Core),我尝试从中添加对我的 F# 类库的引用。

尝试添加引用会给出一条消息:

不支持以下项目作为参考:

当前项目不支持项目类型,无法(原文如此)引用。

这非常令人失望,因为 .NET Core 现已全面上市。

在解决此错误时是否有任何解决方法?

【问题讨论】:

    标签: f# asp.net-core


    【解决方案1】:

    我有一个项目,我从 .net 核心的 Beta8 位开始,从那时起我有一个 F# 库,我在 asp.net 核心 C# 应用程序中使用它。 (顺便说一句,here 是一个基于 RC2 的最小示例,用于从基于 net core 的控制台应用程序中引用 F# 库)

    我是这样做的:

    目前(据我所知)VS 中没有创建基于 coreCLR 的 F# 库的模板(F# 下的 PLC 模板都是基于完整框架的,但是即使它运行,您仍然无法从 asp.net 核心引用在完整框架上),因此您必须使用命令行来执行此操作。这是由以下人员完成的:

    dotnet new --lang F#
    

    这将为您创建一个 hello world coreCLR F# 应用程序。您可以通过修改project.json文件将应用变成类库。

    如果您有 VS 解决方案并单击“添加”->“现有项目”,则可以选择 project.json 文件。这样您就可以将其添加到您的解决方案中(顺便说一句。还将创建一个 xproj 文件)。

    因此,此时您的解决方案中将包含基于 coreCLR 的 F# 项目。我相信通过右键单击 asp.net 核心项目并转到“添加”->“参考”-> 项目->解决方案并选择 F# 库,您已经可以引用它了。如果这样不行,你可以手动做:只需在asp.net核心应用的project.json中的“dependencies”下列出F#项目即可。

    如果您的 asp.net 核心应用程序在完整框架上运行,仍需要执行这些步骤。这实际上并不重要。

    现在是坏的部分:

    • 在 RTM(周一发布)中,由于某些依赖性问题,“dotnet new”命令会创建不兼容的 F# 应用程序。这是跟踪here(标题写着“在 macOS 上”,但在 Windows 上是一样的),一旦解决了这应该没问题(或者如果你还没有安装 RTM 并且你有 RC2,你也很好) .
    • 无法跨 F# 和 C# 进行智能感知和调试(我已将其发布在 here

    【讨论】:

    • 有这方面的最新信息吗?我正在尝试让 F# 类库在与其他 C# asp.net 核心项目的解决方案中一起工作,但没有任何运气。在这种情况下,是否有当前工作的 project.json 的一个很好的例子?
    • @JoeAudette 下面是一个带有示例解决方案的更详细的描述:kalapos.azurewebsites.net/… 据我所知,这是当前阶段(这就是我今天的工作方式......)。根据路线图“在 F# 语言服务上提供工作区支持的更好 IDE 体验”将出现在 RTM 工具中(这究竟意味着我不知道..)blogs.msdn.microsoft.com/dotnet/2016/07/15/net-core-roadmap
    • @gegkalapos,谢谢!我遇到的问题是我的 F# 类库我想创建一个控制器,在 project.json 中我添加了所需的依赖项,但是 VS 说命名空间在我的代码中的这一行不可用,就像它看不到我引用的依赖项:打开 Microsoft.AspNetCore.Mvc
    • 等等,我明白了,即使 VS 下划线并显示错误,该项目也确实没有错误地构建。这将很难知道真正的错误,但如果我在 VS Code 中打开文件夹,它会显示没有错误,所以也许这是我在编辑 F# 时应该工作的地方,只使用 VS 2015 处理 C# 代码?
    • @JoeAudette:好吧,我并没有真正使用 VS 代码......不知何故,我更喜欢完整的 VS,我只是忽略了“错误列表”窗口。在编译期间,我总是查看“输出”窗口。它显示了编译器的真正错误(如果有的话)。但是当然,如​​果这在 VS Code 中处理得更好,那可能会更方便。但是是的..底线是:当前的工具还没有 100% 准备好,所以每个人都使用某种解决方法..
    【解决方案2】:

    虽然 .NET Core 已经正式发布,但 ASP.NET Core Web 应用程序中的绝大多数 nuget 包都处于预发布阶段。此外,尽管实体框架身份模型已被清理,但当我尝试实现实体框架迁移时,我尝试将用户和角色的键列从字符串更改为整数时产生了一个模糊的错误。我知道我可以为 .NET Web 应用程序做到这一点,即使该过程在某些地方很笨拙。所以现在我已经回到使用 .NET Framework Web 应用程序。我期待看到一个完全成熟的 ASP.NET Core Web 应用程序版本。它还没有准备好,但看起来很有希望。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 2011-02-24
      相关资源
      最近更新 更多