結論
VSCode OmniSharp/C# intellisense does not see Ionide/F# lib modules/namespaces参照
はじめに
VSCodeにて、F#で作成した型を、C#から参照またはインテリセンスを効かせようと思ったんですけど
dotnetadd~~.csprojreference~~.fsprojで単純に追加しただけでは見れませんでした。
方法について日本語での記事がなかったので紹介してみます。
手順の原典は
VSCode OmniSharp/C# intellisense does not see Ionide/F# lib modules/namespaces
を見てください。
試した環境
- .NET Core SDK (global.json を反映): Version: 3.1.100
- VSCode バージョン: 1.41.1 (system setup)
方法
ビルドしたfsprojのdllの位置をReferenceとしてcsprojに追加する
例を記載すると
csprojの例
<ItemGroup><ReferenceInclude="domain.dll"><HintPath>..\domain\bin\Debug\netstandard2.1\win10-x86\domain.dll</HintPath></Reference><ProjectReferenceInclude="..\domain\domain.fsproj"/></ItemGroup>VSCodeで使用しているOmniSharpがF#を理解してくれないので中間言語にしてから理解させている認識です。
なので参照先はF#のコードそのものではなくC#風に変換された型になります。
またF#のコードを修正した場合は、F#単品でビルドしてからOmniSharpを再起動させないと反映されません。
まとめ
インテリセンスが効くのと効かないのでは天地の違いがあるため、この方法を知ることができて大変助かりました。