Roslyn DiagnosticAnalyzer
のC#ソースコードを解析すると、ITypeSymbol
があります。この型がソースで宣言されるのか、アセンブリ参照によってのみ参照されるのかをどうやって判断できますか?シンボルがソリューション内で宣言されているかどうかを知る方法?
私の現在の解決策は、シンボルにDeclaringSyntaxReferences
があるかどうかをチェックすることです。これはVisual Studio内でうまく動作します。しかし、私がMsBuildの実行で分析を行っているとき、私の結果は正確ではありません。問題は、MsBuildが各プロジェクトを1つずつビルドするため、タイプシンボルが別のプロジェクトで宣言されている場合、DeclaringSyntaxReferences
は空になります。
「プロジェクト参照」と「アセンブリ参照」を区別する方法はありますか?
http://stackoverflow.com/questions/39200779/using-roslyn-how-to-check-if-class-comes-from-a-local-project -not-the-bcl-or-n/39202311#39202311 – m0sa
@ m0saありがとう、これは私の質問には答えません。私はこれがVSIXでこれを行う方法だと知っていますが、これはプロジェクト全体でnugetとmsbuildでは動作しません。 – Tamas
これは[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)のインスタンスのように感じます。あなたがそのような区別を知っていたら何をしようとしていますか? –