Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Changelog For v3.0.0 #194

Closed
mark-monteiro opened this issue Sep 6, 2024 · 4 comments
Closed

Changelog For v3.0.0 #194

mark-monteiro opened this issue Sep 6, 2024 · 4 comments

Comments

@mark-monteiro
Copy link

There doesn't appear to be any changelog or release notes for the new version 3.0.0. Would it be possible to add a changelog to this project so we can know what was changed before attempting to upgrade?

@Pxtl
Copy link

Pxtl commented Oct 24, 2024

Yes, when I went to upgrade a project's dependencies I saw 3.0.0 was out and came here to look for documentation on what the implications are and found nothing. Major version bump generally means breaking backwards compatibility so information would be really appreciated.

@mark-monteiro
Copy link
Author

@mhutch Looking at the comparison between v3.0.0 and the previous release v.2.3.1, all of the changes are yours. Would you be able to provide a brief summary of the changes or at least any major breaking changes? That would be very helpful for anyone looking to upgrade.

@mhutch
Copy link
Member

mhutch commented Oct 24, 2024

The major change in Mono.TextTemplating 3.0.0 is the addition of a new T4.BuildTools package. This contains MSBuild targets for build-time text transformations. Although fully featured, it has not been extensively tested and further feedback would be appreciated. These targets are documented in the package README.md and include a bundled schema for the MSBuild Editor. These targets are fully integrated into the Visual Studio design time build and mechanisms for executing targets on save, making it straightforward to migrate to Mono.TextTransform from the VS T4 engine.

Although there are no API breaking changes, the major version was bumped following SemVer rules as there are multiple changes to assembly loading rules that could result in breaking behavioral changes in some cases.

  • Fixed assembly resolution bugs specific to the AssemblyLoadContext codepath used on .NET Core. It should now be consistent with the assembly resolution behavior with AppDomain on .NET Framework.
  • Added a DisableAssemblyLoadContext host option to opt out of AssemblyLoadContext usage.
  • Assemblies known to the host now take precedence over identically-named assemblies passed to the generator. This prevents issues where a reference assembly passed to the host would fail to load at runtime.
  • When the host specifies to use the current AppDomain for template execution, then the AppDomain codepaths will be skipped entirely. This optimization may lead to changes in assembly loading behavior.

There are also miscellaneous bug fixes and improvements to compatibility with newer .NET and C# version:

  • Handling of the C# language version has been reworked (1, 2). The language version and runtime version are now decoupled, and when a language version is not explicitly specified, it will default to the highest language version supported by the target runtime.
  • .NET 9 and C# 12 are now supported.
  • The CLI tool now has a --useRelativeLinePragmas argument.
  • The DOTNET_ROOT environment variable is now respected.
  • The new CreateTempSubdirectory method from .NET 7 is now used for temp directory creation, massively reducing the chance of temp directory name collisions. This has also been backported to older runtimes

@mark-monteiro
Copy link
Author

Thank you so much for the detailed response! The T4.BuildTools package looks super useful I will give a try when I have time

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants