如何知道解决方案中是否声明了符号?

时间:2016-09-09 14:50:39

标签: c# roslyn

在Roslyn DiagnosticAnalyzer中分析C#源代码时,我有一个ITypeSymbol。如何确定此类型是在源中声明还是仅通过程序集引用引用?

我目前的解决方案是检查符号是否有DeclaringSyntaxReferences。这在Visual Studio中很有用。但是,当我在MsBuild执行中进行分析时,我的结果并不准确。问题是MsBuild逐个构建每个项目,因此如果在另一个项目中声明了类型符号,那么DeclaringSyntaxReferences将为空。

有没有办法区分"项目参考"来自"装配参考"?

1 个答案:

答案 0 :(得分:-1)

希望这种方法有所帮助:

ToggleButton toggle = new ToggleButton();

Service<Void> toggleService = new Service<Void>() {

    @Override
    protected Task<Void> createTask() {

        return new Task<Void>(){

            @Override
            protected Void call() throws Exception {

                while(!isCancelled()) {
                    int randomInt = (int )(Math.random() * 37 + 1);
                    System.out.println(randomInt);
                }
                return null;
            }
        };
    }
};

toggle.selectedProperty().addListener((obs, oldVal, newVal) -> {
    if(newVal) {
        toggleService.reset();
        toggleService.start();
    }
    else 
        toggleService.cancel();

});