• T
    EnC: Tweak handling of out-of-sync documents to work around source file... · 5f86d25c
    Tomáš Matoušek 提交于
    EnC: Tweak handling of out-of-sync documents to work around source file content inconsistencies (#40947)
    
    * Do not block in presence of out-of-sync documents.
    
    Instead, ignore any changes made to these documents while debugging until their content matches the source used to build the baseline DLL.
    
    * Only check output PDB, not debugger SymReader, for document checksums.
    Turns out SymReader does not support reading document checksums once EnC changes have been applied.
    
    Better handle errors that might occur when validating checksums. Previously some of the errors were not reported as diagnostics.
    
    We previously blocked EnC when we observed a source file that is out-of-sync (i.e. its current content does not match the checksum in the originally built PDB). We can however just ignore these files and report a warning that changes made to this file won’t be applied until the file content is reverted back to the state it was when the PDB was built (the file transitions to “matching” state). Once a file is in matching state it can’t change back to another state. We know that we have not applied any change to the code that was compiled from the file because we ignored the file while it was in out-of-sync state. Therefore we know that any changes made from now on can be safely applied to the debuggee.
    
    If we can’t determine whether a file matches or not due to error reading the PDB or the source file content we can treat it similarly to out-of-sync file. That is, ignore any changes until we are able to confirm the file matches. That can happen if, e.g. the PDB is temporarily locked by another process and unlocked later.
    
    Simplify implementation of GetStatusAsync.
    
    Fixes VSO [1051496](https://dev.azure.com/devdiv/DevDiv/_workitems/edit/1051496) ([VS feedback](https://developercommunity.visualstudio.com/content/problem/880533/edits-were-made-which-cannot-be-compiled-stop-debu.html))
    5f86d25c
FeaturesResources.cs.xlf 136.2 KB