T4ParameterValues Support #11
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reason for PR
Wanting to move a project over from MSBuild.Full and
Microsoft.TextTemplating, but needed to useT4ParameterValues.Outline of key changes
T4.Buildto take in one or many--variablearguments, using"Include=Value"format.BuildTemplateGeneratorto enable support for a preprocessingFunc<>, which is called between input file validation, and processing of template content.TemplateGeneratormethods, I had to pull that code into this class. Ideally,TemplateGeneratorcould expose these asprotected/virtual, so that they can be overridden by implementers.StringBuilderfor preprocessing replacement (reduced allocations) so that we don't load up aStringBuilder, and then have it generate the same string, if there are no variables to replace.Ancillary changes
build/common.targetsItemtypes to search for transform files; better aligns withMicrosoft.TextTemplatingMSBuild.Microsoft.TextTemplating.targetsuses the exact list as added, and I was working on a separate project where the TT file was added asContent, notNone. Given that the sameGeneratorguard is used, this seemed safe.T4.Build/.gitignoreT4.Build/tools/*files.Referenceand directImportfrom another project to test and use these changes, and needed to directory junctionT4.Build/tools/toT4.Build\bin\Debug\netcoreapp3.1\so that the import/targets pathing aligned. Can remove if you don't like it.