• J
    Pass through features, publicsign, and deterministic flags to the IDE · 62f3a4af
    Jason Malinowski 提交于
    This adds support for a new ICompilerOptionsHostObject which is how we
    can pass options through the project system without having to manually
    add separate properties for everything as we've traditionally done in
    the past. To ensure compatibility with "new" compiler tasks against
    "old" project systems, and "new" project systems against "old" tasks, we
    continue to use the historical ICscHostObject* and IVbcHostObject*
    properties for all existing values, and only use this property to
    shuttle through new values. For the rest of Visual Studio 2015, we can
    just use this for any new "simple" switches that we must pass along.  We
    still would need to do additional work in the project system for any
    inputs that are lists of files because of the fast-up-to-date check.
    
    Longer term, there is still the unanswered question of how we want to
    future versions of Visual Studio to get command line options to
    completely get rid of all language service knowledge of this. There are
    two possible approaches:
    
    1. We just use the support added in #4604 and just delete this entirely.
    
    2. We continue to use ICompilerOptionsHostObject. My proposal for that
       would be we continue to use the model of "we pass all options not
       supported by a strongly typed host object interface to
       ICompilerOptionsHostObject", and the project
       system would just remove all support for everything else and
       fail those QueryInterface calls.
    
    This is therefore written with the idea that we could switch to option 2
    in a coordinated way, if we wanted to do so.
    
    Fixes #7812, assuming you have an updated csproj.dll and msvbprj.dll
    which understands the new ICompilerOptionsHostObject.
    62f3a4af
Csc.cs 37.8 KB