-
由 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