• H
    Track metadata missing. · 416cdaf5
    Heejae Chang 提交于
    Jason left feedback on devdiv side PR about active config change which I didn't thought of before.
    
    so, I tested it and it surfaced some issues. first is, doing reload projects on intellisense build failure can be expensive in some cases, since we already in push mode for workspace events. so, I implemented all the plumbing so that we can just update that one bit.
    
    another issue I found is that, when there is cross language p2p reference A -> B. if B fails on intellisense build, B basically has no information including output path, which means it will not be resolved as cross language p2p reference to A. so, for A's point of view, there is no missing information and think it is fully loaded (since A don't consider B as its dependency), it just thinks one of its file reference (B's output path) is missing. so we end up again shows bunch of errors.
    
    there was no way to resolve this issue except tracking missing metadata reference, so I tried to find cheapest way to track this as much as I can. since we are snapshot model, and file is external to us, I couldnt find a solution which is 100% bullet proof except we checking it every time we create compilation but that is too expensive for the code path. so I check file at the metadata entry point. and rely on our file change notification to correct itself if snapshot become out of sync with reality.
    
    this should fix this another cross language reference issue.
    416cdaf5
Workspace.cs 69.7 KB