Open6
Unity Roslynめも
Unity で Roslyn のはじめかた
Roslynとは
利用可能Ver : Unity 2020.2〜
Unity 公式 : Roslyn アナライザーとルールセットファイル
Unity 公式 : Roslyn analyzers and source generators
2021.3からは、ソースジェネレーターについての言及もある
VSCodeでRoslynを使う場合
- Project Rootに omnisharp.json を作成する
- ↓コピペする
{
"RoslynExtensionsOptions": {
"EnableAnalyzersSupport": true,
"LocationPaths": ["Assets/Analyzers"]
}
}
- "EnableAnalyzersSupport" Analyzerを有効にするか?
- "LocationPaths" Analyzerの場所
とりあえずAnalyzerを使う方法
公式引用
- Unity プロジェクトの Assets フォルダー (または Assets フォルダー内にネストになっている任意のフォルダー) に移動します。
- エディターで .dll ファイルを選択します。
- Plugin Inspector の Select platforms for plugin で、 Any Platform を無効にします。Include platforms のセクションで、 Editor と Standalone のプラットフォームを無効にします。
- すべてのプラットフォームを無効にする
- すべての DLL に新しい アセットラベル として
RoslynAnalyzer
を与えます。
BannedApiAnalyzers 設定方法
Analyzerを取得、配置する
- BannedApiAnalyzerをダウンロードする
- ダウンロードした
.nupkg``の拡張子を
.zip```にリネームし解凍する - root - analyzers - dotnet - cs フォルダから
Microsoft.CodeAnalysis.BannedApiAnalyzers.dll
とMicrosoft.CodeAnalysis.CSharp.BannedApiAnalyzers.dll
をUnityProjectに配置する
シンボル定義テキストファイル(ファイル名は一例)
- ProjectRootに
BannedSymbols.txt
を作成する- Analyzerを入れいているフォルダに一緒にしても良いかも(UnityEditorから微妙にアクセスしやすいかも)
- 確認用に下記をコピペ
M:UnityEngine.Debug.Log(System.Object);Debug.Log MyLoggerを使用してください
M:UnityEngine.Debug.Log(System.Object,UnityEngine.Object);Debug.Log MyLoggerを使用してください
.propsファイル(ファイル名は一例)
- ProjectRootに
BannedSymbols.props
を作成する- <AdditionalFiles> にBannedSymbosl.txtを追記するためのprops
- 下記をコピペする
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<AdditionalFiles Include="$(ProjectDir)\BannedSymbols.txt" />
</ItemGroup>
</Project>
-
\
と¥
は違う(1敗)
csprojを編集する
直接設定もできるが面倒なので
- CsprojModifierをプロジェクトに追加する
https://github.com/Cysharp/CsprojModifier - Project Settings - Editor - C# Project Modifierを選択
- Additional project importsで
+
を押下しBannedSymbols.props
を追加する - Regenerate project filesボタンを押下する
確認する
ソースジェネレーター(作成予定地)
↓の確認(参考資料
Unity 公式 : Roslyn analyzers and source generators
Analyzers
小ネタ
- Unity 公式にも記載があるがVisualStudio,JetBrains Riderでは、特に操作の必要はない
- VSCode はC#拡張のomnisharp,mono,.net core sdk のセットアップを終わらせておくこと
- VSCodeのインテリセンスが切れる場合、下記を.vscode - settings.jsonに追記を試す
"omnisharp.useModernNet": true
- EditorConsoleにも警告を表示したい...
- .editorconfigからも警告を制御できるらしい
- ルールセットの話
- .asmdef の話
参考にしています。