maui icon indicating copy to clipboard operation
maui copied to clipboard

In Visual Studio 17.10.0 Preview 3 Project Properties do not open anymore

Open janne-hmp opened this issue 1 year ago • 3 comments

Description

Instead of Property Page, I get:

Microsoft.VisualStudio.ProjectSystem.Query.QueryExecutionException: The given key was not present in the dictionary. ---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Xamarin.VisualStudio.Android.Services.AndroidToolsSdk.GetAndroidVersionsForRuntime(Runtime runtime) in D:\a\_work\1\s\src\Core\VisualStudio.Android\Services\AndroidToolsSdk.cs:line 0
   at Xamarin.VisualStudio.Maui.DotNetProperties.Providers.ExtendedApplicationRule.TargetFrameworkAndroidEnumGenerator.<GetListedValuesAsync>d__5.MoveNext() in D:\a\_work\1\s\src\Features\VisualStudio.Properties\DotNet\VisualStudio.Maui.DotNetProperties\Providers\ExtendedApplicationRule\TargetFrameworkAndroidEnumProvider.cs:line 69
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.VisualStudio.ProjectSystem.PropertyPages.PageDynamicEnumProperty.<CreateAdmissibleValuesAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.PropertyPages.PageEnumPropertyBase.<GetAdmissibleEnumValueAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.PropertyPages.PageDynamicEnumProperty.<GetAdmissibleEnumValueAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.PropertyPages.PageEnumPropertyBase.<GetValueAsIEnumValueAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.VS.Query.UIPropertyValueDataProducer.<CreateUIPropertyValueValueAsync>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.VS.Query.UIPropertyValueDataProducer.<CreateUIPropertyValueValueAsync>d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at Microsoft.VisualStudio.ProjectSystem.VS.Query.UIPropertyValueDataProducer.<CreateUIPropertyValueValuesAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.VS.Query.QueryDataFromProviderStateProducerBase`1.<SendRequestAsync>d__0.MoveNext()
   --- End of inner exception stack trace ---
   at Microsoft.VisualStudio.ProjectSystem.Query.Execution.QuerySubscription`1.<RunQueryOnceAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.Query.Execution.QuerySubscription`1.<>c__DisplayClass10_0.<<Start>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.VS.Implementation.PropertyPages.Designer.ProjectPropertyDataAccess.Observer.<InitializeAsync>d__10.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at Microsoft.VisualStudio.ProjectSystem.VS.Implementation.PropertyPages.Designer.ProjectPropertyDataAccess.Observer.<CreateAsync>d__9.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.VS.Implementation.PropertyPages.Designer.ProjectPropertiesEditor.<>c__DisplayClass0_0.<<-ctor>b__0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.VisualStudio.ProjectSystem.VS.Implementation.PropertyPages.Designer.AsyncLoadContent.<>c__DisplayClass0_0.<<Initialize>b__0>d.MoveNext()

The page code is (used to work in Preview 2):

<Project Sdk="Microsoft.NET.Sdk">

	<PropertyGroup>
		<TargetFrameworks>net9.0-android;net9.0-ios;net9.0-maccatalyst</TargetFrameworks>
		<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net9.0-windows10.0.19041.0</TargetFrameworks>
		<!-- Uncomment to also build the tizen app. You will need to install tizen by following this: https://github.com/Samsung/Tizen.NET -->
		<!-- <TargetFrameworks>$(TargetFrameworks);net9.0-tizen</TargetFrameworks> -->
		<OutputType>Exe</OutputType>
		<RootNamespace>GnollHackM</RootNamespace>
		<UseMaui>true</UseMaui>
		<SingleProject>true</SingleProject>
		<ImplicitUsings>enable</ImplicitUsings>
		<AllowUnsafeBlocks>true</AllowUnsafeBlocks>

		<!-- Display name -->
		<ApplicationTitle>GnollHack</ApplicationTitle>

		<!-- App Identifier -->
		<ApplicationId>com.soundmindgames.GnollHackM</ApplicationId>
		<ApplicationIdGuid>77f64670-4eb4-432e-aa6a-b02d3d035d80</ApplicationIdGuid>

		<!-- Versions -->
		<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
		<ApplicationVersion>1</ApplicationVersion>

		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">12.2</SupportedOSPlatformVersion>
		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">13.1</SupportedOSPlatformVersion>
		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">26.0</SupportedOSPlatformVersion>
		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</SupportedOSPlatformVersion>
		<TargetPlatformMinVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'windows'">10.0.17763.0</TargetPlatformMinVersion>
		<SupportedOSPlatformVersion Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'tizen'">6.5</SupportedOSPlatformVersion>
	</PropertyGroup>

	<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)'=='Debug|net9.0-ios'">
		<ProvisioningType>manual</ProvisioningType>
		<CodesignKey>Apple Development: Janne Gustafsson (3JF32923Y3)</CodesignKey>
		<CodesignProvision>Apple Dev M Development 2023</CodesignProvision>
	</PropertyGroup>

	<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)'=='Release|net9.0-ios'">
		<ProvisioningType>manual</ProvisioningType>
		<CodesignKey>Apple Development: Janne Gustafsson (3JF32923Y3)</CodesignKey>
		<CodesignProvision>Apple Dev M Development 2023</CodesignProvision>
		<!--<CodesignKey>Apple Distribution: Hyvan mielen pelit ry (CUG8RS847T)</CodesignKey>
		<CodesignProvision>Apple Dev M Distribution March 2024</CodesignProvision>-->
	</PropertyGroup>

	<PropertyGroup Condition="$(TargetFramework.Contains('-android'))">
	    <UseInterpreter>false</UseInterpreter>
		<!--<AndroidEnableProfiler>true</AndroidEnableProfiler> 
		<RuntimeIdentifier>android-arm64</RuntimeIdentifier>
		<RuntimeIdentifiers>android-arm64</RuntimeIdentifiers>-->
	</PropertyGroup>

	<PropertyGroup Condition="$(TargetFramework.Contains('-ios'))">
		<UseInterpreter>false</UseInterpreter>
		<MtouchInterpreter>-all,FMODService.dll</MtouchInterpreter>
	</PropertyGroup>

	<PropertyGroup Condition="'$(Configuration)' == 'Debug'">
		<_MauiForceXamlCForDebug>true</_MauiForceXamlCForDebug>
	</PropertyGroup>

	<ItemGroup Condition="'$(TargetFramework)'=='net9.0-android'">
		<MauiIcon Include="Resources\AppIcon\appicon.png" Color="#FFCCCC" ForegroundScale="0.64" />
	</ItemGroup>
	<ItemGroup Condition="'$(TargetFramework)'!='net9.0-android'">
		<MauiIcon Include="Resources\AppIcon\appicon.png" Color="#FFCCCC" ForegroundScale="1.0" />
	</ItemGroup>
	
	<ItemGroup>
		<!-- Splash Screen -->
		<MauiSplashScreen Include="Resources\Splash\gnollhackicon.png" Color="#000000" BaseSize="160,160" />

		<!-- Images -->
		<MauiImage Include="Resources\Images\*" />

		<!-- Custom Fonts -->
		<MauiFont Include="Resources\Fonts\*" />

		<!-- Raw Assets (also remove the "Resources\Raw" prefix) -->
		<MauiAsset Include="Resources\Raw\**" LogicalName="%(RecursiveDir)%(Filename)%(Extension)" />
	</ItemGroup>

	<ItemGroup>
		<None Remove="..\GnollHackX\GnollHackX\BackgroundView.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHGame.cs" />
		<None Remove="..\GnollHackX\GnollHackX\UIUtils.cs" />
		<None Remove="..\GnollHackX\GnollHackX\CustomLabel.cs" />
		<None Remove="..\GnollHackX\GnollHackX\DiscordWebHookAttachedFile.cs" />
		<None Remove="..\GnollHackX\GnollHackX\DiscordWebHookPost.cs" />
		<None Remove="..\GnollHackX\GnollHackX\DiscordWebHookPostWithAttachment.cs" />
		<None Remove="..\GnollHackX\GnollHackX\EventArgs.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHPost.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHPostAttachment.cs" />
		<None Remove="..\GnollHackX\GnollHackX\HttpClientDownloadWithProgress.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHAnimationTimerList.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHApp.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHButton.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHCachedImage.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHColors.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHCommandButtonItem.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHConstants.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHDelegates.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHDrawCommand.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHEditor.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHFloatingText.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHConditionText.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHGUIEffect.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHMenuInfo.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHMenuItem.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHMsgHistoryItem.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHNumberPickItem.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHOutRipInfo.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHPetDataItem.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHPutStrItem.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHPutStrInstructions.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHRecordedFunctionCall.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHRecordedRecordedGameFile.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHResponse.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHRequest.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHScreenFilter.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHScreenText.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHSkiaFontPaint.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHStatusField.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHUtils.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GHWindow.cs" />
		<None Remove="..\GnollHackX\GnollHackX\GlyphImageSource.cs" />
		<None Remove="..\GnollHackX\GnollHackX.Common\GnollHackService.cs" />
		<None Remove="..\GnollHackX\GnollHackX\IGnollHackService.cs" />
		<None Remove="..\GnollHackX\GnollHackX\IPlatformService.cs" />
		<None Remove="..\GnollHackX\GnollHackX\IFMODService.cs" />
		<None Remove="..\GnollHackX\GnollHackX\ImageCarousel.cs" />
		<None Remove="..\GnollHackX\GnollHackX\MapData.cs" />
		<None Remove="..\GnollHackX\GnollHackX\ObjectData.cs" />
		<None Remove="..\GnollHackX\GnollHackX\ObjectDataItem.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Secrets.cs" />
		<None Remove="..\GnollHackX\GnollHackX\SecretsDirectory.cs" />
		<None Remove="..\GnollHackX\GnollHackX\SecretsFile.cs" />
		<None Remove="..\GnollHackX\GnollHackX\SelectableShortcutButton.cs" />
		<None Remove="..\GnollHackX\GnollHackX\StoredManual.cs" />
		<None Remove="..\GnollHackX\GnollHackX\UserSecrets.cs" />
		<None Remove="..\GnollHackX\GnollHackX.FMOD\fmod.cs" />
		<None Remove="..\GnollHackX\GnollHackX.FMOD\fmod_studio.cs" />
		<None Remove="..\GnollHackX\GnollHackX.FMOD\fmod_errors.cs" />
		<None Remove="..\GnollHackX\GnollHackX.FMOD\fmod_dsp.cs" />
		<None Remove="..\GnollHackX\GnollHackX.FMOD\FMODService.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Controls\CustomImageButton.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Controls\LabeledImageButton.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Controls\RowImageButton.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Controls\SimpleImageButton.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Controls\SwitchableCanvasView.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\AboutPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\ResetPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\SettingsPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\VaultPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\TopScorePage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\LibraryPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\DisplayFilePage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\ReplayPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\ImportExportPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\EditorPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\MainScreen\VersionPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\Pages\Game\GameMenuPage.xaml.cs" />
		<None Remove="..\GnollHackX\GnollHackX\MainPage.xaml.cs" />
		<None Remove="Assets\UI\autostash.png" />
		<None Remove="Assets\UI\battery-frame.png" />
		<None Remove="Assets\UI\fps.png" />
		<None Remove="Assets\UI\frame2-horizontal.png" />
		<None Remove="Assets\UI\frame2-topleft-small.png" />
		<None Remove="Assets\UI\frame2-topleft.png" />
		<None Remove="Assets\UI\frame2-vertical.png" />
		<None Remove="Assets\UI\picktobag.png" />
		<None Remove="Assets\UI\status-quivered-weapon-style.png" />
		<None Remove="Assets\UI\symbol-damage.png" />
		<None Remove="Platforms\Android\Environment.txt" />
		<None Remove="Resources\AppIcon\appicon.svg" />
		<None Remove="Resources\AppIcon\appiconfg.svg" />
	</ItemGroup>

	<ItemGroup>
		<Compile Include="..\GnollHackX\GnollHackX\BackgroundView.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHGame.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\UIUtils.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\CustomLabel.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\DiscordWebHookAttachedFile.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\DiscordWebHookPost.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\DiscordWebHookPostWithAttachment.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\EventArgs.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHPost.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHPostAttachment.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\HttpClientDownloadWithProgress.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHAnimationTimerList.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHApp.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHButton.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHCachedImage.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHColors.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHCommandButtonItem.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHConstants.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHDelegates.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHEditor.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHFloatingText.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHConditionText.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHDrawCommand.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHGUIEffect.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHNumberPickItem.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHMenuInfo.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHMenuItem.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHMsgHistoryItem.cs" />		
		<Compile Include="..\GnollHackX\GnollHackX\GHOutRipInfo.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHPetDataItem.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHPutStrItem.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHPutStrInstructions.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHRecordedFunctionCall.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHRecordedGameFile.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHResponse.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHRequest.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHScreenFilter.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHScreenText.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHSkiaFontPaint.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHStatusField.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHTopScoreItem.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHUtils.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GHWindow.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\GlyphImageSource.cs" />
		<Compile Include="..\GnollHackX\GnollHackX.Common\GnollHackService.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\IGnollHackService.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\IPlatformService.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\IFMODService.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\ImageCarousel.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\MapData.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\ObjectData.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\ObjectDataItem.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Secrets.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\SecretsDirectory.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\SecretsFile.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\SelectableShortcutButton.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\StoredManual.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\UserSecrets.cs" />
		<Compile Include="..\GnollHackX\GnollHackX.FMOD\fmod.cs" />
		<Compile Include="..\GnollHackX\GnollHackX.FMOD\fmod_studio.cs" />
		<Compile Include="..\GnollHackX\GnollHackX.FMOD\fmod_errors.cs" />
		<Compile Include="..\GnollHackX\GnollHackX.FMOD\fmod_dsp.cs" />
		<Compile Include="..\GnollHackX\GnollHackX.FMOD\FMODService.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Controls\CustomImageButton.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Controls\LabeledImageButton.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Controls\RowImageButton.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Controls\SimpleImageButton.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Controls\SwitchableCanvasView.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\AboutPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\ResetPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\SettingsPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\VaultPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\TopScorePage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\LibraryPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\DisplayFilePage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\ReplayPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\ImportExportPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\EditorPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\MainScreen\VersionPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\Game\GameMenuPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\Game\GamePage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\Game\NamePage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\Pages\Game\OutRipPage.xaml.cs" />
		<Compile Include="..\GnollHackX\GnollHackX\MainPage.xaml.cs" />
	</ItemGroup>
	
	<ItemGroup>
	  <None Remove="Assets\archristy.ttf" />
	  <None Remove="Assets\button_disabled.png" />
	  <None Remove="Assets\button_normal.png" />
	  <None Remove="Assets\button_selected.png" />
	  <None Remove="Assets\DejaVuSansMono-Bold.ttf" />
	  <None Remove="Assets\DejaVuSansMono-BoldOblique.ttf" />
	  <None Remove="Assets\DejaVuSansMono-Oblique.ttf" />
	  <None Remove="Assets\DejaVuSansMono.ttf" />
	  <None Remove="Assets\dgn_entrance.jpg" />
	  <None Remove="Assets\diablo_h.ttf" />
	  <None Remove="Assets\endr.ttf" />
	  <None Remove="Assets\FMOD-Logo-192-White.png" />
	  <None Remove="Assets\ghsecrets.sjson" />
	  <None Remove="Assets\ghsettings.json" />
	  <None Remove="Assets\gnollhack-logo-test-2.png" />
	  <None Remove="Assets\gnollhack_64x96_transparent_32bits-2.png" />
	  <None Remove="Assets\gnollhack_64x96_transparent_32bits.png" />
	  <None Remove="Assets\Immortal-Regular.ttf" />
	  <None Remove="Assets\Lato-Bold.ttf" />
	  <None Remove="Assets\Lato-Regular.ttf" />
	  <None Remove="Assets\main-menu-dwarf.jpg" />
	  <None Remove="Assets\main-menu-gnoll.jpg" />
	  <None Remove="Assets\main-menu-ranger.jpg" />
	  <None Remove="Assets\shxi.ttf" />
	  <None Remove="Assets\tombstone.png" />
	  <None Remove="Assets\UI\abilities.png" />
	  <None Remove="Assets\UI\apply.png" />
	  <None Remove="Assets\UI\arrow_down.png" />
	  <None Remove="Assets\UI\arrow_downleft.png" />
	  <None Remove="Assets\UI\arrow_downright.png" />
	  <None Remove="Assets\UI\arrow_left.png" />
	  <None Remove="Assets\UI\arrow_right.png" />
	  <None Remove="Assets\UI\arrow_up.png" />
	  <None Remove="Assets\UI\arrow_upleft.png" />
	  <None Remove="Assets\UI\arrow_upright.png" />
	  <None Remove="Assets\UI\attributes.png" />
	  <None Remove="Assets\UI\autopickup.png" />
	  <None Remove="Assets\UI\background-loading-screen.png" />
	  <None Remove="Assets\UI\background-oldpaper.png" />
	  <None Remove="Assets\UI\break.png" />
	  <None Remove="Assets\UI\cancel.png" />
	  <None Remove="Assets\UI\cast.png" />
	  <None Remove="Assets\UI\chat.png" />
	  <None Remove="Assets\UI\chatsteed.png" />
	  <None Remove="Assets\UI\chronicle.png" />
	  <None Remove="Assets\UI\close.png" />
	  <None Remove="Assets\UI\commands.png" />
	  <None Remove="Assets\UI\conduct.png" />
	  <None Remove="Assets\UI\count.png" />
	  <None Remove="Assets\UI\dig.png" />
	  <None Remove="Assets\UI\dip.png" />
	  <None Remove="Assets\UI\discoveries.png" />
	  <None Remove="Assets\UI\dropmany.png" />
	  <None Remove="Assets\UI\droptypes.png" />
	  <None Remove="Assets\UI\eat.png" />
	  <None Remove="Assets\UI\engrave.png" />
	  <None Remove="Assets\UI\examine.png" />
	  <None Remove="Assets\UI\exit-to-map.png" />
	  <None Remove="Assets\UI\extended.png" />
	  <None Remove="Assets\UI\fight.png" />
	  <None Remove="Assets\UI\fire.png" />
	  <None Remove="Assets\UI\forcelock.png" />
	  <None Remove="Assets\UI\frame-horizontal.png" />
	  <None Remove="Assets\UI\frame-topleft-small.png" />
	  <None Remove="Assets\UI\frame-topleft.png" />
	  <None Remove="Assets\UI\frame-vertical.png" />
	  <None Remove="Assets\UI\genesis.png" />
	  <None Remove="Assets\UI\genocided.png" />
	  <None Remove="Assets\UI\handedness.png" />
	  <None Remove="Assets\UI\help.png" />
	  <None Remove="Assets\UI\identify.png" />
	  <None Remove="Assets\UI\inventory.png" />
	  <None Remove="Assets\UI\invoke.png" />
	  <None Remove="Assets\UI\jump.png" />
	  <None Remove="Assets\UI\kick.png" />
	  <None Remove="Assets\UI\killed.png" />
	  <None Remove="Assets\UI\lastitem.png" />
	  <None Remove="Assets\UI\leftring.png" />
	  <None Remove="Assets\UI\levelchange.png" />
	  <None Remove="Assets\UI\levelport.png" />
	  <None Remove="Assets\UI\License.txt" />
	  <None Remove="Assets\UI\light.png" />
	  <None Remove="Assets\UI\load.png" />
	  <None Remove="Assets\UI\lookfar.png" />
	  <None Remove="Assets\UI\lookhere.png" />
	  <None Remove="Assets\UI\loot.png" />
	  <None Remove="Assets\UI\menubackground.png" />
	  <None Remove="Assets\UI\missing_icon.png" />
	  <None Remove="Assets\UI\mix.png" />
	  <None Remove="Assets\UI\monster.png" />
	  <None Remove="Assets\UI\more.png" />
	  <None Remove="Assets\UI\name.png" />
	  <None Remove="Assets\UI\next.png" />
	  <None Remove="Assets\UI\no.png" />
	  <None Remove="Assets\UI\offer.png" />
	  <None Remove="Assets\UI\open.png" />
	  <None Remove="Assets\UI\orb_border.png" />
	  <None Remove="Assets\UI\orb_fill.png" />
	  <None Remove="Assets\UI\orb_glass.png" />
	  <None Remove="Assets\UI\overview.png" />
	  <None Remove="Assets\UI\pay.png" />
	  <None Remove="Assets\UI\pickup.png" />
	  <None Remove="Assets\UI\polymorph.png" />
	  <None Remove="Assets\UI\pray.png" />
	  <None Remove="Assets\UI\previous.png" />
	  <None Remove="Assets\UI\puton.png" />
	  <None Remove="Assets\UI\quaff.png" />
	  <None Remove="Assets\UI\quiver.png" />
	  <None Remove="Assets\UI\read.png" />
	  <None Remove="Assets\UI\remove.png" />
	  <None Remove="Assets\UI\repeat.png" />
	  <None Remove="Assets\UI\rest.png" />
	  <None Remove="Assets\UI\reveal.png" />
	  <None Remove="Assets\UI\ride.png" />
	  <None Remove="Assets\UI\rightring.png" />
	  <None Remove="Assets\UI\rub.png" />
	  <None Remove="Assets\UI\save.png" />
	  <None Remove="Assets\UI\scroll.png" />
	  <None Remove="Assets\UI\search.png" />
	  <None Remove="Assets\UI\search20.png" />
	  <None Remove="Assets\UI\search200.png" />
	  <None Remove="Assets\UI\select.png" />
	  <None Remove="Assets\UI\sit.png" />
	  <None Remove="Assets\UI\skill.png" />
	  <None Remove="Assets\UI\spells.png" />
	  <None Remove="Assets\UI\stairs-down.png" />
	  <None Remove="Assets\UI\stairs-up.png" />
	  <None Remove="Assets\UI\status-ac.png" />
	  <None Remove="Assets\UI\status-casual-classic-mode.png" />
	  <None Remove="Assets\UI\status-casual-mode.png" />
	  <None Remove="Assets\UI\status-difficulty-average.png" />
	  <None Remove="Assets\UI\status-difficulty-easy.png" />
	  <None Remove="Assets\UI\status-difficulty-expert.png" />
	  <None Remove="Assets\UI\status-difficulty-grand-master.png" />
	  <None Remove="Assets\UI\status-difficulty-hard.png" />
	  <None Remove="Assets\UI\status-difficulty-master.png" />
	  <None Remove="Assets\UI\status-difficulty-very-easy.png" />
	  <None Remove="Assets\UI\status-difficulty.png" />
	  <None Remove="Assets\UI\status-dungeon-level.png" />
	  <None Remove="Assets\UI\status-empty-handed.png" />
	  <None Remove="Assets\UI\status-gold.png" />
	  <None Remove="Assets\UI\status-hd.png" />
	  <None Remove="Assets\UI\status-mc.png" />
	  <None Remove="Assets\UI\status-modern-mode.png" />
	  <None Remove="Assets\UI\status-move.png" />
	  <None Remove="Assets\UI\status-turns.png" />
	  <None Remove="Assets\UI\status-weapon-style.png" />
	  <None Remove="Assets\UI\status-wizard-mode.png" />
	  <None Remove="Assets\UI\status-xp-level.png" />
	  <None Remove="Assets\UI\stone-altmap-off.png" />
	  <None Remove="Assets\UI\stone-altmap-on.png" />
	  <None Remove="Assets\UI\stone-autocenter-off.png" />
	  <None Remove="Assets\UI\stone-autocenter-on.png" />
	  <None Remove="Assets\UI\stone-cancel.png" />
	  <None Remove="Assets\UI\stone-look-off.png" />
	  <None Remove="Assets\UI\stone-look-on.png" />
	  <None Remove="Assets\UI\stone-menu.png" />
	  <None Remove="Assets\UI\stone-minimap-off.png" />
	  <None Remove="Assets\UI\stone-minimap-on.png" />
	  <None Remove="Assets\UI\stone-travel-off.png" />
	  <None Remove="Assets\UI\stone-travel-on.png" />
	  <None Remove="Assets\UI\swap.png" />
	  <None Remove="Assets\UI\symbol-adds.png" />
	  <None Remove="Assets\UI\symbol-casts.png" />
	  <None Remove="Assets\UI\symbol-cooldown.png" />
	  <None Remove="Assets\UI\symbol-food.png" />
	  <None Remove="Assets\UI\symbol-mana.png" />
	  <None Remove="Assets\UI\symbol-spell-abjuration.png" />
	  <None Remove="Assets\UI\symbol-spell-arcane.png" />
	  <None Remove="Assets\UI\symbol-spell-celestial.png" />
	  <None Remove="Assets\UI\symbol-spell-clerical.png" />
	  <None Remove="Assets\UI\symbol-spell-conjuration.png" />
	  <None Remove="Assets\UI\symbol-spell-divination.png" />
	  <None Remove="Assets\UI\symbol-spell-enchantment.png" />
	  <None Remove="Assets\UI\symbol-spell-healing.png" />
	  <None Remove="Assets\UI\symbol-spell-movement.png" />
	  <None Remove="Assets\UI\symbol-spell-nature.png" />
	  <None Remove="Assets\UI\symbol-spell-necromancy.png" />
	  <None Remove="Assets\UI\symbol-spell-transmutation.png" />
	  <None Remove="Assets\UI\symbol-success.png" />
	  <None Remove="Assets\UI\takeoff.png" />
	  <None Remove="Assets\UI\takeoffmany.png" />
	  <None Remove="Assets\UI\target-downwards.png" />
	  <None Remove="Assets\UI\target-self.png" />
	  <None Remove="Assets\UI\target-upwards.png" />
	  <None Remove="Assets\UI\teleport.png" />
	  <None Remove="Assets\UI\throw.png" />
	  <None Remove="Assets\UI\tip.png" />
	  <None Remove="Assets\UI\travel.png" />
	  <None Remove="Assets\UI\twoweap.png" />
	  <None Remove="Assets\UI\untrap.png" />
	  <None Remove="Assets\UI\unwield.png" />
	  <None Remove="Assets\UI\viewspell.png" />
	  <None Remove="Assets\UI\vitruvian-gnoll.png" />
	  <None Remove="Assets\UI\wait.png" />
	  <None Remove="Assets\UI\wear.png" />
	  <None Remove="Assets\UI\whatis.png" />
	  <None Remove="Assets\UI\wield.png" />
	  <None Remove="Assets\UI\wipe.png" />
	  <None Remove="Assets\UI\wish.png" />
	  <None Remove="Assets\UI\yell.png" />
	  <None Remove="Assets\UI\yes.png" />
	  <None Remove="Assets\UI\yestoall.png" />
	  <None Remove="Assets\UI\you.png" />
	  <None Remove="Assets\UI\zap.png" />
	  <None Remove="Assets\uwch.ttf" />
	  <None Remove="Platforms\Android\jars\fmod.jar" />
	  <None Remove="Platforms\Android\libs\arm64-v8a\libc++_shared.so" />
	  <None Remove="Platforms\Android\libs\arm64-v8a\libfmod.so" />
	  <None Remove="Platforms\Android\libs\arm64-v8a\libfmodstudio.so" />
	  <None Remove="Platforms\Android\libs\arm64-v8a\libgnollhackdroid.so" />
	</ItemGroup>

	<ItemGroup Condition="'$(TargetFramework)'=='net9.0-android'">
      <EmbeddedJar Include="Platforms\Android\jars\fmod.jar" />
	  <AndroidLibrary Include="Platforms\Android\jars\fmod.jar" />
	  <AndroidNativeLibrary Include="Platforms\Android\libs\arm64-v8a\libfmod.so" />
  	  <AndroidNativeLibrary Include="Platforms\Android\libs\arm64-v8a\libfmodstudio.so" />
	  <AndroidNativeLibrary Include="Platforms\Android\libs\arm64-v8a\libgnollhackdroid.so" />
	  <AndroidNativeLibrary Include="Platforms\Android\libs\arm64-v8a\libc++_shared.so" />
      <AndroidAsset Include="Platforms\Android\gnh\credits" />
      <AndroidAsset Include="Platforms\Android\gnh\license" />
      <AndroidAsset Include="Platforms\Android\gnh\logfile" />
      <AndroidAsset Include="Platforms\Android\gnh\nhdat" />
      <AndroidAsset Include="Platforms\Android\gnh\record" />
      <AndroidAsset Include="Platforms\Android\gnh\symbols" />
      <AndroidAsset Include="Platforms\Android\gnh\sysconf" />
      <AndroidAsset Include="Platforms\Android\gnh\perm" />
      <AndroidAsset Include="Platforms\Android\gnh\recover" />
      <AndroidAsset Include="Platforms\Android\gnh\xlogfile" />
      <AndroidAsset Include="Platforms\Android\gnh\defaults.gnh" />
      <AndroidAsset Include="Platforms\Android\gnh\xcredits" />
      <AndroidAsset Include="Platforms\Android\banks\Master.bank" Condition=" '$(AndroidPackageFormat)' == 'apk' " />
      <AndroidAsset Include="Platforms\Android\banks\Auxiliary.bank" Condition=" '$(AndroidPackageFormat)' == 'apk' " />
      <AndroidAsset Include="Platforms\Android\banks\Intro.bank" Condition=" '$(AndroidPackageFormat)' == 'apk' " />
      <AndroidAsset Include="Platforms\Android\banks\Master.strings.bank" Condition=" '$(AndroidPackageFormat)' == 'apk' " />
      <AndroidAsset Include="Platforms\Android\banks\Music.bank" Condition=" '$(AndroidPackageFormat)' == 'apk' " />
      <AndroidAsset Include="Platforms\Android\banks\Preliminary.bank" Condition=" '$(AndroidPackageFormat)' == 'apk' " />
      <AndroidAppBundleModules Include="Platforms\Android\assetpacks\ondemandassetpack.zip" Condition=" '$(AndroidPackageFormat)' != 'apk' " />
	  <AndroidAppBundleModules Include="Platforms\Android\assetpacks\installtimeassetpack.zip" Condition=" '$(AndroidPackageFormat)' != 'apk' " />
	  <Compile Include="..\GnollHackX\GnollHackX.Android\PlatformServiceAndroid.cs" />
	</ItemGroup>

	<ItemGroup Condition="'$(TargetFramework)'=='net9.0-ios' or '$(TargetFramework)'=='net9.0-maccatalyst'">
		<NativeReference Include="Platforms\iOS\libs\libfmodstudio_iphoneos.a">
			<Kind>Static</Kind>
			<Frameworks>AudioToolbox CoreAudio</Frameworks>
			<ForceLoad>True</ForceLoad>
			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
		</NativeReference>
		<NativeReference Include="Platforms\iOS\libs\libfmod_iphoneos.a">
			<Kind>Static</Kind>
			<Frameworks>AudioToolbox CoreAudio</Frameworks>
			<ForceLoad>True</ForceLoad>
			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
		</NativeReference>
		<NativeReference Include="Platforms\iOS\libs\libgnollhackios.a">
			<Kind>Static</Kind>
			<ForceLoad>True</ForceLoad>
			<IsCxx>True</IsCxx>
			<CopyToOutputDirectory>Always</CopyToOutputDirectory>
		</NativeReference>
		<BundleResource Include="Platforms\iOS\gnh\credits" />
		<BundleResource Include="Platforms\iOS\gnh\defaults.gnh" />
		<BundleResource Include="Platforms\iOS\gnh\license" />
		<BundleResource Include="Platforms\iOS\gnh\logfile" />
		<BundleResource Include="Platforms\iOS\gnh\nhdat" />
		<BundleResource Include="Platforms\iOS\gnh\perm" />
		<BundleResource Include="Platforms\iOS\gnh\record" />
		<BundleResource Include="Platforms\iOS\gnh\recover" />
		<BundleResource Include="Platforms\iOS\gnh\symbols" />
		<BundleResource Include="Platforms\iOS\gnh\sysconf" />
		<BundleResource Include="Platforms\iOS\gnh\xcredits" />
		<BundleResource Include="Platforms\iOS\gnh\xlogfile" />
		<BundleResource Include="Platforms\iOS\banks\Auxiliary.bank" />
		<BundleResource Include="Platforms\iOS\banks\Intro.bank" />
		<BundleResource Include="Platforms\iOS\banks\Master.bank" />
		<BundleResource Include="Platforms\iOS\banks\Master.strings.bank" />
		<BundleResource Include="Platforms\iOS\banks\Music.bank" />
		<BundleResource Include="Platforms\iOS\banks\Preliminary.bank" />
		<Compile Include="..\GnollHackX\GnollHackX.iOS\PlatformServiceiOS.cs" />
	</ItemGroup>

	<PropertyGroup>
		<DefineConstants>$(DefineConstants);GNH_MAUI</DefineConstants>
	</PropertyGroup>
	<PropertyGroup Condition="'$(TargetFramework)'=='net9.0-ios'">
		<DefineConstants>$(DefineConstants);UNITY_IPHONE</DefineConstants>
	</PropertyGroup>
	<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)'=='Debug|net9.0-ios'">
	  <MtouchLink>None</MtouchLink>
	</PropertyGroup>
	<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)'=='Release|net9.0-ios'">
	  <MtouchLink>SdkOnly</MtouchLink>
	</PropertyGroup>
	<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)'=='Debug|net9.0-android'">
	  <PublishTrimmed>False</PublishTrimmed>
	</PropertyGroup>
	<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)'=='Release|net9.0-android'">
	  <PublishTrimmed>True</PublishTrimmed>
      <TrimMode>partial</TrimMode>
	</PropertyGroup>

	<ItemGroup>
	  <EmbeddedResource Include="Assets\archristy.ttf" />
	  <EmbeddedResource Include="Assets\button_disabled.png" />
	  <EmbeddedResource Include="Assets\button_normal.png" />
	  <EmbeddedResource Include="Assets\button_selected.png" />
	  <EmbeddedResource Include="Assets\DejaVuSansMono-Bold.ttf" />
	  <EmbeddedResource Include="Assets\DejaVuSansMono-BoldOblique.ttf" />
	  <EmbeddedResource Include="Assets\DejaVuSansMono-Oblique.ttf" />
	  <EmbeddedResource Include="Assets\DejaVuSansMono.ttf" />
	  <EmbeddedResource Include="Assets\dgn_entrance.jpg" />
	  <EmbeddedResource Include="Assets\diablo_h.ttf" />
	  <EmbeddedResource Include="Assets\endr.ttf" />
	  <EmbeddedResource Include="Assets\FMOD-Logo-192-White.png" />
	  <EmbeddedResource Include="Assets\ghsecrets.sjson" />
	  <EmbeddedResource Include="Assets\ghsettings.json" />
	  <EmbeddedResource Include="Assets\gnollhack-logo-test-2.png" />
	  <EmbeddedResource Include="Assets\gnollhack_64x96_transparent_32bits-2.png" />
	  <EmbeddedResource Include="Assets\gnollhack_64x96_transparent_32bits.png" />
	  <EmbeddedResource Include="Assets\Immortal-Regular.ttf" />
	  <EmbeddedResource Include="Assets\Lato-Bold.ttf" />
	  <EmbeddedResource Include="Assets\Lato-Regular.ttf" />
	  <EmbeddedResource Include="Assets\main-menu-dwarf.jpg" />
	  <EmbeddedResource Include="Assets\main-menu-gnoll.jpg" />
	  <EmbeddedResource Include="Assets\main-menu-ranger.jpg" />
	  <EmbeddedResource Include="Assets\shxi.ttf" />
	  <EmbeddedResource Include="Assets\tombstone.png" />
	  <EmbeddedResource Include="Assets\UI\abilities.png" />
	  <EmbeddedResource Include="Assets\UI\apply.png" />
	  <EmbeddedResource Include="Assets\UI\arrow_down.png" />
	  <EmbeddedResource Include="Assets\UI\arrow_downleft.png" />
	  <EmbeddedResource Include="Assets\UI\arrow_downright.png" />
	  <EmbeddedResource Include="Assets\UI\arrow_left.png" />
	  <EmbeddedResource Include="Assets\UI\arrow_right.png" />
	  <EmbeddedResource Include="Assets\UI\arrow_up.png" />
	  <EmbeddedResource Include="Assets\UI\arrow_upleft.png" />
	  <EmbeddedResource Include="Assets\UI\arrow_upright.png" />
	  <EmbeddedResource Include="Assets\UI\attributes.png" />
	  <EmbeddedResource Include="Assets\UI\autopickup.png" />
	  <EmbeddedResource Include="Assets\UI\autostash.png" />
	  <EmbeddedResource Include="Assets\UI\background-loading-screen.png" />
	  <EmbeddedResource Include="Assets\UI\background-oldpaper.png" />
	  <EmbeddedResource Include="Assets\UI\battery-frame.png" />
	  <EmbeddedResource Include="Assets\UI\break.png" />
	  <EmbeddedResource Include="Assets\UI\cancel.png" />
	  <EmbeddedResource Include="Assets\UI\cast.png" />
	  <EmbeddedResource Include="Assets\UI\chat.png" />
	  <EmbeddedResource Include="Assets\UI\chatsteed.png" />
	  <EmbeddedResource Include="Assets\UI\chronicle.png" />
	  <EmbeddedResource Include="Assets\UI\close.png" />
	  <EmbeddedResource Include="Assets\UI\commands.png" />
	  <EmbeddedResource Include="Assets\UI\conduct.png" />
	  <EmbeddedResource Include="Assets\UI\count.png" />
	  <EmbeddedResource Include="Assets\UI\dig.png" />
	  <EmbeddedResource Include="Assets\UI\dip.png" />
	  <EmbeddedResource Include="Assets\UI\discoveries.png" />
	  <EmbeddedResource Include="Assets\UI\dropmany.png" />
	  <EmbeddedResource Include="Assets\UI\droptypes.png" />
	  <EmbeddedResource Include="Assets\UI\eat.png" />
	  <EmbeddedResource Include="Assets\UI\engrave.png" />
	  <EmbeddedResource Include="Assets\UI\examine.png" />
	  <EmbeddedResource Include="Assets\UI\exit-to-map.png" />
	  <EmbeddedResource Include="Assets\UI\extended.png" />
	  <EmbeddedResource Include="Assets\UI\fight.png" />
	  <EmbeddedResource Include="Assets\UI\fire.png" />
	  <EmbeddedResource Include="Assets\UI\forcelock.png" />
	  <EmbeddedResource Include="Assets\UI\fps.png" />
	  <EmbeddedResource Include="Assets\UI\frame-horizontal.png" />
	  <EmbeddedResource Include="Assets\UI\frame-topleft-small.png" />
	  <EmbeddedResource Include="Assets\UI\frame-topleft.png" />
	  <EmbeddedResource Include="Assets\UI\frame-vertical.png" />
	  <EmbeddedResource Include="Assets\UI\frame2-horizontal.png" />
	  <EmbeddedResource Include="Assets\UI\frame2-topleft-small.png" />
	  <EmbeddedResource Include="Assets\UI\frame2-topleft.png" />
	  <EmbeddedResource Include="Assets\UI\frame2-vertical.png" />
	  <EmbeddedResource Include="Assets\UI\genesis.png" />
	  <EmbeddedResource Include="Assets\UI\genocided.png" />
	  <EmbeddedResource Include="Assets\UI\handedness.png" />
	  <EmbeddedResource Include="Assets\UI\help.png" />
	  <EmbeddedResource Include="Assets\UI\identify.png" />
	  <EmbeddedResource Include="Assets\UI\inventory.png" />
	  <EmbeddedResource Include="Assets\UI\invoke.png" />
	  <EmbeddedResource Include="Assets\UI\jump.png" />
	  <EmbeddedResource Include="Assets\UI\kick.png" />
	  <EmbeddedResource Include="Assets\UI\killed.png" />
	  <EmbeddedResource Include="Assets\UI\lastitem.png" />
	  <EmbeddedResource Include="Assets\UI\leftring.png" />
	  <EmbeddedResource Include="Assets\UI\levelchange.png" />
	  <EmbeddedResource Include="Assets\UI\levelport.png" />
	  <EmbeddedResource Include="Assets\UI\License.txt" />
	  <EmbeddedResource Include="Assets\UI\light.png" />
	  <EmbeddedResource Include="Assets\UI\load.png" />
	  <EmbeddedResource Include="Assets\UI\lookfar.png" />
	  <EmbeddedResource Include="Assets\UI\lookhere.png" />
	  <EmbeddedResource Include="Assets\UI\loot.png" />
	  <EmbeddedResource Include="Assets\UI\menubackground.png" />
	  <EmbeddedResource Include="Assets\UI\missing_icon.png" />
	  <EmbeddedResource Include="Assets\UI\mix.png" />
	  <EmbeddedResource Include="Assets\UI\monster.png" />
	  <EmbeddedResource Include="Assets\UI\more.png" />
	  <EmbeddedResource Include="Assets\UI\name.png" />
	  <EmbeddedResource Include="Assets\UI\next.png" />
	  <EmbeddedResource Include="Assets\UI\no.png" />
	  <EmbeddedResource Include="Assets\UI\offer.png" />
	  <EmbeddedResource Include="Assets\UI\open.png" />
	  <EmbeddedResource Include="Assets\UI\orb_border.png" />
	  <EmbeddedResource Include="Assets\UI\orb_fill.png" />
	  <EmbeddedResource Include="Assets\UI\orb_glass.png" />
	  <EmbeddedResource Include="Assets\UI\overview.png" />
	  <EmbeddedResource Include="Assets\UI\pay.png" />
	  <EmbeddedResource Include="Assets\UI\picktobag.png" />
	  <EmbeddedResource Include="Assets\UI\pickup.png" />
	  <EmbeddedResource Include="Assets\UI\polymorph.png" />
	  <EmbeddedResource Include="Assets\UI\pray.png" />
	  <EmbeddedResource Include="Assets\UI\previous.png" />
	  <EmbeddedResource Include="Assets\UI\puton.png" />
	  <EmbeddedResource Include="Assets\UI\quaff.png" />
	  <EmbeddedResource Include="Assets\UI\quiver.png" />
	  <EmbeddedResource Include="Assets\UI\read.png" />
	  <EmbeddedResource Include="Assets\UI\remove.png" />
	  <EmbeddedResource Include="Assets\UI\repeat.png" />
	  <EmbeddedResource Include="Assets\UI\rest.png" />
	  <EmbeddedResource Include="Assets\UI\reveal.png" />
	  <EmbeddedResource Include="Assets\UI\ride.png" />
	  <EmbeddedResource Include="Assets\UI\rightring.png" />
	  <EmbeddedResource Include="Assets\UI\rub.png" />
	  <EmbeddedResource Include="Assets\UI\save.png" />
	  <EmbeddedResource Include="Assets\UI\scroll.png" />
	  <EmbeddedResource Include="Assets\UI\search.png" />
	  <EmbeddedResource Include="Assets\UI\search20.png" />
	  <EmbeddedResource Include="Assets\UI\search200.png" />
	  <EmbeddedResource Include="Assets\UI\select.png" />
	  <EmbeddedResource Include="Assets\UI\sit.png" />
	  <EmbeddedResource Include="Assets\UI\skill.png" />
	  <EmbeddedResource Include="Assets\UI\spells.png" />
	  <EmbeddedResource Include="Assets\UI\stairs-down.png" />
	  <EmbeddedResource Include="Assets\UI\stairs-up.png" />
	  <EmbeddedResource Include="Assets\UI\status-ac.png" />
	  <EmbeddedResource Include="Assets\UI\status-casual-classic-mode.png" />
	  <EmbeddedResource Include="Assets\UI\status-casual-mode.png" />
	  <EmbeddedResource Include="Assets\UI\status-difficulty-average.png" />
	  <EmbeddedResource Include="Assets\UI\status-difficulty-easy.png" />
	  <EmbeddedResource Include="Assets\UI\status-difficulty-expert.png" />
	  <EmbeddedResource Include="Assets\UI\status-difficulty-grand-master.png" />
	  <EmbeddedResource Include="Assets\UI\status-difficulty-hard.png" />
	  <EmbeddedResource Include="Assets\UI\status-difficulty-master.png" />
	  <EmbeddedResource Include="Assets\UI\status-difficulty-very-easy.png" />
	  <EmbeddedResource Include="Assets\UI\status-difficulty.png" />
	  <EmbeddedResource Include="Assets\UI\status-dungeon-level.png" />
	  <EmbeddedResource Include="Assets\UI\status-empty-handed.png" />
	  <EmbeddedResource Include="Assets\UI\status-gold.png" />
	  <EmbeddedResource Include="Assets\UI\status-hd.png" />
	  <EmbeddedResource Include="Assets\UI\status-mc.png" />
	  <EmbeddedResource Include="Assets\UI\status-modern-mode.png" />
	  <EmbeddedResource Include="Assets\UI\status-move.png" />
	  <EmbeddedResource Include="Assets\UI\status-quivered-weapon-style.png" />
	  <EmbeddedResource Include="Assets\UI\status-turns.png" />
	  <EmbeddedResource Include="Assets\UI\status-weapon-style.png" />
	  <EmbeddedResource Include="Assets\UI\status-wizard-mode.png" />
	  <EmbeddedResource Include="Assets\UI\status-xp-level.png" />
	  <EmbeddedResource Include="Assets\UI\stone-altmap-off.png" />
	  <EmbeddedResource Include="Assets\UI\stone-altmap-on.png" />
	  <EmbeddedResource Include="Assets\UI\stone-autocenter-off.png" />
	  <EmbeddedResource Include="Assets\UI\stone-autocenter-on.png" />
	  <EmbeddedResource Include="Assets\UI\stone-cancel.png" />
	  <EmbeddedResource Include="Assets\UI\stone-look-off.png" />
	  <EmbeddedResource Include="Assets\UI\stone-look-on.png" />
	  <EmbeddedResource Include="Assets\UI\stone-menu.png" />
	  <EmbeddedResource Include="Assets\UI\stone-minimap-off.png" />
	  <EmbeddedResource Include="Assets\UI\stone-minimap-on.png" />
	  <EmbeddedResource Include="Assets\UI\stone-travel-off.png" />
	  <EmbeddedResource Include="Assets\UI\stone-travel-on.png" />
	  <EmbeddedResource Include="Assets\UI\swap.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-adds.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-casts.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-cooldown.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-damage.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-food.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-mana.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-abjuration.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-arcane.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-celestial.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-clerical.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-conjuration.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-divination.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-enchantment.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-healing.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-movement.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-nature.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-necromancy.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-spell-transmutation.png" />
	  <EmbeddedResource Include="Assets\UI\symbol-success.png" />
	  <EmbeddedResource Include="Assets\UI\takeoff.png" />
	  <EmbeddedResource Include="Assets\UI\takeoffmany.png" />
	  <EmbeddedResource Include="Assets\UI\target-downwards.png" />
	  <EmbeddedResource Include="Assets\UI\target-self.png" />
	  <EmbeddedResource Include="Assets\UI\target-upwards.png" />
	  <EmbeddedResource Include="Assets\UI\teleport.png" />
	  <EmbeddedResource Include="Assets\UI\throw.png" />
	  <EmbeddedResource Include="Assets\UI\tip.png" />
	  <EmbeddedResource Include="Assets\UI\travel.png" />
	  <EmbeddedResource Include="Assets\UI\twoweap.png" />
	  <EmbeddedResource Include="Assets\UI\untrap.png" />
	  <EmbeddedResource Include="Assets\UI\unwield.png" />
	  <EmbeddedResource Include="Assets\UI\viewspell.png" />
	  <EmbeddedResource Include="Assets\UI\vitruvian-gnoll.png" />
	  <EmbeddedResource Include="Assets\UI\wait.png" />
	  <EmbeddedResource Include="Assets\UI\wear.png" />
	  <EmbeddedResource Include="Assets\UI\whatis.png" />
	  <EmbeddedResource Include="Assets\UI\wield.png" />
	  <EmbeddedResource Include="Assets\UI\wipe.png" />
	  <EmbeddedResource Include="Assets\UI\wish.png" />
	  <EmbeddedResource Include="Assets\UI\yell.png" />
	  <EmbeddedResource Include="Assets\UI\yes.png" />
	  <EmbeddedResource Include="Assets\UI\yestoall.png" />
	  <EmbeddedResource Include="Assets\UI\you.png" />
	  <EmbeddedResource Include="Assets\UI\zap.png" />
	  <EmbeddedResource Include="Assets\uwch.ttf" />
	</ItemGroup>

	<ItemGroup>
		<PackageReference Include="Azure.Identity" Version="1.10.4" />
		<PackageReference Include="Azure.Storage.Blobs" Version="12.19.1" />
		<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="9.0.0-preview.2.24128.5" />
		<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
		<PackageReference Include="SkiaSharp" Version="3.0.0-preview.2.1" />
		<PackageReference Include="SkiaSharp.Views.Maui.Controls" Version="3.0.0-preview.2.1" />
		<PackageReference Include="SkiaSharp.Views.Maui.Core" Version="3.0.0-preview.2.1" />
		<PackageReference Include="Microsoft.Maui.Controls" Version="9.0.0-preview.2.10293" />
		<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
	</ItemGroup>

	<ItemGroup>
	  <Compile Update="GamePage.xaml.cs">
	    <DependentUpon>GamePage.xaml</DependentUpon>
	  </Compile>
	</ItemGroup>

	<ItemGroup>
	  <MauiXaml Update="GamePage.xaml">
	    <Generator>MSBuild:Compile</Generator>
	  </MauiXaml>
	</ItemGroup>

	<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
		<BundleResource Include="Platforms\iOS\PrivacyInfo.xcprivacy" LogicalName="PrivacyInfo.xcprivacy" />
	</ItemGroup>
</Project>

Steps to Reproduce

  1. Open GnollHackM (win/win32/xpl/GnollHackM) project property page
  2. You get an exception

Link to public reproduction project repository

https://github.com/hyvanmielenpelit/GnollHack

Version with bug

Unknown/Other

Is this a regression from previous behavior?

Yes, this used to work in .NET MAUI

Last version that worked well

9.0.0-preview.2.10293

Affected platforms

Windows

Affected platform versions

No response

Did you find any workaround?

No, have to open the project property file itself.

Relevant log output

No response

janne-hmp avatar Apr 10 '24 17:04 janne-hmp

This in fact happens also in the default MAUI project as well.

janne-hmp avatar Apr 10 '24 17:04 janne-hmp

Thanks for the issue report @janne-hmp! This issue appears to be a problem with Visual Studio, so we ask that you use the VS feedback tool to report the issue. That way it will get to the routed to the team that owns this experience in VS.

If you encounter a problem with Visual Studio, we want to know about it so that we can diagnose and fix it. By using the Report a Problem tool, you can collect detailed information about the problem, and send it to Microsoft with just a few button clicks.

  1. Go to the Visual Studio for Windows feedback tool or Visual Studio for Mac feedback tool to report the issue
  2. Close this bug, and consider adding a link to the VS Feedback issue so that others can follow its activity there.

@janne-hmp - I think you will find that .NET8 works OK. But please do create a Visual Studio feedback ticket, with the steps above, for this issue in .NET9 with 17.10.

BretJohnson avatar Apr 10 '24 18:04 BretJohnson

Being followed by the Visual Studio team.

janne-hmp avatar Apr 17 '24 13:04 janne-hmp