uno.extensions icon indicating copy to clipboard operation
uno.extensions copied to clipboard

[Desktop] Could not load file or assembly Uno.Extensions.Authentication.MSAL.WinUI

Open erikvilima opened this issue 1 year ago • 7 comments

Current behavior

When adding AuthenticationMsal to <UnoFeatures> and launching on Desktop an exception is thrown:

System.IO.FileNotFoundException: 'Could not load file or assembly 'Uno.Extensions.Authentication.MSAL.WinUI, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.'

Expected behavior

No response

How to reproduce it (as minimally and precisely as possible)

Repro: msal.zip Binlog: msal_Debug_AnyCPU_Build_2024-04-24T13_41_23.9873602+01_00.zip

Workaround

No response

Works on UWP/WinUI

Yes

Environment

No response

NuGet package version(s)

Uno.Templates 5.2.28

{
  "msbuild-sdks": {
    "Uno.Sdk": "5.2.83"
  }
}
<UnoExtensionsVersion>4.1.14</UnoExtensionsVersion>
<UnoToolkitVersion>6.0.18</UnoToolkitVersion>
<UnoThemesVersion>5.0.13</UnoThemesVersion>
<UnoCSharpMarkupVersion>5.2.13</UnoCSharpMarkupVersion>

Affected platforms

No response

IDE

No response

IDE version

No response

Relevant plugins

No response

Anything else we need to know?

No response

erikvilima avatar Apr 24 '24 12:04 erikvilima

@dansiegel @nickrandolph what package could be missing?

jeromelaban avatar Apr 24 '24 12:04 jeromelaban

Currently would be unsupported. We need to look more into this. Technically it could be supported on Windows but Linux wouldn't be and Mac may or may not be supported now by MSAL, we need to see if they ever added support.

dansiegel avatar Apr 24 '24 13:04 dansiegel

Currently would be unsupported. We need to look more into this. Technically it could be supported on Windows but Linux wouldn't be and Mac may or may not be supported now by MSAL, we need to see if they ever added support.

@dansiegel, @jeromelaban So what we will be doing short term here, please? As it is impacting the ToDo sample migration at the moment (https://github.com/unoplatform/Uno.Samples/pull/647) (cc @eriklimakc, @kazo0)

agneszitte avatar Apr 29 '24 16:04 agneszitte

Short term we could either just remove the -desktop target or conditionally include it when building on Windows and remove the WSL profile.

<!-- Conditionally include -desktop when building on Windows -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>

And remove: https://github.com/unoplatform/uno.templates/blob/1c6e0388ab135d4adc119766f78c82d620f827a0/src/Uno.Templates/content/unoapp/MyExtensionsApp.1/Properties/launchSettings.json#L52-L57

dansiegel avatar Apr 29 '24 17:04 dansiegel

Short term we could either just remove the -desktop target or conditionally include it when building on Windows and remove the WSL profile.

<!-- Conditionally include -desktop when building on Windows -->
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-windows10.0.19041.0</TargetFrameworks>

And remove: https://github.com/unoplatform/uno.templates/blob/1c6e0388ab135d4adc119766f78c82d620f827a0/src/Uno.Templates/content/unoapp/MyExtensionsApp.1/Properties/launchSettings.json#L52-L57

Should something else be done for this workaround to work? Conditionally including net8.0-desktop when building on Windows and removing the WSL profile didn't prevent that error from happening.

cc @agneszitte @dansiegel @vatsashah45

erikvilima avatar May 14 '24 12:05 erikvilima

Should something else be done for this workaround to work? Conditionally including net8.0-desktop when building on Windows and removing the WSL profile didn't prevent that error from happening.

@dansiegel, @jeromelaban I can confirm what @eriklimakc shared, I am still having the exception System.IO.FileNotFoundException: 'Could not load file or assembly 'Uno.Extensions.Authentication.MSAL.WinUI, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.' even if I have this below in the ToDo.csproj (in addition to removing the "ToDo (Desktop WSL2)" profile in launchSettings.json):

    <TargetFrameworks>
      net8.0-android;
      net8.0-ios;
      net8.0-windows10.0.19041;
      net8.0-maccatalyst;
      net8.0-browserwasm;
    </TargetFrameworks>

    <!-- Conditionally include -desktop when building on Windows -->
    <!-- Related details here: https://github.com/unoplatform/uno.extensions/issues/2438 -->
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-desktop</TargetFrameworks>
Related Call Stack:
>	ToDo.dll!ToDo.App.InitializeComponent() Line 80	C#
 	ToDo.dll!ToDo.App.App() Line 13	C#
 	ToDo.dll!ToDo.Program.Main.AnonymousMethod__0_0() Line 11	C#
 	Uno.UI.Runtime.Skia.Wpf.dll!Uno.UI.Runtime.Skia.Wpf.WpfHost.StartApp.__CreateApp|20_0(Microsoft.UI.Xaml.ApplicationInitializationCallbackParams _)	Unknown
 	Uno.UI.dll!Microsoft.UI.Xaml.Application.StartPartial(Microsoft.UI.Xaml.ApplicationInitializationCallback callback) Line 91	C#
 	Uno.UI.dll!Microsoft.UI.Xaml.Application.Start(Microsoft.UI.Xaml.ApplicationInitializationCallback callback) Line 262	C#
 	Uno.UI.dll!Microsoft.UI.Xaml.Application.StartWithArguments(Microsoft.UI.Xaml.ApplicationInitializationCallback callback) Line 80	C#
 	Uno.UI.Runtime.Skia.Wpf.dll!Uno.UI.Runtime.Skia.Wpf.WpfHost.StartApp()	Unknown
 	Uno.UI.Runtime.Skia.Wpf.dll!Uno.UI.Runtime.Skia.Wpf.WpfHost.RunLoop()	Unknown
 	Uno.UI.Runtime.Skia.dll!Uno.UI.Runtime.Skia.SkiaHost.RunCore()	Unknown
 	Uno.UI.Runtime.Skia.dll!Uno.UI.Runtime.Skia.SkiaHost.Run()	Unknown
 	ToDo.dll!ToDo.Program.Main(string[] args) Line 18	C#

agneszitte avatar May 16 '24 20:05 agneszitte

Should something else be done for this workaround to work? Conditionally including net8.0-desktop when building on Windows and removing the WSL profile didn't prevent that error from happening.

@dansiegel, @jeromelaban I can confirm what @eriklimakc shared, I am still having the exception System.IO.FileNotFoundException: 'Could not load file or assembly 'Uno.Extensions.Authentication.MSAL.WinUI, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.' even if I have this below in the ToDo.csproj (in addition to removing the "ToDo (Desktop WSL2)" profile in launchSettings.json):

    <TargetFrameworks>
      net8.0-android;
      net8.0-ios;
      net8.0-windows10.0.19041;
      net8.0-maccatalyst;
      net8.0-browserwasm;
    </TargetFrameworks>

    <!-- Conditionally include -desktop when building on Windows -->
    <!-- Related details here: https://github.com/unoplatform/uno.extensions/issues/2438 -->
    <TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net8.0-desktop</TargetFrameworks>

Related Call Stack:

MacCatalyst isn't supported for MSAL either. I think for now, let's just remove the desktop tfm as we'd have to test whether it's supported.

nickrandolph avatar May 17 '24 03:05 nickrandolph