Skip to content

ExternalToolをVSCodeにすると、必要なusing参照が削除されてしまう場合がある #6

@naichilab

Description

@naichilab

概要

  • pretendland_yakult の 88698cec8a649d333a3d043812f4f247e6bfd2a5 に対してコードフォーマットをかけると、
  • Assets/Scripts/View/StoryInspect/BottleColumnView.cs にて必要なBoothのusingが消えてしまうという事象が発生した。
Image

分かっている症状

  • ExternalToolにVSCodeを指定する場合と、Riderを指定する場合とで出力されるcsprojの形式が異なる。
  • riderで出力したcsprojは、dotnet buildでそのままビルドできる。
  • vscodeで出力したcsprojは、dotnet buildで指定してもビルドできない。
  • (どちらもUnity上では問題なくコンパイルできる)

該当ハッシュをvscodeで開いた場合

  • PretendLand.Yakult.View.StoryInspect.BottleColumnViewにて以下のエラーが出る
型または名前空間の名前 'LogEventTap' が名前空間 'PretendLand.Analytics' に存在しません (アセンブリ参照があることを確認してください)[CS0234](https://msdn.microsoft.com/query/roslyn.query?appId=roslyn&k=k(CS0234))
namespace PretendLand.Analytics
  • 上記に関連して、下記警告も出る
Using ディレクティブは必要ありません。[IDE0005](https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0005)
namespace PretendLand.Booth

vscodeでエラーが出ないように修正する場合は以下のようにする。

- using PretendLand.Booth;


- Analytics.LogEventTap("abnormal");
+ Booth.Analytics.LogEventTap("abnormal");

該当ハッシュをriderで開いた場合

  • 何もしなくてもエラーはでない

対応方法

  • vscodeのまま正しく認識させる方法 -> 不明

影響

  • コードフォーマットを行うActionは 202ビルド鯖のSelf-Hosted runnerで動いている。
  • ビルド鯖にはRiderのライセンスが無いため、UnityのExternalToolにはVSCodeを指定してある。
  • そのため、今回のようなコードを整形した場合、アセンブリ参照が正しく解決されずに必要なusingが消えてしまう。
  • ヤクルト以外のリポジトリで同様の症状が出るのかは把握できていない。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions