gpt4 book ai didi

.net - C# - .NET Core 上的 Visual Studio 2015 中的 F# 互操作支持

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

注意:这里我说的是 dotnet 核心而不是完整的框架!对于完整的框架,有很多关于此的文档,但这是 dotnet 核心。

我有一个由以下人员创建的 F# 库

dotnet new --lang F#

以及一个 ASP.NET Core RC2 C# 应用程序(由 VS 中的 File->New Project 创建)。

现在我使用 C# 中的 F# 库(我猜这是一个非常常见的场景......)。 F# 项目在 project.json 中被引用为任何其他 .net 库(通过在依赖项下列出它)

现在所有这些都可以编译并运行良好,这太棒了!

唯一的问题是 VS 似乎不支持它。没有智能感知和行,我在 C# 中使用 F# 函数的地方被标记为错误。从 C# 调试到 F# 也不起作用。我在带有 VS Code 的 Mac 上尝试过,同样的......

当我点击编译时,编译器会解决这个问题,一切都很好。

此屏幕截图对其进行了总结(这是我从 C# 调用 F# 函数的地方):
enter image description here

所以基本上我最终得到了带有一堆错误的 VS 解决方案,但仍然可以编译。

Here是一个简单的复制器。

问题:
  • 智能感知和调试应该在 VS 中工作吗?
  • 如果是,我做错了什么?
  • 如果否,此方案是否计划包含在
    future ?

  • 这是复制器的代码:

    F# 库 - project.json(由 cli 创建 - dotnet new --lang F#)
      "version": "1.0.0-*",
    "buildOptions": {
    "compilerName": "fsc",
    "compile": {
    "includeFiles": [
    "FSharpLibrary.fs"
    ]
    }
    },
    "dependencies": {
    "Microsoft.FSharp.Core.netcore": "1.0.0-alpha-160316",
    "NETStandard.Library": "1.5.0-rc2-24027"
    },
    "tools": {
    "dotnet-compile-fsc": {
    "version": "1.0.0-*",
    "imports": [
    "dnxcore50",
    "portable-net45+win81",
    "netstandard1.3"
    ]
    }
    },
    "frameworks": {
    "netstandard1.5": {
    "imports": [
    "portable-net45+win8",
    "dnxcore50"
    ]
    }
    }

    F#库,代码:
    namespace FSharpLibrary

    module Sample =

    let public FSharpFunction number =
    printfn "Hello From F#, %d" number

    C# 应用程序(这里我使用控制台应用程序,但与 asp.net core 相同)
    using System;
    namespace ConsoleAppCSharp
    {
    public class Program
    {
    public static void Main(string[] args)
    {
    FSharpLibrary.Sample.FSharpFunction(42); //<- This is red. and marked as error.
    Console.ReadKey();
    }
    }
    }

    C# 控制台应用程序 project.json
    {
    "version": "1.0.0-*",
    "buildOptions": {
    "emitEntryPoint": true
    },

    "dependencies": {
    "LibraryFSharp": "1.0.0-*",
    "Microsoft.NETCore.App": {
    "type": "platform",
    "version": "1.0.0-rc2-3002702"
    }
    },

    "frameworks": {
    "netcoreapp1.0": {
    "imports": "dnxcore50"
    }
    }
    }

    谢谢

    最佳答案

    所以目前我上面描述的是你在 Visual Studio 2015 中使用预览工具获得的所有支持。 Visual Studio 15 有望更好,但当前的预览版(预览版 5)does not have .NET Core support at all .

    值得一试的是 Visual Studio Code。在 F# 中,您可以获得 C# 中定义的类型的智能感知。所以对于 F#-C# 互操作性,目前 VS Code 比完整的 VS 有更好的支持。

    关于.net - C# - .NET Core 上的 Visual Studio 2015 中的 F# 互操作支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37719061/

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