Open
Conversation
added 3 commits
April 30, 2023 21:11
… a preprocessor over the templates before calling into Mono.TextTemplating - Added support to T4.Build to take in one or many --variable arguments, using "Include=Value" format. - Added processing of passed in variables into a read-only dictionary. - Updated BuildTemplateGenerator to enable support for a preprocessing Func<>, which is called between input file validation, and processing of content. | - Due to accessibility restrictions of some of the TemplateGenerator methods, I had to pull that code into this class. Ideally TemplateGenerator should expose these as protected/virtual, so that they can be overridden in implementers. - Added a guarded StringBuilder for preprocessing so that we don't load up a StringBuilder, and then have it generate the same string, if there are no variables to replace.
…scope of item types to search for transform files Microsoft.TextTemplating.targets uses this exact list, and I was working on a separate project where the TT file was added as Content, not None. Given that the same Generator guard is used, this seemed safe.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.