0

我有一个带有 F# 项目参考的小型 C# 控制台应用程序。

using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var number = FS.DecodeRomanNumeral("XV");

            Console.WriteLine("Hello World!");
        }
    }
}

在 F# 项目中,我有以下代码:

module FS

open System

/// Decodes a Roman Number string to a int number // https://twitter.com/nikoloz_p/status/1421218836896960515
let DecodeRomanNumeral RomanNumeral =
    let DigitToNumber = function
        | 'I' -> 1
        | 'V' -> 5
        | 'X' -> 10
        | 'L' -> 50
        | 'C' -> 100
        | 'D' -> 500
        | 'M' -> 1000
        | c -> failwith (sprintf "Invalid digit %c" c)
        
    let rec sum' Numbers = 
        match Numbers with
        | [] -> 0
        | x::y::rest when x < y -> y - x + sum' rest
        | x::rest -> x + sum' rest
    
    RomanNumeral 
        |> Seq.map DigitToNumber
        |> Seq.toList
        |> sum'

当我单击DecodeRomanNumeral单词并按 F12 时,它会显示 Disassembler 窗口,而不是引用项目中的实际 F# 源代码。我注意到此行为发生在 Visual Studio 2019(版本 16.10.4)和 Visual Studio 2022(版本 17.0.0 Preview 2.1)中

反汇编程序

我仔细检查并在 C# 项目上添加了一个项目引用,引用了 F#

添加项目参考

当我按F12(转到定义)时,我需要它从 C# 转到实际的 F# 代码。

怎么做?

4

1 回答 1

3

不幸的是,VS 还不支持,自 VS 16.10 起仅从 F# 到 C# 有效:https ://devblogs.microsoft.com/dotnet/f-and-f-tools-update-for-visual-studio-16-10 /#better-mixing-of-c-and-f-projects-in-your-solution

就我个人而言,我已经为此求助于 Jetbrains Rider,它运行良好。

于 2021-08-06T11:46:02.387 回答