Как перейти к определению исходного кода (не метаданным) с 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 только для этого, где он работает очень хорошо.