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

[msbuild/tests] Use 'dotnet test' for the MSBuild tests (take 2). #21363

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Commits on Oct 3, 2024

  1. [msbuild/tests] Use 'dotnet test' for the MSBuild tests (take 2).

    This is another step towards removing Mono.
    
    This required a few changes:
    
    * Nullability updates in test code.
    * Explicitly sorted list of strings in a warning message, to make the warning text stable.
    * Stopped allowing the test assemblies to see internals of the task assembly. This was necessary for to solve a problem with duplicate types:
        * The netstandard2.0 version of `System.Reflection.Metadata.dll` contains
          the `UnconditionalSuppressMessageAttribute` type (internally).
        * Since we ILMerge the tasks assembly, this type ends up in
          Xamarin.iOS.Tasks.dll (internally).
        * The test assembly can't be a net472 assembly, because that means using
          the netfx/desktop versions of the Microsoft.Build.* assemblies, which
          don't work on .NET (they check for Mono, but .NET isn't Mono, so the
          check fails and a PlatformNotSupportedException is thrown).
        * So I bumped the test assembly to be a net8.0 assembly, but then there's
          a conflict between the `UnconditionalSuppressMessageAttribute` shipped
          in .NET vs the one in `Xamarin.iOS.Tasks.dll` (because the test assembly
          can see the internals of `Xamarin.iOS.Tasks.dll`).
        * The fix that doesn't work is to not merge system assemblies in the
          `Xamarin.iOS.Tasks.dll` assembly. `Xamarin.iOS.Tasks.Windows.dll`
          already does this, but it doesn't work when building remotely.
        * The fix that seems to work is to just not allow the test assemblies to
          see the internals of the task assembly. This is really an anti-pattern
          anyway. This required a few changes (make some API in the task assembly
          public, remove some legacy tests that don't apply anymore in .NET, etc.)
    rolfbjarne committed Oct 3, 2024
    Configuration menu
    Copy the full SHA
    6f86ff3 View commit details
    Browse the repository at this point in the history