Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9743

VSCodeでC#とF#混在プロジェクトでインテリセンスを効かせる

$
0
0

結論

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を再起動させないと反映されません。

まとめ

インテリセンスが効くのと効かないのでは天地の違いがあるため、この方法を知ることができて大変助かりました。


Viewing all articles
Browse latest Browse all 9743

Trending Articles