Как перейти к определению исходного кода (не метаданным) с C# на F # в Visual Studio?

У меня есть небольшое консольное приложение C#, в котором есть ссылка на проект F#.

      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# Project, сделав ссылку на F#

Мне нужно, чтобы он переходил от C# к фактическому коду F#, когда я нажимаю F12 (Перейти к определению).

Как это сделать?

1 ответ

К сожалению, VS еще не поддерживает это, только с F# на C# работает с VS 16.10: https://devblogs.microsoft.com/dotnet/f-and-f-tools-update-for-visual-studio-16-10 / # лучшее-смешивание-из-c-и-f-проектов-в-вашем-решении

Лично я прибегал к Jetbrains Rider только для этого, где он работает очень хорошо.

Другие вопросы по тегам