我有一个 .net maui 项目在使用 .net7.0 添加单元测试项目 (xUnit 2.4.2) 后停止出现在 Windows 平台上(在 Android 上挂起热重载初始化),我引用了我的 .net maui 应用程序作为我的测试项目的依赖项,在 Youtube 上关注 Gerald Versluis 和这篇文章 并遵循所有步骤。我只在调试模式下测试过。
我将 UseMaui 属性添加到测试 csproj 文件
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<UseMaui>true</UseMaui>
<IsPackable>false</IsPackable>
</PropertyGroup>
我已将 .net7.0 添加为 targetFramework 并更新了 maui app csproj 文件上 OutputType 属性的条件:
<PropertyGroup>
<!--If not running unit tests-->
<!--
<TargetFrameworks>net7.0-ios;net7.0-maccatalyst;net7.0-android33.0</TargetFrameworks>
<OutputType>Exe</OutputType>
-->
<!--If writing and running unit tests-->
<TargetFrameworks>net7.0-ios;net7.0-maccatalyst;net7.0-android33.0;net7.0</TargetFrameworks>
<OutputType Condition="'$(TargetFramework)' != 'net7.0'">Exe</OutputType>
<UseMaui>true</UseMaui>
<SingleProject>true</SingleProject>
<ImplicitUsings>enable</ImplicitUsings>
<UseMauiEssentials>true</UseMauiEssentials>
</PropertyGroup>
注意我添加的评论,我根据我正在运行的项目进行切换,我想避免这些评论。测试项目工作正常,但 maui 应用程序项目在 Windows 平台上构建并挂起,因为在调试时不显示应用程序窗口。
在 Android 上,这是一个不同的故事,我启动了应用程序,但它停留在启动屏幕上,热重载初始化直到超时。
Output 窗口充满类似这样的错误 [monodroid-assembly] open_from_bundles: 加载程序集失败
[monodroid-assembly] open_from_bundles: failed to load assembly mymauiapp.Next.dll
[monodroid-gc] GREF GC Threshold: 46080
[monodroid-assembly] open_from_bundles: failed to load assembly Mono.Android.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Java.Interop.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Runtime.InteropServices.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Collections.dll
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/mymauiapp.Next.dll
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/Mono.Android.dll [External]
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/System.Runtime.dll [External]
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/Java.Interop.dll [External]
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/System.Runtime.InteropServices.dll [External]
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/System.Collections.dll [External]
Resolved pending breakpoint for 'Android.Runtime.JNIEnv.RegisterJniNatives(System.IntPtr, System.Int32, System.IntPtr, System.IntPtr, System.Int32)' to /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Android.Runtime/JNIEnv.cs:127 [0x00000].
[monodroid-assembly] open_from_bundles: failed to load assembly System.Threading.dll
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/System.Threading.dll [External]
[monodroid-assembly] open_from_bundles: failed to load assembly System.Threading.Thread.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Diagnostics.StackTrace.dll
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/System.Threading.Thread.dll [External]
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/System.Diagnostics.StackTrace.dll [External]
[me.mgrecruitin] Attempt to remove non-JNI local reference, dumping thread
Loaded assembly: data-0x7c27ceeddcc0 [External]
Loaded assembly: data-0x7c27ceeeaf00 [External]
Loaded assembly: data-0x7c27ceefb240 [External]
[monodroid-assembly] open_from_bundles: failed to load assembly netstandard.dll
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/netstandard.dll [External]
[monodroid-assembly] open_from_bundles: failed to load assembly System.Linq.dll
Loaded assembly: /data/data/com.companyname.mymauiapp/files/.__override__/System.Linq.dll [External]
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Microsoft.VisualStudio.DesignTools.TapContract.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.HotReload.Contracts.dll
[monodroid-assembly] open_from_bundles: failed to load assembly Xamarin.HotReload.Contracts.dll
[monodroid-assembly] open_from_bundles: failed to load assembly System.Collections.Concurrent.dll
可能相关的问题.
我创建了一个新项目来重现按预期工作的问题,现在我很困惑为什么会这样。我猜这与我的 mauiapp csproj 配置有关,但似乎无法准确指出。这是我的完整应用程序 csprojs 的gist。
我再次尝试清理/构建,删除 bin/obj 文件夹,重新启动 VS,多次卸载我的测试项目,第三次或第四次我让项目再次运行。我不知道是什么原因造成的。