Repository: reactiveui/ReactiveUI
Branch: main
Commit: fe354a4238d2
Files: 1232
Total size: 8.3 MB
Directory structure:
gitextract_wk8b2kvx/
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── bug-report.yml
│ │ ├── config.yml
│ │ └── feature_request.md
│ ├── copilot-instructions.md
│ ├── renovate.json
│ └── workflows/
│ ├── build-samples.yml
│ ├── ci-build.yml
│ ├── lock.yml
│ └── release.yml
├── .gitignore
├── CLAUDE.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── agent.md
├── codecov.yml
├── docs/
│ └── RxSchedulers.md
├── integrationtests/
│ ├── Directory.Build.props
│ ├── IntegrationTests.All.sln
│ ├── IntegrationTests.Android/
│ │ ├── Assets/
│ │ │ └── AboutAssets.txt
│ │ ├── IntegrationTests.Android.csproj
│ │ ├── MainActivity.cs
│ │ ├── Properties/
│ │ │ ├── AndroidManifest.xml
│ │ │ └── AssemblyInfo.cs
│ │ └── Resources/
│ │ ├── AboutResources.txt
│ │ ├── layout/
│ │ │ ├── activity_main.axml
│ │ │ └── content_main.axml
│ │ ├── menu/
│ │ │ └── menu_main.xml
│ │ ├── mipmap-anydpi-v26/
│ │ │ ├── ic_launcher.xml
│ │ │ └── ic_launcher_round.xml
│ │ └── values/
│ │ ├── Strings.xml
│ │ ├── colors.xml
│ │ ├── dimens.xml
│ │ ├── ic_launcher_background.xml
│ │ └── styles.xml
│ ├── IntegrationTests.Android.sln
│ ├── IntegrationTests.Mac/
│ │ ├── AppDelegate.cs
│ │ ├── Assets.xcassets/
│ │ │ ├── AppIcon.appiconset/
│ │ │ │ └── Contents.json
│ │ │ └── Contents.json
│ │ ├── Entitlements.plist
│ │ ├── Info.plist
│ │ ├── IntegrationTests.Mac.csproj
│ │ ├── LoginViewController.cs
│ │ ├── LoginViewController.designer.cs
│ │ ├── Main.storyboard
│ │ ├── MainClass.cs
│ │ └── Properties/
│ │ └── AssemblyInfo.cs
│ ├── IntegrationTests.Mac.sln
│ ├── IntegrationTests.Shared/
│ │ ├── IntegrationTests.Shared.csproj
│ │ └── LoginViewModel.cs
│ ├── IntegrationTests.Shared.Tests/
│ │ ├── AssemblyInfo.Parallel.cs
│ │ ├── BuilderExtensions.cs
│ │ ├── Features/
│ │ │ └── Login/
│ │ │ ├── LoginViewModelBuilder.cs
│ │ │ └── LoginViewModelTests.cs
│ │ ├── IBuilder.cs
│ │ ├── IntegrationTests.Shared.Tests.csproj
│ │ └── app.config
│ ├── IntegrationTests.Shared.Tests.sln
│ ├── IntegrationTests.UWP/
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── IntegrationTests.UWP.csproj
│ │ ├── LoginControl.xaml
│ │ ├── LoginControl.xaml.cs
│ │ ├── LoginControlBase.cs
│ │ ├── MainPage.xaml
│ │ ├── MainPage.xaml.cs
│ │ ├── Package.appxmanifest
│ │ └── Properties/
│ │ ├── AssemblyInfo.cs
│ │ └── Default.rd.xml
│ ├── IntegrationTests.UWP.sln
│ ├── IntegrationTests.WPF/
│ │ ├── App.config
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── IntegrationTests.WPF.csproj
│ │ ├── LoginControl.xaml
│ │ ├── LoginControl.xaml.cs
│ │ ├── MainWindow.xaml
│ │ ├── MainWindow.xaml.cs
│ │ ├── Properties/
│ │ │ ├── AssemblyInfo.cs
│ │ │ ├── Resources.Designer.cs
│ │ │ ├── Resources.resx
│ │ │ ├── Settings.Designer.cs
│ │ │ └── Settings.settings
│ │ └── UserControlExtensions.cs
│ ├── IntegrationTests.WPF.sln
│ ├── IntegrationTests.WinForms/
│ │ ├── App.config
│ │ ├── IntegrationTests.WinForms.csproj
│ │ ├── LoginControl.Designer.cs
│ │ ├── LoginControl.cs
│ │ ├── LoginControl.resx
│ │ ├── MainForm.Designer.cs
│ │ ├── MainForm.cs
│ │ ├── MainForm.resx
│ │ ├── Program.cs
│ │ └── Properties/
│ │ ├── AssemblyInfo.cs
│ │ ├── Resources.Designer.cs
│ │ ├── Resources.resx
│ │ ├── Settings.Designer.cs
│ │ └── Settings.settings
│ ├── IntegrationTests.WinForms.sln
│ ├── IntegrationTests.iOS/
│ │ ├── AppDelegate.cs
│ │ ├── Application.cs
│ │ ├── Assets.xcassets/
│ │ │ └── AppIcon.appiconset/
│ │ │ └── Contents.json
│ │ ├── Entitlements.plist
│ │ ├── Info.plist
│ │ ├── IntegrationTests.iOS.csproj
│ │ ├── LaunchScreen.storyboard
│ │ ├── LoginViewController.cs
│ │ ├── LoginViewController.designer.cs
│ │ ├── Main.storyboard
│ │ └── Resources/
│ │ └── LaunchScreen.xib
│ ├── IntegrationTests.iOS.sln
│ ├── README.md
│ └── global.json
├── snippets/
│ ├── Resharper/
│ │ └── RxUI.DotSettings
│ ├── Rider/
│ │ └── ReactiveUI.xml
│ ├── Visual Studio/
│ │ ├── ruib.snippet
│ │ ├── ruibc.snippet
│ │ ├── ruicommand.snippet
│ │ ├── ruiinteraction.snippet
│ │ ├── ruiiv4.snippet
│ │ ├── ruioaph.snippet
│ │ ├── ruiowb.snippet
│ │ ├── ruiprop.snippet
│ │ └── ruiviewreg.snippet
│ └── Visual Studio for Mac/
│ ├── ruib.template.xml
│ ├── ruibc.template.xml
│ ├── ruiowb.template.xml
│ └── ruiprop.template.xml
├── src/
│ ├── .nuget/
│ │ └── NuGet.Config
│ ├── Benchmarks/
│ │ ├── AutoPersistBenchmark.cs
│ │ ├── CreateReactiveListBenchmark.cs
│ │ ├── Directory.Packages.props
│ │ ├── INPCObservableForPropertyBenchmarks.cs
│ │ ├── Mocks/
│ │ │ ├── MockHostScreen.cs
│ │ │ └── MockViewModel.cs
│ │ ├── NavigationStackBenchmark.cs
│ │ ├── Program.cs
│ │ ├── ReactiveCommandCreateBenchmark.cs
│ │ ├── ReactiveListOperationBenchmark.cs
│ │ ├── ReactiveUI.Benchmarks.csproj
│ │ ├── ReactiveUI.Benchmarks.sln
│ │ ├── RoutableViewModelMixinsBenchmarks.cs
│ │ ├── global.json
│ │ └── xunit.runner.json
│ ├── Directory.Build.props
│ ├── Directory.Build.targets
│ ├── Directory.Packages.props
│ ├── ReactiveUI/
│ │ ├── Activation/
│ │ │ ├── CanActivateViewFetcher.cs
│ │ │ ├── IActivationForViewFetcher.cs
│ │ │ ├── ViewForMixins.cs
│ │ │ └── ViewModelActivator.cs
│ │ ├── Bindings/
│ │ │ ├── BindingDirection.cs
│ │ │ ├── BindingTypeConverter.cs
│ │ │ ├── BindingTypeConverterDispatch.cs
│ │ │ ├── Command/
│ │ │ │ ├── CommandBinder.cs
│ │ │ │ ├── CommandBinderImplementation.cs
│ │ │ │ ├── CommandBinderImplementationMixins.cs
│ │ │ │ ├── CreatesCommandBinding.cs
│ │ │ │ ├── CreatesCommandBindingViaCommandParameter.cs
│ │ │ │ ├── CreatesCommandBindingViaEvent.cs
│ │ │ │ └── ICommandBinderImplementation.cs
│ │ │ ├── Converter/
│ │ │ │ ├── BooleanToStringTypeConverter.cs
│ │ │ │ ├── ByteToNullableByteTypeConverter.cs
│ │ │ │ ├── ByteToStringTypeConverter.cs
│ │ │ │ ├── DateOnlyToStringTypeConverter.cs
│ │ │ │ ├── DateTimeOffsetToStringTypeConverter.cs
│ │ │ │ ├── DateTimeToStringTypeConverter.cs
│ │ │ │ ├── DecimalToNullableDecimalTypeConverter.cs
│ │ │ │ ├── DecimalToStringTypeConverter.cs
│ │ │ │ ├── DoubleToNullableDoubleTypeConverter.cs
│ │ │ │ ├── DoubleToStringTypeConverter.cs
│ │ │ │ ├── EqualityTypeConverter.cs
│ │ │ │ ├── GuidToStringTypeConverter.cs
│ │ │ │ ├── IntegerToNullableIntegerTypeConverter.cs
│ │ │ │ ├── IntegerToStringTypeConverter.cs
│ │ │ │ ├── LongToNullableLongTypeConverter.cs
│ │ │ │ ├── LongToStringTypeConverter.cs
│ │ │ │ ├── NullableBooleanToStringTypeConverter.cs
│ │ │ │ ├── NullableByteToByteTypeConverter.cs
│ │ │ │ ├── NullableByteToStringTypeConverter.cs
│ │ │ │ ├── NullableDateOnlyToStringTypeConverter.cs
│ │ │ │ ├── NullableDateTimeOffsetToStringTypeConverter.cs
│ │ │ │ ├── NullableDateTimeToStringTypeConverter.cs
│ │ │ │ ├── NullableDecimalToDecimalTypeConverter.cs
│ │ │ │ ├── NullableDecimalToStringTypeConverter.cs
│ │ │ │ ├── NullableDoubleToDoubleTypeConverter.cs
│ │ │ │ ├── NullableDoubleToStringTypeConverter.cs
│ │ │ │ ├── NullableGuidToStringTypeConverter.cs
│ │ │ │ ├── NullableIntegerToIntegerTypeConverter.cs
│ │ │ │ ├── NullableIntegerToStringTypeConverter.cs
│ │ │ │ ├── NullableLongToLongTypeConverter.cs
│ │ │ │ ├── NullableLongToStringTypeConverter.cs
│ │ │ │ ├── NullableShortToShortTypeConverter.cs
│ │ │ │ ├── NullableShortToStringTypeConverter.cs
│ │ │ │ ├── NullableSingleToSingleTypeConverter.cs
│ │ │ │ ├── NullableSingleToStringTypeConverter.cs
│ │ │ │ ├── NullableTimeOnlyToStringTypeConverter.cs
│ │ │ │ ├── NullableTimeSpanToStringTypeConverter.cs
│ │ │ │ ├── ShortToNullableShortTypeConverter.cs
│ │ │ │ ├── ShortToStringTypeConverter.cs
│ │ │ │ ├── SingleToNullableSingleTypeConverter.cs
│ │ │ │ ├── SingleToStringTypeConverter.cs
│ │ │ │ ├── StringConverter.cs
│ │ │ │ ├── StringToBooleanTypeConverter.cs
│ │ │ │ ├── StringToByteTypeConverter.cs
│ │ │ │ ├── StringToDateOnlyTypeConverter.cs
│ │ │ │ ├── StringToDateTimeOffsetTypeConverter.cs
│ │ │ │ ├── StringToDateTimeTypeConverter.cs
│ │ │ │ ├── StringToDecimalTypeConverter.cs
│ │ │ │ ├── StringToDoubleTypeConverter.cs
│ │ │ │ ├── StringToGuidTypeConverter.cs
│ │ │ │ ├── StringToIntegerTypeConverter.cs
│ │ │ │ ├── StringToLongTypeConverter.cs
│ │ │ │ ├── StringToNullableBooleanTypeConverter.cs
│ │ │ │ ├── StringToNullableByteTypeConverter.cs
│ │ │ │ ├── StringToNullableDateOnlyTypeConverter.cs
│ │ │ │ ├── StringToNullableDateTimeOffsetTypeConverter.cs
│ │ │ │ ├── StringToNullableDateTimeTypeConverter.cs
│ │ │ │ ├── StringToNullableDecimalTypeConverter.cs
│ │ │ │ ├── StringToNullableDoubleTypeConverter.cs
│ │ │ │ ├── StringToNullableGuidTypeConverter.cs
│ │ │ │ ├── StringToNullableIntegerTypeConverter.cs
│ │ │ │ ├── StringToNullableLongTypeConverter.cs
│ │ │ │ ├── StringToNullableShortTypeConverter.cs
│ │ │ │ ├── StringToNullableSingleTypeConverter.cs
│ │ │ │ ├── StringToNullableTimeOnlyTypeConverter.cs
│ │ │ │ ├── StringToNullableTimeSpanTypeConverter.cs
│ │ │ │ ├── StringToShortTypeConverter.cs
│ │ │ │ ├── StringToSingleTypeConverter.cs
│ │ │ │ ├── StringToTimeOnlyTypeConverter.cs
│ │ │ │ ├── StringToTimeSpanTypeConverter.cs
│ │ │ │ ├── StringToUriTypeConverter.cs
│ │ │ │ ├── TimeOnlyToStringTypeConverter.cs
│ │ │ │ ├── TimeSpanToStringTypeConverter.cs
│ │ │ │ └── UriToStringTypeConverter.cs
│ │ │ ├── Converters/
│ │ │ │ ├── BindingFallbackConverterRegistry.cs
│ │ │ │ ├── BindingTypeConverterRegistry.cs
│ │ │ │ ├── ConverterMigrationHelper.cs
│ │ │ │ ├── ConverterService.cs
│ │ │ │ ├── RxConverters.cs
│ │ │ │ └── SetMethodBindingConverterRegistry.cs
│ │ │ ├── IBindingFallbackConverter.cs
│ │ │ ├── IBindingTypeConverter.cs
│ │ │ ├── IBindingTypeConverter{TFrom,TTo}.cs
│ │ │ ├── ISetMethodBindingConverter.cs
│ │ │ ├── Interaction/
│ │ │ │ ├── IInteractionBinderImplementation.cs
│ │ │ │ ├── InteractionBinderImplementation.cs
│ │ │ │ └── InteractionBindingMixins.cs
│ │ │ ├── Property/
│ │ │ │ ├── IPropertyBinderImplementation.cs
│ │ │ │ ├── Internal/
│ │ │ │ │ ├── BindingConverterResolver.cs
│ │ │ │ │ ├── BindingHookEvaluator.cs
│ │ │ │ │ ├── IBindingConverterResolver.cs
│ │ │ │ │ ├── IBindingHookEvaluator.cs
│ │ │ │ │ ├── IPropertyBindingExpressionCompiler.cs
│ │ │ │ │ └── PropertyBindingExpressionCompiler.cs
│ │ │ │ ├── PropertyBinderImplementation.cs
│ │ │ │ ├── PropertyBindingMixins.cs
│ │ │ │ └── TriggerUpdate.cs
│ │ │ └── Reactive/
│ │ │ ├── IReactiveBinding.cs
│ │ │ └── ReactiveBinding.cs
│ │ ├── Builder/
│ │ │ ├── IReactiveUIBuilder.cs
│ │ │ ├── IReactiveUIInstance.cs
│ │ │ ├── ReactiveUIBuilder.cs
│ │ │ └── RxAppBuilder.cs
│ │ ├── Comparers/
│ │ │ ├── ChainedComparer.cs
│ │ │ ├── ComparerChainingExtensions.cs
│ │ │ ├── IComparerBuilder.cs
│ │ │ └── OrderedComparer.cs
│ │ ├── EventHandlers/
│ │ │ └── LocalizableAttribute.cs
│ │ ├── Expression/
│ │ │ ├── ExpressionRewriter.cs
│ │ │ └── Reflection.cs
│ │ ├── Helpers/
│ │ │ └── ArgumentExceptionHelper.cs
│ │ ├── Interactions/
│ │ │ ├── IInteraction.cs
│ │ │ ├── IInteractionContext.cs
│ │ │ ├── IOutputContext.cs
│ │ │ ├── Interaction.cs
│ │ │ ├── InteractionContext.cs
│ │ │ └── UnhandledInteractionException.cs
│ │ ├── Interfaces/
│ │ │ ├── IActivatableView.cs
│ │ │ ├── IActivatableViewModel.cs
│ │ │ ├── ICanActivate.cs
│ │ │ ├── ICanForceManualActivation.cs
│ │ │ ├── ICreatesCommandBinding.cs
│ │ │ ├── ICreatesCustomizedCommandRebinding.cs
│ │ │ ├── ICreatesObservableForProperty.cs
│ │ │ ├── IHandleObservableErrors.cs
│ │ │ ├── IMessageBus.cs
│ │ │ ├── IObservedChange.cs
│ │ │ ├── IPlatformOperations.cs
│ │ │ ├── IPropertyBindingHook.cs
│ │ │ ├── IReactiveNotifyPropertyChanged.cs
│ │ │ ├── IReactivePropertyChangedEventArgs.cs
│ │ │ ├── IRegistrar.cs
│ │ │ ├── IRoutableViewModel.cs
│ │ │ ├── IScreen.cs
│ │ │ ├── ISuspensionDriver.cs
│ │ │ ├── ISuspensionHost.cs
│ │ │ ├── ISuspensionHost{TAppState}.cs
│ │ │ ├── IViewFor.cs
│ │ │ ├── IViewLocator.cs
│ │ │ ├── IViewModule.cs
│ │ │ ├── IWantsToRegisterStuff.cs
│ │ │ ├── ObservedChange.cs
│ │ │ ├── ReactivePropertyChangedEventArgs.cs
│ │ │ └── ReactivePropertyChangingEventArgs.cs
│ │ ├── Mixins/
│ │ │ ├── AutoPersistHelper.cs
│ │ │ ├── BuilderMixins.cs
│ │ │ ├── ChangeSetMixin.cs
│ │ │ ├── CompatMixins.cs
│ │ │ ├── DependencyResolverMixins.cs
│ │ │ ├── ExpressionMixins.cs
│ │ │ ├── MutableDependencyResolverAOTExtensions.cs
│ │ │ ├── MutableDependencyResolverExtensions.cs
│ │ │ ├── ObservableLoggingMixin.cs
│ │ │ ├── ObservableMixins.cs
│ │ │ ├── ObservedChangedMixin.cs
│ │ │ ├── PreserveAttribute.cs
│ │ │ ├── ReactiveNotifyPropertyChangedMixin.cs
│ │ │ └── SwitchSubscribeMixin.cs
│ │ ├── Observable.cs
│ │ ├── ObservableForProperty/
│ │ │ ├── INPCObservableForProperty.cs
│ │ │ ├── IROObservableForProperty.cs
│ │ │ ├── OAPHCreationHelperMixin.cs
│ │ │ ├── ObservableAsPropertyHelper.cs
│ │ │ └── POCOObservableForProperty.cs
│ │ ├── ObservableFuncMixins.cs
│ │ ├── Observables.cs
│ │ ├── Platforms/
│ │ │ ├── android/
│ │ │ │ ├── AndroidCommandBinders.cs
│ │ │ │ ├── AndroidObservableForWidgets.cs
│ │ │ │ ├── AutoSuspendHelper.cs
│ │ │ │ ├── BundleSuspensionDriver.cs
│ │ │ │ ├── ContextExtensions.cs
│ │ │ │ ├── ControlFetcherMixin.cs
│ │ │ │ ├── FlexibleCommandBinder.cs
│ │ │ │ ├── HandlerScheduler.cs
│ │ │ │ ├── ILayoutViewHost.cs
│ │ │ │ ├── IgnoreResourceAttribute.cs
│ │ │ │ ├── JavaHolder.cs
│ │ │ │ ├── LayoutViewHost.cs
│ │ │ │ ├── LinkerOverrides.cs
│ │ │ │ ├── ObjectExtension.cs
│ │ │ │ ├── PlatformOperations.cs
│ │ │ │ ├── PlatformRegistrations.cs
│ │ │ │ ├── ReactiveActivity.cs
│ │ │ │ ├── ReactiveActivity{TViewModel}.cs
│ │ │ │ ├── ReactiveFragment.cs
│ │ │ │ ├── ReactiveFragment{TViewModel}.cs
│ │ │ │ ├── ReactiveViewHost.cs
│ │ │ │ ├── ResolveStrategy.cs
│ │ │ │ ├── SharedPreferencesExtensions.cs
│ │ │ │ ├── UsbManagerExtensions.cs
│ │ │ │ ├── ViewCommandExtensions.cs
│ │ │ │ ├── ViewMixins.cs
│ │ │ │ └── WireUpResourceAttribute.cs
│ │ │ ├── apple-common/
│ │ │ │ ├── AppSupportJsonSuspensionDriver.cs
│ │ │ │ ├── BlockObserveValueDelegate.cs
│ │ │ │ ├── Buildsupport/
│ │ │ │ │ └── Linker.xml
│ │ │ │ ├── Converters/
│ │ │ │ │ ├── DateTimeOffsetToNSDateConverter.cs
│ │ │ │ │ ├── DateTimeToNSDateConverter.cs
│ │ │ │ │ ├── NSDateToDateTimeConverter.cs
│ │ │ │ │ ├── NSDateToDateTimeOffsetConverter.cs
│ │ │ │ │ ├── NSDateToNullableDateTimeConverter.cs
│ │ │ │ │ ├── NSDateToNullableDateTimeOffsetConverter.cs
│ │ │ │ │ ├── NullableDateTimeOffsetToNSDateConverter.cs
│ │ │ │ │ └── NullableDateTimeToNSDateConverter.cs
│ │ │ │ ├── IndexNormalizer.cs
│ │ │ │ ├── KVOObservableForProperty.cs
│ │ │ │ ├── NSRunloopScheduler.cs
│ │ │ │ ├── ObservableForPropertyBase.cs
│ │ │ │ ├── PlatformOperations.cs
│ │ │ │ ├── ReactiveControl.cs
│ │ │ │ ├── ReactiveImageView.cs
│ │ │ │ ├── ReactiveSplitViewController.cs
│ │ │ │ ├── ReactiveView.cs
│ │ │ │ ├── ReactiveViewController.cs
│ │ │ │ ├── TargetActionCommandBinder.cs
│ │ │ │ ├── UIViewControllerMixins.cs
│ │ │ │ ├── Update.cs
│ │ │ │ ├── UpdateType.cs
│ │ │ │ └── ViewModelViewHost.cs
│ │ │ ├── ios/
│ │ │ │ ├── LinkerOverrides.cs
│ │ │ │ ├── UIKitCommandBinders.cs
│ │ │ │ └── UIKitObservableForProperty.cs
│ │ │ ├── mac/
│ │ │ │ ├── AppKitObservableForProperty.cs
│ │ │ │ ├── AutoSuspendHelper.cs
│ │ │ │ ├── PlatformRegistrations.cs
│ │ │ │ └── ReactiveWindowController.cs
│ │ │ ├── mobile-common/
│ │ │ │ └── ComponentModelFallbackConverter.cs
│ │ │ ├── net/
│ │ │ │ ├── ComponentModelFallbackConverter.cs
│ │ │ │ └── PlatformRegistrations.cs
│ │ │ ├── netstandard2.0/
│ │ │ │ └── PlatformRegistrations.cs
│ │ │ ├── tizen/
│ │ │ │ ├── EcoreMainloopScheduler.cs
│ │ │ │ ├── PlatformOperations.cs
│ │ │ │ └── PlatformRegistrations.cs
│ │ │ ├── tvos/
│ │ │ │ ├── LinkerOverrides.cs
│ │ │ │ ├── UIKitCommandBinders.cs
│ │ │ │ └── UIKitObservableForProperty.cs
│ │ │ └── uikit-common/
│ │ │ ├── AutoSuspendHelper.cs
│ │ │ ├── CollectionViewSectionInformation.cs
│ │ │ ├── CommonReactiveSource.cs
│ │ │ ├── FlexibleCommandBinder.cs
│ │ │ ├── ISectionInformation.cs
│ │ │ ├── IUICollViewAdapter.cs
│ │ │ ├── PlatformRegistrations.cs
│ │ │ ├── ReactiveCollectionReusableView.cs
│ │ │ ├── ReactiveCollectionView.cs
│ │ │ ├── ReactiveCollectionViewCell.cs
│ │ │ ├── ReactiveCollectionViewController.cs
│ │ │ ├── ReactiveCollectionViewSource.cs
│ │ │ ├── ReactiveCollectionViewSourceExtensions.cs
│ │ │ ├── ReactiveNavigationController.cs
│ │ │ ├── ReactivePageViewController.cs
│ │ │ ├── ReactiveTabBarController.cs
│ │ │ ├── ReactiveTableView.cs
│ │ │ ├── ReactiveTableViewCell.cs
│ │ │ ├── ReactiveTableViewController.cs
│ │ │ ├── ReactiveTableViewSource.cs
│ │ │ ├── ReactiveTableViewSourceExtensions.cs
│ │ │ ├── RoutedViewHost.cs
│ │ │ ├── SectionInfoIdGenerator.cs
│ │ │ ├── TableSectionHeader.cs
│ │ │ ├── TableSectionInformation.cs
│ │ │ ├── UICollectionViewAdapter.cs
│ │ │ ├── UIControlCommandExtensions.cs
│ │ │ └── UITableViewAdapter.cs
│ │ ├── Polyfills/
│ │ │ ├── CallerArgumentExpressionAttribute.cs
│ │ │ ├── DoesNotReturnIfAttribute.cs
│ │ │ ├── DynamicallyAccessedMemberTypes.cs
│ │ │ ├── DynamicallyAccessedMembersAttribute.cs
│ │ │ ├── IsExternalInit.cs
│ │ │ ├── MaybeNullWhenAttribute.cs
│ │ │ ├── MemberNotNullAttribute.cs
│ │ │ ├── NotNullAttribute.cs
│ │ │ ├── NotNullWhenAttribute.cs
│ │ │ ├── RequiresDynamicCodeAttribute.cs
│ │ │ ├── RequiresUnreferencedCodeAttribute.cs
│ │ │ └── UnconditionalSuppressMessageAttribute.cs
│ │ ├── ReactiveCommand/
│ │ │ ├── CombinedReactiveCommand.cs
│ │ │ ├── IReactiveCommand.cs
│ │ │ ├── ReactiveCommand.cs
│ │ │ ├── ReactiveCommandBase.cs
│ │ │ └── ReactiveCommandMixins.cs
│ │ ├── ReactiveObject/
│ │ │ ├── IReactiveObject.cs
│ │ │ ├── IReactiveObjectExtensions.cs
│ │ │ ├── ReactiveObject.cs
│ │ │ └── ReactiveRecord.cs
│ │ ├── ReactiveProperty/
│ │ │ ├── IReactiveProperty.cs
│ │ │ ├── ReactiveProperty.cs
│ │ │ ├── ReactivePropertyMixins.cs
│ │ │ ├── SingletonDataErrorsChangedEventArgs.cs
│ │ │ └── SingletonPropertyChangedEventArgs.cs
│ │ ├── ReactiveUI.csproj
│ │ ├── Registration/
│ │ │ ├── DependencyResolverRegistrar.cs
│ │ │ └── Registrations.cs
│ │ ├── Routing/
│ │ │ ├── MessageBus.cs
│ │ │ ├── NotAWeakReference.cs
│ │ │ ├── RoutableViewModelMixin.cs
│ │ │ ├── RoutingState.cs
│ │ │ └── RoutingStateMixins.cs
│ │ ├── RxCacheSize.cs
│ │ ├── RxSchedulers.cs
│ │ ├── RxState.cs
│ │ ├── RxSuspension.cs
│ │ ├── Scheduler/
│ │ │ ├── ScheduledSubject.cs
│ │ │ └── WaitForDispatcherScheduler.cs
│ │ ├── Suspension/
│ │ │ ├── DummySuspensionDriver.cs
│ │ │ ├── SuspensionHost.cs
│ │ │ ├── SuspensionHostExtensions.cs
│ │ │ └── SuspensionHost{TAppState}.cs
│ │ ├── UnhandledErrorException.cs
│ │ ├── VariadicTemplates.cs
│ │ ├── VariadicTemplates.tt
│ │ └── View/
│ │ ├── DefaultViewLocator.cs
│ │ ├── ExcludeFromViewRegistrationAttribute.cs
│ │ ├── SingleInstanceViewAttribute.cs
│ │ ├── ViewContractAttribute.cs
│ │ ├── ViewLocator.cs
│ │ ├── ViewLocatorNotFoundException.cs
│ │ └── ViewMappingBuilder.cs
│ ├── ReactiveUI.AndroidX/
│ │ ├── Builder/
│ │ │ └── AndroidXReactiveUIBuilderExtensions.cs
│ │ ├── ControlFetcherMixin.cs
│ │ ├── ReactiveAppCompatActivity.cs
│ │ ├── ReactiveAppCompatActivity{TViewModel}.cs
│ │ ├── ReactiveDialogFragment.cs
│ │ ├── ReactiveDialogFragment{TViewModel}.cs
│ │ ├── ReactiveFragment.cs
│ │ ├── ReactiveFragmentActivity.cs
│ │ ├── ReactiveFragmentActivity{TViewModel}.cs
│ │ ├── ReactiveFragment{TViewModel}.cs
│ │ ├── ReactivePagerAdapter.cs
│ │ ├── ReactivePagerAdapter{TViewModel,TCollection}.cs
│ │ ├── ReactivePreferenceFragment.cs
│ │ ├── ReactivePreferenceFragment{TViewModel}.cs
│ │ ├── ReactiveRecyclerViewAdapter.cs
│ │ ├── ReactiveRecyclerViewAdapter{TViewModel,TCollection}.cs
│ │ ├── ReactiveRecyclerViewViewHolder.cs
│ │ ├── ReactiveUI.AndroidX.csproj
│ │ └── Registrations.cs
│ ├── ReactiveUI.Blazor/
│ │ ├── Builder/
│ │ │ └── BlazorReactiveUIBuilderExtensions.cs
│ │ ├── GlobalUsings.cs
│ │ ├── Internal/
│ │ │ ├── ReactiveComponentHelpers.cs
│ │ │ └── ReactiveComponentState.cs
│ │ ├── PlatformOperations.cs
│ │ ├── Properties/
│ │ │ └── launchSettings.json
│ │ ├── ReactiveComponentBase.cs
│ │ ├── ReactiveInjectableComponentBase.cs
│ │ ├── ReactiveLayoutComponentBase.cs
│ │ ├── ReactiveOwningComponentBase.cs
│ │ ├── ReactiveUI.Blazor.csproj
│ │ └── Registrations.cs
│ ├── ReactiveUI.Blend/
│ │ ├── FollowObservableStateBehavior.cs
│ │ ├── ObservableTrigger.cs
│ │ ├── Properties/
│ │ │ └── ReactiveUI.Blend_UWP.rd.xml
│ │ └── ReactiveUI.Blend.csproj
│ ├── ReactiveUI.Drawing/
│ │ ├── Builder/
│ │ │ └── ReactiveUIBuilderDrawingExtensions.cs
│ │ ├── ReactiveUI.Drawing.csproj
│ │ └── Registrations.cs
│ ├── ReactiveUI.Maui/
│ │ ├── ActivationForViewFetcher.cs
│ │ ├── AutoSuspendHelper.cs
│ │ ├── Builder/
│ │ │ └── MauiReactiveUIBuilderExtensions.cs
│ │ ├── Common/
│ │ │ ├── AutoDataTemplateBindingHook.cs
│ │ │ ├── BooleanToVisibilityHint.cs
│ │ │ ├── BooleanToVisibilityTypeConverter.cs
│ │ │ ├── PlatformOperations.cs
│ │ │ ├── ReactivePage.cs
│ │ │ ├── ReactiveUserControl.cs
│ │ │ ├── RoutedViewHost.cs
│ │ │ ├── RoutedViewHost{TViewModel}.cs
│ │ │ ├── ViewModelViewHost.cs
│ │ │ ├── ViewModelViewHost{TViewModel}.cs
│ │ │ └── VisibilityToBooleanTypeConverter.cs
│ │ ├── DisableAnimationAttribute.cs
│ │ ├── Internal/
│ │ │ └── MauiReactiveHelpers.cs
│ │ ├── ReactiveCarouselView.cs
│ │ ├── ReactiveContentPage.cs
│ │ ├── ReactiveContentView.cs
│ │ ├── ReactiveEntryCell.cs
│ │ ├── ReactiveFlyoutPage.cs
│ │ ├── ReactiveImageCell.cs
│ │ ├── ReactiveImageItemView.cs
│ │ ├── ReactiveMasterDetailPage.cs
│ │ ├── ReactiveMultiPage.cs
│ │ ├── ReactiveNavigationPage.cs
│ │ ├── ReactiveShell.cs
│ │ ├── ReactiveShellContent.cs
│ │ ├── ReactiveSwitchCell.cs
│ │ ├── ReactiveTabbedPage.cs
│ │ ├── ReactiveTextCell.cs
│ │ ├── ReactiveTextItemView.cs
│ │ ├── ReactiveUI.Maui.csproj
│ │ ├── ReactiveViewCell.cs
│ │ ├── Registrations.cs
│ │ ├── RoutedViewHost.cs
│ │ ├── RoutedViewHost{TViewModel}.cs
│ │ ├── ViewModelViewHost.cs
│ │ ├── ViewModelViewHost{TViewModel}.cs
│ │ └── WinUI/
│ │ ├── DependencyObjectObservableForProperty.cs
│ │ ├── DispatcherQueueScheduler.cs
│ │ └── TransitioningContentControl.Empty.cs
│ ├── ReactiveUI.Testing/
│ │ ├── AppBuilderTestBase.cs
│ │ ├── IBuilder.cs
│ │ ├── IBuilderExtensions.cs
│ │ ├── MessageBusExtensions.cs
│ │ ├── Properties/
│ │ │ └── ReactiveUI.Testing.rd.xml
│ │ ├── ReactiveUI.Testing.csproj
│ │ ├── RxTest.cs
│ │ ├── SchedulerExtensions.cs
│ │ └── TestSequencer.cs
│ ├── ReactiveUI.Testing.Reactive/
│ │ ├── ReactiveUI.Testing.Reactive.csproj
│ │ └── TestSchedulerExtensions.cs
│ ├── ReactiveUI.WinUI/
│ │ ├── Builder/
│ │ │ └── WinUIReactiveUIBuilderExtensions.cs
│ │ └── ReactiveUI.WinUI.csproj
│ ├── ReactiveUI.Winforms/
│ │ ├── ActivationForViewFetcher.cs
│ │ ├── Builder/
│ │ │ └── WinFormsReactiveUIBuilderExtensions.cs
│ │ ├── ContentControlBindingHook.cs
│ │ ├── CreatesWinformsCommandBinding.cs
│ │ ├── ObservableCollectionChangedToListChangedTransformer.cs
│ │ ├── PanelSetMethodBindingConverter.cs
│ │ ├── PlatformOperations.cs
│ │ ├── ReactiveUI.Winforms.csproj
│ │ ├── ReactiveUserControl.Designer.cs
│ │ ├── ReactiveUserControl.cs
│ │ ├── ReactiveUserControlNonGeneric.Designer.cs
│ │ ├── ReactiveUserControlNonGeneric.cs
│ │ ├── Registrations.cs
│ │ ├── RoutedViewHost.Designer.cs
│ │ ├── RoutedViewHost.cs
│ │ ├── TableContentSetMethodBindingConverter.cs
│ │ ├── ViewModelViewHost.Designer.cs
│ │ ├── ViewModelViewHost.cs
│ │ └── WinformsCreatesObservableForProperty.cs
│ ├── ReactiveUI.Wpf/
│ │ ├── ActivationForViewFetcher.cs
│ │ ├── Attributes.cs
│ │ ├── AutoSuspendHelper.cs
│ │ ├── Binding/
│ │ │ ├── ValidationBindingMixins.cs
│ │ │ └── ValidationBindingWpf.cs
│ │ ├── Builder/
│ │ │ └── WpfReactiveUIBuilderExtensions.cs
│ │ ├── Common/
│ │ │ ├── AutoDataTemplateBindingHook.cs
│ │ │ ├── BooleanToVisibilityHint.cs
│ │ │ ├── BooleanToVisibilityTypeConverter.cs
│ │ │ ├── PlatformOperations.cs
│ │ │ ├── ReactivePage.cs
│ │ │ ├── ReactiveUserControl.cs
│ │ │ ├── RoutedViewHost.cs
│ │ │ ├── ViewModelViewHost.cs
│ │ │ └── VisibilityToBooleanTypeConverter.cs
│ │ ├── DependencyObjectObservableForProperty.cs
│ │ ├── ReactiveUI.Wpf.csproj
│ │ ├── ReactiveWindow.cs
│ │ ├── Registrations.cs
│ │ ├── Rx/
│ │ │ ├── Concurrency/
│ │ │ │ ├── ControlScheduler.cs
│ │ │ │ └── DispatcherScheduler.cs
│ │ │ ├── Internal/
│ │ │ │ └── Constants.cs
│ │ │ └── Linq/
│ │ │ ├── ControlObservable.cs
│ │ │ ├── DispatcherObservable.cs
│ │ │ ├── Observable.Remoting.cs
│ │ │ └── QueryLanguage.Remoting.cs
│ │ ├── Themes/
│ │ │ └── Generic.xaml
│ │ ├── TransitioningContentControl.cs
│ │ └── WpfCommandRebindingCustomizer.cs
│ ├── examples/
│ │ ├── ReactiveUI.Builder.BlazorServer/
│ │ │ ├── Components/
│ │ │ │ ├── App.razor
│ │ │ │ ├── Layout/
│ │ │ │ │ ├── MainLayout.razor
│ │ │ │ │ ├── MainLayout.razor.css
│ │ │ │ │ ├── NavMenu.razor
│ │ │ │ │ ├── NavMenu.razor.css
│ │ │ │ │ ├── ReactiveRouterHost.razor
│ │ │ │ │ ├── ReconnectModal.razor
│ │ │ │ │ ├── ReconnectModal.razor.css
│ │ │ │ │ └── ReconnectModal.razor.js
│ │ │ │ ├── Pages/
│ │ │ │ │ ├── Counter.razor
│ │ │ │ │ ├── Error.razor
│ │ │ │ │ ├── Home.razor
│ │ │ │ │ ├── NotFound.razor
│ │ │ │ │ └── Weather.razor
│ │ │ │ ├── Routes.razor
│ │ │ │ └── _Imports.razor
│ │ │ ├── Models/
│ │ │ │ ├── ChatMessage.cs
│ │ │ │ ├── ChatNetworkMessage.cs
│ │ │ │ ├── ChatRoom.cs
│ │ │ │ ├── ChatState.cs
│ │ │ │ ├── ChatStateChanged.cs
│ │ │ │ └── RoomEventMessage.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties/
│ │ │ │ └── launchSettings.json
│ │ │ ├── ReactiveUI.Builder.BlazorServer.csproj
│ │ │ ├── Services/
│ │ │ │ ├── AppInstance.cs
│ │ │ │ ├── AppLifetimeCoordinator.cs
│ │ │ │ ├── FileJsonSuspensionDriver.cs
│ │ │ │ ├── ReactiveUiAppHostedService.cs
│ │ │ │ └── RoomEventKind.cs
│ │ │ ├── ViewModels/
│ │ │ │ ├── AppBootstrapper.cs
│ │ │ │ ├── ChatRoomViewModel.cs
│ │ │ │ └── LobbyViewModel.cs
│ │ │ ├── Views/
│ │ │ │ ├── ChatRoomView.razor
│ │ │ │ ├── ChatRoomView.razor.cs
│ │ │ │ ├── LobbyView.razor
│ │ │ │ └── LobbyView.razor.cs
│ │ │ ├── appsettings.Development.json
│ │ │ ├── appsettings.json
│ │ │ └── wwwroot/
│ │ │ ├── app.css
│ │ │ └── lib/
│ │ │ └── bootstrap/
│ │ │ └── dist/
│ │ │ ├── css/
│ │ │ │ ├── bootstrap-grid.css
│ │ │ │ ├── bootstrap-grid.rtl.css
│ │ │ │ ├── bootstrap-reboot.css
│ │ │ │ ├── bootstrap-reboot.rtl.css
│ │ │ │ ├── bootstrap-utilities.css
│ │ │ │ ├── bootstrap-utilities.rtl.css
│ │ │ │ ├── bootstrap.css
│ │ │ │ └── bootstrap.rtl.css
│ │ │ └── js/
│ │ │ ├── bootstrap.bundle.js
│ │ │ ├── bootstrap.esm.js
│ │ │ └── bootstrap.js
│ │ └── ReactiveUI.Builder.WpfApp/
│ │ ├── App.xaml
│ │ ├── App.xaml.cs
│ │ ├── AssemblyInfo.cs
│ │ ├── MainWindow.xaml
│ │ ├── MainWindow.xaml.cs
│ │ ├── Models/
│ │ │ ├── ChatMessage.cs
│ │ │ ├── ChatNetworkMessage.cs
│ │ │ ├── ChatRoom.cs
│ │ │ ├── ChatState.cs
│ │ │ ├── ChatStateChanged.cs
│ │ │ └── RoomEventMessage.cs
│ │ ├── ReactiveUI.Builder.WpfApp.csproj
│ │ ├── Services/
│ │ │ ├── AppInstance.cs
│ │ │ ├── AppLifetimeCoordinator.cs
│ │ │ ├── ChatNetworkService.cs
│ │ │ ├── FileJsonSuspensionDriver.cs
│ │ │ └── RoomEventKind.cs
│ │ ├── ViewModels/
│ │ │ ├── AppBootstrapper.cs
│ │ │ ├── ChatRoomViewModel.cs
│ │ │ └── LobbyViewModel.cs
│ │ └── Views/
│ │ ├── ChatRoomView.xaml
│ │ ├── ChatRoomView.xaml.cs
│ │ ├── LobbyView.xaml
│ │ └── LobbyView.xaml.cs
│ ├── global.json
│ ├── reactiveui.slnx
│ ├── stylecop.json
│ ├── testconfig.json
│ └── tests/
│ ├── .editorconfig
│ ├── ReactiveUI.AOTTests/
│ │ ├── AOTCompatibilityTests.cs
│ │ ├── AdvancedAOTTests.cs
│ │ ├── AssemblyHooks.cs
│ │ ├── ComprehensiveAOTMarkupTests.cs
│ │ ├── ComprehensiveAOTTests.cs
│ │ ├── FinalAOTValidationTests.cs
│ │ ├── ReactiveUI.AOT.Tests.csproj
│ │ ├── StringBasedObservationTests.cs
│ │ ├── StringBasedSemanticsTests.cs
│ │ ├── TestActivatableViewModel.cs
│ │ ├── TestReactiveObject.cs
│ │ ├── TestRoutableViewModel.cs
│ │ └── ViewLocatorAOTMappingTests.cs
│ ├── ReactiveUI.Blazor.Tests/
│ │ ├── BlazorReactiveUIBuilderExtensionsTests.cs
│ │ ├── PlatformOperationsTests.cs
│ │ ├── ReactiveComponentBaseTests.cs
│ │ ├── ReactiveInjectableComponentBaseTests.cs
│ │ ├── ReactiveLayoutComponentBaseTests.cs
│ │ ├── ReactiveOwningComponentBaseTests.cs
│ │ └── ReactiveUI.Blazor.Tests.csproj
│ ├── ReactiveUI.Builder.Maui.Tests/
│ │ ├── Activation/
│ │ │ └── ActivationForViewFetcherTests.cs
│ │ ├── AssemblyHooks.cs
│ │ ├── AssemblyInfo.Parallel.cs
│ │ ├── ReactiveUI.Builder.Maui.Tests.csproj
│ │ ├── ReactiveUIBuilderMauiTests.cs
│ │ ├── TestDispatcher.cs
│ │ └── TestDispatcherProvider.cs
│ ├── ReactiveUI.Builder.Tests/
│ │ ├── AssemblyHooks.cs
│ │ ├── AssemblyInfo.Parallel.cs
│ │ ├── Mixins/
│ │ │ ├── BuilderInstanceMixinsHappyPathTests.cs
│ │ │ ├── BuilderInstanceMixinsNullActionTests.cs
│ │ │ ├── BuilderInstanceMixinsNullInstanceTests.cs
│ │ │ ├── BuilderInstanceMixinsTests.cs
│ │ │ ├── BuilderMixinsTests.cs
│ │ │ └── BuilderSchedulerMixinsTests.cs
│ │ ├── Platforms/
│ │ │ ├── Blazor/
│ │ │ │ └── ReactiveUIBuilderBlazorTests.cs
│ │ │ └── Drawing/
│ │ │ └── ReactiveUIBuilderDrawingTests.cs
│ │ ├── ReactiveUI.Builder.Tests.csproj
│ │ ├── ReactiveUIBuilderBlockingTests.cs
│ │ ├── ReactiveUIBuilderConverterTests.cs
│ │ ├── ReactiveUIBuilderCoreTests.cs
│ │ ├── ReactiveUIBuilderRxAppMigrationTests.cs
│ │ └── TestConfiguration.cs
│ ├── ReactiveUI.Maui.Tests/
│ │ ├── ActivationForViewFetcherTest.cs
│ │ ├── ActivationForViewFetcherTests.cs
│ │ ├── AssemblyHooks.cs
│ │ ├── AssemblyInfo.Parallel.cs
│ │ ├── AutoSuspendHelperTest.cs
│ │ ├── BooleanToVisibilityTypeConverterTest.cs
│ │ ├── Builder/
│ │ │ ├── MauiDispatcherSchedulerTest.cs
│ │ │ └── MauiReactiveUIBuilderExtensionsTest.cs
│ │ ├── Internal/
│ │ │ └── MauiReactiveHelpersTest.cs
│ │ ├── MauiReactiveUIBuilderExtensionsTest.cs
│ │ ├── MauiTestExecutor.cs
│ │ ├── PlatformOperationsTest.cs
│ │ ├── ReactiveCarouselViewTests.cs
│ │ ├── ReactiveContentPageTests.cs
│ │ ├── ReactiveContentViewTests.cs
│ │ ├── ReactiveFlyoutPageTests.cs
│ │ ├── ReactiveImageItemViewTests.cs
│ │ ├── ReactiveMasterDetailPageTests.cs
│ │ ├── ReactiveMultiPageTests.cs
│ │ ├── ReactiveNavigationPageTests.cs
│ │ ├── ReactivePageTest.cs
│ │ ├── ReactiveShellContentTest.cs
│ │ ├── ReactiveShellTests.cs
│ │ ├── ReactiveTabbedPageTests.cs
│ │ ├── ReactiveTextItemViewTests.cs
│ │ ├── ReactiveUI.Maui.Tests.csproj
│ │ ├── RoutedViewHostGenericTests.cs
│ │ ├── RoutedViewHostTest.cs
│ │ ├── TestDispatcher.cs
│ │ ├── TestDispatcherProvider.cs
│ │ ├── ViewModelViewHostGenericTests.cs
│ │ └── ViewModelViewHostTest.cs
│ ├── ReactiveUI.NonParallel.Mobile.Tests/
│ │ ├── Platforms/
│ │ │ ├── AndroidX/
│ │ │ │ └── ReactiveUIBuilderAndroidXTests.cs
│ │ │ ├── android/
│ │ │ │ ├── MainActivity.cs
│ │ │ │ ├── MainActivity.cs.txt
│ │ │ │ └── PropertyBindingTestViews.cs
│ │ │ └── cocoa/
│ │ │ ├── AppDelegate.cs
│ │ │ ├── AppDelegate.cs.txt
│ │ │ ├── Entitlements.plist
│ │ │ ├── IndexNormalizerTest.cs
│ │ │ ├── Info.plist
│ │ │ ├── KVOBindingTests.cs
│ │ │ ├── Main.cs
│ │ │ ├── PropertyBindingTestViews.cs
│ │ │ └── UnitTestAppDelegate.cs
│ │ ├── README.md
│ │ └── ReactiveUI.NonParallel.Mobile.Tests.csproj
│ ├── ReactiveUI.Splat.Tests/
│ │ ├── AssemblyHooks.cs
│ │ ├── ReactiveUI.Splat.Tests.csproj
│ │ └── SplatAdapterTests.cs
│ ├── ReactiveUI.Test.Utilities/
│ │ ├── ApiExtensions.cs
│ │ ├── AppBuilder/
│ │ │ ├── AppBuilderTestExecutor.cs
│ │ │ ├── AppBuilderTestHelper.cs
│ │ │ └── BaseAppBuilderTestExecutor.cs
│ │ ├── Combined/
│ │ │ └── WithSchedulerAndMessageBusExecutor.cs
│ │ ├── Logging/
│ │ │ ├── LoggingRegistrationExecutor.cs
│ │ │ ├── LoggingRegistrationExecutorExtensions.cs
│ │ │ ├── TestLogManager.cs
│ │ │ └── TestLogger.cs
│ │ ├── MessageBus/
│ │ │ ├── MessageBusTestContextExtensions.cs
│ │ │ └── WithMessageBusExecutor.cs
│ │ ├── ReactiveUI.Test.Utilities.csproj
│ │ ├── Schedulers/
│ │ │ ├── TestContextExtensions.cs
│ │ │ ├── VirtualTimeScheduler.cs
│ │ │ ├── WithSchedulerExecutor.cs
│ │ │ └── WithVirtualTimeSchedulerExecutor.cs
│ │ ├── Sequencing/
│ │ │ └── TestSequencer.cs
│ │ └── SuspensionHost/
│ │ └── SuspensionHostTestExecutor.cs
│ ├── ReactiveUI.TestGuiMocks/
│ │ ├── CommonGuiMocks/
│ │ │ ├── Mocks/
│ │ │ │ ├── RaceConditionFixture.cs
│ │ │ │ ├── RaceConditionNameOfFixture.cs
│ │ │ │ └── TestScreen.cs
│ │ │ └── ProductionMode.cs
│ │ └── ReactiveUI.TestGuiMocks.csproj
│ ├── ReactiveUI.Testing.Tests/
│ │ ├── API/
│ │ │ ├── ApiApprovalTests.Testing.DotNet10_0.verified.txt
│ │ │ ├── ApiApprovalTests.Testing.DotNet8_0.verified.txt
│ │ │ ├── ApiApprovalTests.Testing.DotNet9_0.verified.txt
│ │ │ └── ApiApprovalTests.cs
│ │ ├── AppBuilderTestBaseTests.cs
│ │ ├── AssemblyHooks.cs
│ │ ├── MessageBusExtensionsTests.cs
│ │ ├── ReactiveUI.Testing.Tests.csproj
│ │ ├── RxTestTests.cs
│ │ ├── SchedulerExtensionTests.cs
│ │ ├── TestConfiguration.cs
│ │ ├── TestFixture.cs
│ │ ├── TestFixtureBuilder.cs
│ │ ├── TestFixtureBuilderExtensionTests.cs
│ │ └── TestSequencerTests.cs
│ ├── ReactiveUI.Tests/
│ │ ├── API/
│ │ │ ├── ApiApprovalTests.ReactiveUI.DotNet10_0.verified.txt
│ │ │ ├── ApiApprovalTests.ReactiveUI.DotNet6_0.verified.txt
│ │ │ ├── ApiApprovalTests.ReactiveUI.DotNet7_0.verified.txt
│ │ │ ├── ApiApprovalTests.ReactiveUI.DotNet8_0.verified.txt
│ │ │ ├── ApiApprovalTests.ReactiveUI.DotNet9_0.verified.txt
│ │ │ ├── ApiApprovalTests.ReactiveUI.Net4_7.verified.txt
│ │ │ ├── ApiApprovalTests.Testing.DotNet10_0.verified.txt
│ │ │ ├── ApiApprovalTests.Testing.DotNet6_0.verified.txt
│ │ │ ├── ApiApprovalTests.Testing.DotNet7_0.verified.txt
│ │ │ ├── ApiApprovalTests.Testing.DotNet8_0.verified.txt
│ │ │ ├── ApiApprovalTests.Testing.DotNet9_0.verified.txt
│ │ │ ├── ApiApprovalTests.Testing.Net4_7.verified.txt
│ │ │ └── ApiApprovalTests.cs
│ │ ├── Activation/
│ │ │ ├── ActivatingView.cs
│ │ │ ├── ActivatingViewFetcher.cs
│ │ │ ├── ActivatingViewModel.cs
│ │ │ ├── ActivatingViewModelTests.cs
│ │ │ ├── ActivatingViewTests.cs
│ │ │ ├── CanActivateViewFetcherTests.cs
│ │ │ ├── DerivedActivatingViewModel.cs
│ │ │ └── ViewModelActivatorTests.cs
│ │ ├── AssemblyHooks.cs
│ │ ├── AutoPersist/
│ │ │ ├── AutoPersistCollectionTest.cs
│ │ │ └── AutoPersistHelperTest.cs
│ │ ├── BindingTypeConvertersUnitTests.cs
│ │ ├── Bindings/
│ │ │ ├── BindingTypeConverterTests.cs
│ │ │ ├── CommandBindings/
│ │ │ │ ├── CreatesCommandBindingViaCommandParameterTests.cs
│ │ │ │ └── CreatesCommandBindingViaEventTests.cs
│ │ │ ├── Converters/
│ │ │ │ ├── ConverterAffinityTests.cs
│ │ │ │ ├── ConverterMigrationHelperTests.cs
│ │ │ │ ├── ConverterRegistryTests.cs
│ │ │ │ ├── ConverterServiceIntegrationTests.cs
│ │ │ │ └── PlatformConverterAffinityTests.cs
│ │ │ ├── Property/
│ │ │ │ ├── Mocks/
│ │ │ │ │ ├── MockBindingConverterResolver.cs
│ │ │ │ │ ├── MockBindingHookEvaluator.cs
│ │ │ │ │ └── MockPropertyBindingExpressionCompiler.cs
│ │ │ │ └── Unit/
│ │ │ │ ├── BindingConverterResolverTests.cs
│ │ │ │ ├── BindingHookEvaluatorTests.cs
│ │ │ │ └── PropertyBindingExpressionCompilerTests.cs
│ │ │ ├── PropertyBindings/
│ │ │ │ └── PropertyBindingMixinsTests.cs
│ │ │ └── TypeConverters/
│ │ │ ├── BooleanToStringTypeConverterTests.cs
│ │ │ ├── ByteToNullableByteTypeConverterTests.cs
│ │ │ ├── ByteToStringTypeConverterTests.cs
│ │ │ ├── DateOnlyToStringTypeConverterTests.cs
│ │ │ ├── DateTimeOffsetToStringTypeConverterTests.cs
│ │ │ ├── DateTimeToStringTypeConverterTests.cs
│ │ │ ├── DecimalToNullableDecimalTypeConverterTests.cs
│ │ │ ├── DecimalToStringTypeConverterTests.cs
│ │ │ ├── DoubleToNullableDoubleTypeConverterTests.cs
│ │ │ ├── DoubleToStringTypeConverterTests.cs
│ │ │ ├── EqualityTypeConverterTests.cs
│ │ │ ├── GuidToStringTypeConverterTests.cs
│ │ │ ├── IntegerToNullableIntegerTypeConverterTests.cs
│ │ │ ├── IntegerToStringTypeConverterTests.cs
│ │ │ ├── LongToNullableLongTypeConverterTests.cs
│ │ │ ├── LongToStringTypeConverterTests.cs
│ │ │ ├── NullableBooleanToStringTypeConverterTests.cs
│ │ │ ├── NullableByteToByteTypeConverterTests.cs
│ │ │ ├── NullableByteToStringTypeConverterTests.cs
│ │ │ ├── NullableDateOnlyToStringTypeConverterTests.cs
│ │ │ ├── NullableDateTimeOffsetToStringTypeConverterTests.cs
│ │ │ ├── NullableDateTimeToStringTypeConverterTests.cs
│ │ │ ├── NullableDecimalToDecimalTypeConverterTests.cs
│ │ │ ├── NullableDecimalToStringTypeConverterTests.cs
│ │ │ ├── NullableDoubleToDoubleTypeConverterTests.cs
│ │ │ ├── NullableDoubleToStringTypeConverterTests.cs
│ │ │ ├── NullableGuidToStringTypeConverterTests.cs
│ │ │ ├── NullableIntegerToIntegerTypeConverterTests.cs
│ │ │ ├── NullableIntegerToStringTypeConverterTests.cs
│ │ │ ├── NullableLongToLongTypeConverterTests.cs
│ │ │ ├── NullableLongToStringTypeConverterTests.cs
│ │ │ ├── NullableShortToShortTypeConverterTests.cs
│ │ │ ├── NullableShortToStringTypeConverterTests.cs
│ │ │ ├── NullableSingleToSingleTypeConverterTests.cs
│ │ │ ├── NullableSingleToStringTypeConverterTests.cs
│ │ │ ├── NullableTimeOnlyToStringTypeConverterTests.cs
│ │ │ ├── NullableTimeSpanToStringTypeConverterTests.cs
│ │ │ ├── ShortToNullableShortTypeConverterTests.cs
│ │ │ ├── ShortToStringTypeConverterTests.cs
│ │ │ ├── SingleToNullableSingleTypeConverterTests.cs
│ │ │ ├── SingleToStringTypeConverterTests.cs
│ │ │ ├── StringConverterTests.cs
│ │ │ ├── StringToBooleanTypeConverterTests.cs
│ │ │ ├── StringToByteTypeConverterTests.cs
│ │ │ ├── StringToDateOnlyTypeConverterTests.cs
│ │ │ ├── StringToDateTimeOffsetTypeConverterTests.cs
│ │ │ ├── StringToDateTimeTypeConverterTests.cs
│ │ │ ├── StringToDecimalTypeConverterTests.cs
│ │ │ ├── StringToDoubleTypeConverterTests.cs
│ │ │ ├── StringToGuidTypeConverterTests.cs
│ │ │ ├── StringToIntegerTypeConverterTests.cs
│ │ │ ├── StringToLongTypeConverterTests.cs
│ │ │ ├── StringToNullableBooleanTypeConverterTests.cs
│ │ │ ├── StringToNullableByteTypeConverterTests.cs
│ │ │ ├── StringToNullableDateOnlyTypeConverterTests.cs
│ │ │ ├── StringToNullableDateTimeOffsetTypeConverterTests.cs
│ │ │ ├── StringToNullableDateTimeTypeConverterTests.cs
│ │ │ ├── StringToNullableDecimalTypeConverterTests.cs
│ │ │ ├── StringToNullableDoubleTypeConverterTests.cs
│ │ │ ├── StringToNullableGuidTypeConverterTests.cs
│ │ │ ├── StringToNullableIntegerTypeConverterTests.cs
│ │ │ ├── StringToNullableLongTypeConverterTests.cs
│ │ │ ├── StringToNullableShortTypeConverterTests.cs
│ │ │ ├── StringToNullableSingleTypeConverterTests.cs
│ │ │ ├── StringToNullableTimeOnlyTypeConverterTests.cs
│ │ │ ├── StringToNullableTimeSpanTypeConverterTests.cs
│ │ │ ├── StringToShortTypeConverterTests.cs
│ │ │ ├── StringToSingleTypeConverterTests.cs
│ │ │ ├── StringToTimeOnlyTypeConverterTests.cs
│ │ │ ├── StringToTimeSpanTypeConverterTests.cs
│ │ │ ├── StringToUriTypeConverterTests.cs
│ │ │ ├── TimeOnlyToStringTypeConverterTests.cs
│ │ │ ├── TimeSpanToStringTypeConverterTests.cs
│ │ │ └── UriToStringTypeConverterTests.cs
│ │ ├── ChainedComparerTest.cs
│ │ ├── ChangeSetMixinTest.cs
│ │ ├── CommandBinding/
│ │ │ └── CommandBindingTests.cs
│ │ ├── Commands/
│ │ │ ├── CombinedReactiveCommandTest.cs
│ │ │ ├── CreatesCommandBindingTests.cs
│ │ │ ├── Mocks/
│ │ │ │ ├── FakeCommand.cs
│ │ │ │ ├── ICommandHolder.cs
│ │ │ │ └── ReactiveCommandHolder.cs
│ │ │ └── ReactiveCommandTest.cs
│ │ ├── Comparers/
│ │ │ └── OrderedComparerTests.cs
│ │ ├── Core/
│ │ │ ├── AttributeTests.cs
│ │ │ ├── DataStructureTests.cs
│ │ │ ├── EnumTests.cs
│ │ │ ├── ExceptionTests.cs
│ │ │ ├── InternalUtilitiesTests.cs
│ │ │ ├── ObservablesTests.cs
│ │ │ └── SingletonTests.cs
│ │ ├── Expression/
│ │ │ ├── CompiledPropertyChainTests.cs
│ │ │ ├── ExpressionMixinsTests.cs
│ │ │ ├── ExpressionRewriterTests.cs
│ │ │ ├── ReflectionAdvancedTests.cs
│ │ │ └── ReflectionTests.cs
│ │ ├── IROObservableForPropertyTest.cs
│ │ ├── Infrastructure/
│ │ │ └── RxAppTestExtensions.cs
│ │ ├── InteractionBinding/
│ │ │ └── InteractionBinderImplementationTests.cs
│ │ ├── InteractionsTest.cs
│ │ ├── Locator/
│ │ │ ├── DefaultViewLocatorTests.cs
│ │ │ ├── ViewLocatorTests.cs
│ │ │ └── ViewMappingBuilderTests.cs
│ │ ├── MessageBus/
│ │ │ └── MessageBusTest.cs
│ │ ├── Mixins/
│ │ │ ├── MutableDependencyResolverAOTExtensionsTests.cs
│ │ │ ├── MutableDependencyResolverExtensionsTests.cs
│ │ │ ├── ObservableLoggingMixinTests.cs
│ │ │ └── SwitchSubscribeMixinTests.cs
│ │ ├── Mocks/
│ │ │ ├── AnotherViewModel.cs
│ │ │ ├── CommandBindViewModel.cs
│ │ │ ├── ExampleViewModel.cs
│ │ │ ├── ExampleWindowViewModel.cs
│ │ │ ├── FakeCollectionModel.cs
│ │ │ ├── FakeCollectionViewModel.cs
│ │ │ ├── FakeNestedViewModel.cs
│ │ │ ├── FakeViewModel.cs
│ │ │ ├── Foo.cs
│ │ │ ├── FooViewModel.cs
│ │ │ ├── InteractionAncestorView.cs
│ │ │ ├── InteractionAncestorViewModel.cs
│ │ │ ├── InteractionBindView.cs
│ │ │ ├── InteractionBindViewModel.cs
│ │ │ ├── NeverUsedViewModel.cs
│ │ │ ├── PropertyBindModel.cs
│ │ │ ├── SingleInstanceExampleViewModel.cs
│ │ │ └── ViewModelWithWeirdName.cs
│ │ ├── ObservableAsPropertyHelper/
│ │ │ ├── Mocks/
│ │ │ │ └── OAPHIndexerTestFixture.cs
│ │ │ └── ObservableAsPropertyHelperTest.cs
│ │ ├── ObservableForProperty/
│ │ │ └── OAPHCreationHelperMixinTest.cs
│ │ ├── ObservableMixinsTest.cs
│ │ ├── ObservedChanged/
│ │ │ ├── Mocks/
│ │ │ │ └── NewGameViewModel.cs
│ │ │ ├── NewGameViewModelTests.cs
│ │ │ └── ObservedChangedMixinTest.cs
│ │ ├── OrderedComparerTest.cs
│ │ ├── Properties/
│ │ │ ├── Resources.Designer.cs
│ │ │ └── Resources.resx
│ │ ├── PropertyBinderImplementationAdvancedTests.cs
│ │ ├── PropertyBinderImplementationTests.cs
│ │ ├── ReactiveObjects/
│ │ │ ├── Mocks/
│ │ │ │ ├── AccountService.cs
│ │ │ │ ├── AccountUser.cs
│ │ │ │ ├── OaphNameOfTestFixture.cs
│ │ │ │ ├── OaphTestFixture.cs
│ │ │ │ ├── Project.cs
│ │ │ │ ├── ProjectService.cs
│ │ │ │ ├── TestFixture.cs
│ │ │ │ └── WhenAnyTestFixture.cs
│ │ │ ├── ReactiveObjectTests.cs
│ │ │ └── ReactiveRecordTests.cs
│ │ ├── ReactiveProperties/
│ │ │ ├── Mocks/
│ │ │ │ ├── ReactivePropertyVM.cs
│ │ │ │ └── SubcribeTestViewModel.cs
│ │ │ ├── ReactivePropertyBasicTests.cs
│ │ │ ├── ReactivePropertyTest.cs
│ │ │ └── TestEnum.cs
│ │ ├── ReactiveUI.Tests.csproj
│ │ ├── ReflectionTest.cs
│ │ ├── Registration/
│ │ │ └── DependencyResolverRegistrarTests.cs
│ │ ├── Resolvers/
│ │ │ ├── INPCObservableForPropertyTests.cs
│ │ │ └── PocoObservableForPropertyTests.cs
│ │ ├── RxAppBuilderTest.cs
│ │ ├── RxSchedulersTest.cs
│ │ ├── ScheduledSubjectTest.cs
│ │ ├── SchedulerConsumptionTest.cs
│ │ ├── Suspension/
│ │ │ ├── DummyAppState.cs
│ │ │ ├── DummySuspensionDriverTests.cs
│ │ │ ├── SuspensionHostExtensionsAotTests.cs
│ │ │ ├── SuspensionHostGenericTests.cs
│ │ │ └── SuspensionHostTests.cs
│ │ ├── SuspensionHostExtensionsTests.cs
│ │ ├── UnhandledInteractionExceptionTest.cs
│ │ ├── Utilities/
│ │ │ ├── CompatMixins.cs
│ │ │ ├── CompatMixinsTests.cs
│ │ │ ├── CountingTestScheduler.cs
│ │ │ ├── DisposableMixinsTests.cs
│ │ │ ├── EnumerableTestMixin.cs
│ │ │ └── JsonHelper.cs
│ │ ├── VariadicTemplatesTest.cs
│ │ ├── WaitForDispatcherSchedulerTests.cs
│ │ ├── WhenAny/
│ │ │ ├── Mockups/
│ │ │ │ ├── HostTestFixture.cs
│ │ │ │ ├── NonObservableTestFixture.cs
│ │ │ │ ├── NonReactiveINPCObject.cs
│ │ │ │ ├── ObjChain1.cs
│ │ │ │ ├── ObjChain2.cs
│ │ │ │ ├── ObjChain3.cs
│ │ │ │ └── OwnerClass.cs
│ │ │ ├── ReactiveNotifyPropertyChangedMixinTest.cs
│ │ │ ├── TestWhenAnyObsViewModel.cs
│ │ │ └── WhenAnyObservableTests.cs
│ │ ├── WhenAnyDynamicTest.cs
│ │ └── app.config
│ ├── ReactiveUI.WinForms.Tests/
│ │ ├── API/
│ │ │ ├── ApiApprovalTests.Winforms.DotNet10_0.verified.txt
│ │ │ ├── ApiApprovalTests.Winforms.DotNet8_0.verified.txt
│ │ │ ├── ApiApprovalTests.Winforms.DotNet9_0.verified.txt
│ │ │ └── ApiApprovalTests.cs
│ │ ├── AssemblyHooks.cs
│ │ ├── AssemblyInfo.Parallel.cs
│ │ ├── ReactiveUI.WinForms.Tests.csproj
│ │ ├── ReactiveUIBuilderWinFormsTests.cs
│ │ └── winforms/
│ │ ├── ActivationTests.cs
│ │ ├── CanActivateViewFetcherTests.cs
│ │ ├── CommandBindingImplementationTests.cs
│ │ ├── CommandBindingTests.cs
│ │ ├── ContentControlBindingHookTests.cs
│ │ ├── CreatesWinformsCommandBindingTests.cs
│ │ ├── DefaultPropertyBindingTests.cs
│ │ ├── Mocks/
│ │ │ ├── AnotherView.cs
│ │ │ ├── ContractExampleView.cs
│ │ │ ├── CustomClickableComponent.cs
│ │ │ ├── CustomClickableComponentWithEnabled.cs
│ │ │ ├── CustomClickableControl.cs
│ │ │ ├── CustomEventArgs.cs
│ │ │ ├── EnabledComponent.cs
│ │ │ ├── ExampleView.cs
│ │ │ ├── ExampleWindowView.cs
│ │ │ ├── FakeView.cs
│ │ │ ├── FakeViewLocator.cs
│ │ │ ├── FakeViewModel.cs
│ │ │ ├── FakeWinformViewModel.cs
│ │ │ ├── FakeWinformsView.cs
│ │ │ ├── GenericEventControl.cs
│ │ │ ├── NeverUsedView.cs
│ │ │ ├── NoClickEventComponent.cs
│ │ │ ├── SingleInstanceExampleView.cs
│ │ │ ├── SingleInstanceWithContractExampleView.cs
│ │ │ ├── TestControl.cs
│ │ │ ├── TestForm.cs
│ │ │ ├── TestForm.resx
│ │ │ ├── TestFormNotCanActivate.cs
│ │ │ ├── TestFormNotCanActivate.resx
│ │ │ ├── ThirdPartyControl.cs
│ │ │ ├── ViewWithoutMatchingName.cs
│ │ │ ├── WinformCommandBindView.cs
│ │ │ └── WinformCommandBindViewModel.cs
│ │ ├── ObservableCollectionChangedToListChangedTransformerTest.cs
│ │ ├── PanelSetMethodBindingConverterTests.cs
│ │ ├── PlatformOperationsTest.cs
│ │ ├── ReactiveUserControlNonGenericTest.cs
│ │ ├── ReactiveUserControlTest.cs
│ │ ├── TableContentSetMethodBindingConverterTests.cs
│ │ ├── WinFormsReactiveUIBuilderExtensionsTest.cs
│ │ ├── WinFormsRoutedViewHostTests.cs
│ │ ├── WinFormsTestExecutor.cs
│ │ ├── WinFormsViewDependencyResolverTests.cs
│ │ ├── WinFormsViewModelViewHostTests.cs
│ │ ├── WinformsCreatesObservableForPropertyTests.cs
│ │ └── WinformsViewsTestExecutor.cs
│ └── ReactiveUI.Wpf.Tests/
│ ├── API/
│ │ ├── ApiApprovalTests.Blend.DotNet10_0.verified.txt
│ │ ├── ApiApprovalTests.Blend.DotNet8_0.verified.txt
│ │ ├── ApiApprovalTests.Blend.DotNet9_0.verified.txt
│ │ ├── ApiApprovalTests.Wpf.DotNet10_0.verified.txt
│ │ ├── ApiApprovalTests.Wpf.DotNet8_0.verified.txt
│ │ ├── ApiApprovalTests.Wpf.DotNet9_0.verified.txt
│ │ └── ApiApprovalTests.cs
│ ├── AssemblyHooks.cs
│ ├── AssemblyInfo.Parallel.cs
│ ├── CommonGui/
│ │ └── ObservableAsPropertyHelperModeTests.cs
│ ├── ReactiveObjects/
│ │ └── Mocks/
│ │ └── TestFixture.cs
│ ├── ReactiveUI.Wpf.Tests.csproj
│ ├── Utilities/
│ │ └── EnumerableTestMixin.cs
│ ├── WhenAny/
│ │ └── Mockups/
│ │ ├── HostTestFixture.cs
│ │ ├── NonObservableTestFixture.cs
│ │ └── OwnerClass.cs
│ ├── Wpf/
│ │ ├── ActivationForViewFetcherTest.cs
│ │ ├── AutoSuspendHelperTest.cs
│ │ ├── BooleanToVisibilityTypeConverterTest.cs
│ │ ├── DefaultViewLocatorTests.cs
│ │ ├── FollowObservableStateBehaviorTests.cs
│ │ ├── Mocks/
│ │ │ ├── CanExecuteMock/
│ │ │ │ ├── AlwaysFalseModeDetector.cs
│ │ │ │ ├── CanExecuteExecutingView.xaml
│ │ │ │ ├── CanExecuteExecutingView.xaml.cs
│ │ │ │ └── LiveModeDetector.cs
│ │ │ ├── CommandBindingView.cs
│ │ │ ├── CommandBindingViewModel.cs
│ │ │ ├── ExampleWindowView.cs
│ │ │ ├── FakeXamlCommandBindingView.cs
│ │ │ ├── TransitionMock/
│ │ │ │ ├── FirstView.xaml
│ │ │ │ ├── FirstView.xaml.cs
│ │ │ │ ├── SecondView.xaml
│ │ │ │ ├── SecondView.xaml.cs
│ │ │ │ ├── TCMockWindow.xaml
│ │ │ │ ├── TCMockWindow.xaml.cs
│ │ │ │ └── TCMockWindowViewModel.cs
│ │ │ ├── ViewModelViewHosts/
│ │ │ │ └── FakeViewWithContract.cs
│ │ │ └── WpfTestUserControl.cs
│ │ ├── ObservableTriggerTests.cs
│ │ ├── PlatformOperationsTest.cs
│ │ ├── ReactivePageTest.cs
│ │ ├── ReactivePropertyMixinsTests.cs
│ │ ├── ReactiveUIBuilderWpfTests.cs
│ │ ├── ReactiveUserControlTest.cs
│ │ ├── ReactiveWindowTest.cs
│ │ ├── TransitioningContentControlTest.cs
│ │ ├── ValidationBindingMixinsTest.cs
│ │ ├── ValidationBindingWpfTest.cs
│ │ ├── VisibilityToBooleanTypeConverterTests.cs
│ │ ├── WpfActivationForViewFetcherTest.cs
│ │ ├── WpfActiveContentTests.cs
│ │ ├── WpfCommandBindingImplementationTests.cs
│ │ ├── WpfReactiveUIBuilderExtensionsTest.cs
│ │ ├── WpfTestExecutor.cs
│ │ └── WpfViewDependencyResolverTests.cs
│ └── Xaml/
│ ├── Api/
│ │ ├── XamlApiApprovalTests.Blend.DotNet10_0.verified.txt
│ │ ├── XamlApiApprovalTests.Blend.DotNet8_0.verified.txt
│ │ ├── XamlApiApprovalTests.Blend.DotNet9_0.verified.txt
│ │ ├── XamlApiApprovalTests.Blend.Net4_7.verified.txt
│ │ └── XamlApiApprovalTests.cs
│ ├── CommandBindingImplementationTests.cs
│ ├── DependencyObjectObservableForPropertyTest.cs
│ ├── MockWindow.xaml
│ ├── MockWindow.xaml.cs
│ ├── Mocks/
│ │ ├── AnotherView.cs
│ │ ├── AnotherViewModel.cs
│ │ ├── CommandBindView.cs
│ │ ├── CommandBindViewModel.cs
│ │ ├── CustomClickButton.cs
│ │ ├── DepObjFixture.cs
│ │ ├── DerivedDepObjFixture.cs
│ │ ├── ExampleView.cs
│ │ ├── ExampleViewContract.cs
│ │ ├── ExampleViewModel.cs
│ │ ├── ExampleWindowViewModel.cs
│ │ ├── FakeNestedViewModel.cs
│ │ ├── FakeView.cs
│ │ ├── FakeViewModel.cs
│ │ ├── HostTestView.cs
│ │ ├── IRoutableFooViewModel.cs
│ │ ├── MockBindListItemViewModel.cs
│ │ ├── MockBindListView.cs
│ │ ├── MockBindListViewModel.cs
│ │ ├── PropertyBindFakeControl.cs
│ │ ├── PropertyBindModel.cs
│ │ ├── PropertyBindView.cs
│ │ ├── PropertyBindViewModel.cs
│ │ ├── ReactiveObjectCommandBindView.cs
│ │ ├── RoutableFooCustomView.cs
│ │ ├── RoutableFooView.cs
│ │ ├── TestView.cs
│ │ ├── TestViewModel.cs
│ │ ├── View1.xaml
│ │ ├── View1.xaml.cs
│ │ ├── View2.xaml
│ │ ├── View2.xaml.cs
│ │ ├── ViewModelWithWeirdName.cs
│ │ └── ViewWithWeirdName.cs
│ ├── PropertyBindingTest.cs
│ ├── RoutableFooViewModel.cs
│ ├── RoutableViewModelMixinTests.cs
│ ├── RoutedViewHostTests.cs
│ ├── RoutingStateTests.cs
│ ├── RxAppDependencyObjectTests.cs
│ ├── Utilities/
│ │ └── DispatcherUtilities.cs
│ ├── ViewModelViewHostTests.cs
│ ├── WhenAnyThroughDependencyObjectTests.cs
│ ├── WpfViewResolverTestExecutor.cs
│ ├── XamlViewCommandTests.cs
│ └── XamlViewDependencyResolverTests.cs
└── version.json
================================================
FILE CONTENTS
================================================
================================================
FILE: .editorconfig
================================================
# editorconfig.org
# top-most EditorConfig file
root = true
#############################################
# Default settings
#############################################
[*]
insert_final_newline = true
indent_style = space
indent_size = 4
[project.json]
indent_size = 2
#############################################
# C# Code Style Settings
#############################################
[*.cs]
###################
# New line preferences
###################
csharp_new_line_before_open_brace = all
csharp_new_line_before_else = true
csharp_new_line_before_catch = true
csharp_new_line_before_finally = true
csharp_new_line_before_members_in_object_initializers = true
csharp_new_line_before_members_in_anonymous_types = true
csharp_new_line_between_query_expression_clauses = true
###################
# Indentation preferences
###################
csharp_indent_block_contents = true
csharp_indent_braces = false
csharp_indent_case_contents = true
csharp_indent_case_contents_when_block = true
csharp_indent_switch_labels = true
csharp_indent_labels = one_less_than_current
###################
# Modifier preferences
###################
csharp_preferred_modifier_order = public, private, protected, internal, static, extern, new, virtual, abstract, sealed, override, readonly, unsafe, volatile, async:suggestion
###################
# 'this.' qualification
###################
dotnet_style_qualification_for_field = false:suggestion
dotnet_style_qualification_for_property = false:suggestion
dotnet_style_qualification_for_method = false:suggestion
dotnet_style_qualification_for_event = false:suggestion
###################
# 'var' preferences
###################
csharp_style_var_for_built_in_types = true:suggestion
csharp_style_var_when_type_is_apparent = true:suggestion
csharp_style_var_elsewhere = true:suggestion
###################
# Predefined type preferences
###################
dotnet_style_predefined_type_for_locals_parameters_members = true:suggestion
dotnet_style_predefined_type_for_member_access = true:suggestion
###################
# Naming conventions
###################
# Constant fields should be PascalCase
dotnet_naming_rule.constant_fields_should_be_pascal_case.severity = suggestion
dotnet_naming_rule.constant_fields_should_be_pascal_case.symbols = constant_fields
dotnet_naming_rule.constant_fields_should_be_pascal_case.style = pascal_case_style
dotnet_naming_symbols.constant_fields.applicable_kinds = field
dotnet_naming_symbols.constant_fields.required_modifiers = const
dotnet_naming_style.pascal_case_style.capitalization = pascal_case
# Static fields should have s_ prefix
dotnet_naming_rule.static_fields_should_have_prefix.severity = suggestion
dotnet_naming_rule.static_fields_should_have_prefix.symbols = static_fields
dotnet_naming_rule.static_fields_should_have_prefix.style = static_prefix_style
dotnet_naming_symbols.static_fields.applicable_kinds = field
dotnet_naming_symbols.static_fields.required_modifiers = static
dotnet_naming_symbols.static_fields.applicable_accessibilities = private, internal, private_protected
dotnet_naming_style.static_prefix_style.required_prefix = s_
dotnet_naming_style.static_prefix_style.capitalization = camel_case
# Internal and private fields should be _camelCase
dotnet_naming_rule.camel_case_for_private_internal_fields.severity = suggestion
dotnet_naming_rule.camel_case_for_private_internal_fields.symbols = private_internal_fields
dotnet_naming_rule.camel_case_for_private_internal_fields.style = camel_case_underscore_style
dotnet_naming_symbols.private_internal_fields.applicable_kinds = field
dotnet_naming_symbols.private_internal_fields.applicable_accessibilities = private, internal
dotnet_naming_style.camel_case_underscore_style.required_prefix = _
dotnet_naming_style.camel_case_underscore_style.capitalization = camel_case
###################
# Code style defaults
###################
csharp_using_directive_placement = outside_namespace:suggestion
dotnet_sort_system_directives_first = true
csharp_prefer_braces = true:silent
csharp_preserve_single_line_blocks = true:none
csharp_preserve_single_line_statements = false:none
csharp_prefer_static_local_function = true:suggestion
csharp_prefer_simple_using_statement = false:none
csharp_style_prefer_switch_expression = true:suggestion
###################
# Code quality
###################
dotnet_style_readonly_field = true:suggestion
dotnet_code_quality_unused_parameters = non_public:suggestion
###################
# Expression-level preferences
###################
dotnet_style_object_initializer = true:suggestion
dotnet_style_collection_initializer = true:suggestion
dotnet_style_explicit_tuple_names = true:suggestion
dotnet_style_coalesce_expression = true:suggestion
dotnet_style_null_propagation = true:suggestion
dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion
dotnet_style_prefer_inferred_tuple_names = true:suggestion
dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion
dotnet_style_prefer_auto_properties = true:suggestion
dotnet_style_prefer_conditional_expression_over_assignment = true:silent
dotnet_style_prefer_conditional_expression_over_return = true:silent
csharp_prefer_simple_default_expression = true:suggestion
###################
# Expression-bodied members
###################
csharp_style_expression_bodied_methods = true:suggestion
csharp_style_expression_bodied_constructors = true:suggestion
csharp_style_expression_bodied_operators = true:suggestion
csharp_style_expression_bodied_properties = true:suggestion
csharp_style_expression_bodied_indexers = true:suggestion
csharp_style_expression_bodied_accessors = true:suggestion
csharp_style_expression_bodied_lambdas = true:suggestion
csharp_style_expression_bodied_local_functions = true:suggestion
###################
# Pattern matching
###################
csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion
csharp_style_pattern_matching_over_as_with_null_check = true:suggestion
csharp_style_inlined_variable_declaration = true:suggestion
###################
# Null checking preferences
###################
csharp_style_throw_expression = true:suggestion
csharp_style_conditional_delegate_call = true:suggestion
###################
# Other features
###################
csharp_style_prefer_index_operator = false:none
csharp_style_prefer_range_operator = false:none
csharp_style_pattern_local_over_anonymous_function = false:none
###################
# Space preferences
###################
csharp_space_after_cast = false
csharp_space_after_colon_in_inheritance_clause = true
csharp_space_after_comma = true
csharp_space_after_dot = false
csharp_space_after_keywords_in_control_flow_statements = true
csharp_space_after_semicolon_in_for_statement = true
csharp_space_around_binary_operators = before_and_after
csharp_space_around_declaration_statements = do_not_ignore
csharp_space_before_colon_in_inheritance_clause = true
csharp_space_before_comma = false
csharp_space_before_dot = false
csharp_space_before_open_square_brackets = false
csharp_space_before_semicolon_in_for_statement = false
csharp_space_between_empty_square_brackets = false
csharp_space_between_method_call_empty_parameter_list_parentheses = false
csharp_space_between_method_call_name_and_opening_parenthesis = false
csharp_space_between_method_call_parameter_list_parentheses = false
csharp_space_between_method_declaration_empty_parameter_list_parentheses = false
csharp_space_between_method_declaration_name_and_open_parenthesis = false
csharp_space_between_method_declaration_parameter_list_parentheses = false
csharp_space_between_parentheses = false
csharp_space_between_square_brackets = false
#############################################
# Code Analyzers
#############################################
###################
# Custom Analyzers
###################
dotnet_diagnostic.AvoidAsyncVoid.severity = suggestion
###################
# Microsoft .NET Analyzers (CA) - Design Rules
###################
dotnet_diagnostic.CA1000.severity = none # Do not declare static members on generic types
dotnet_diagnostic.CA1001.severity = error # Types that own disposable fields should be disposable
dotnet_diagnostic.CA1016.severity = error # Mark assemblies with AssemblyVersionAttribute
dotnet_diagnostic.CA1027.severity = error # Mark enums with FlagsAttribute
dotnet_diagnostic.CA1030.severity = none # Use events where appropriate
dotnet_diagnostic.CA1031.severity = none # Do not catch general exception types
dotnet_diagnostic.CA1033.severity = none # Interface methods should be callable by child types
dotnet_diagnostic.CA1036.severity = none # Override methods on comparable types
dotnet_diagnostic.CA1056.severity = suggestion # URI properties should not be strings
dotnet_diagnostic.CA1060.severity = error # Move P/Invokes to NativeMethods class
dotnet_diagnostic.CA1061.severity = error # Do not hide base class methods
dotnet_diagnostic.CA1062.severity = error # Validate arguments of public methods
dotnet_diagnostic.CA1063.severity = error # Implement IDisposable correctly
dotnet_diagnostic.CA1064.severity = error # Exceptions should be public
dotnet_diagnostic.CA1065.severity = error # Do not raise exceptions in unexpected locations
dotnet_diagnostic.CA1066.severity = error # Implement IEquatable when overriding Equals
dotnet_diagnostic.CA1067.severity = error # Override Equals when implementing IEquatable
dotnet_diagnostic.CA1068.severity = error # CancellationToken parameters must come last
dotnet_diagnostic.CA1069.severity = error # Enums should not have duplicate values
dotnet_diagnostic.CA2000.severity = suggestion # Dispose objects before losing scope
dotnet_diagnostic.CA2002.severity = error # Do not lock on objects with weak identity
dotnet_diagnostic.CA2011.severity = error # Do not assign property within its setter
dotnet_diagnostic.CA2012.severity = error # Use ValueTasks correctly
dotnet_diagnostic.CA2013.severity = error # Do not use ReferenceEquals with value types
dotnet_diagnostic.CA2014.severity = error # Do not use stackalloc in loops
dotnet_diagnostic.CA2015.severity = error # Do not define finalizers for types derived from MemoryManager
dotnet_diagnostic.CA2016.severity = error # Forward the CancellationToken parameter to methods that take one
dotnet_diagnostic.CA2200.severity = error # Rethrow to preserve stack details
dotnet_diagnostic.CA2213.severity = error # Disposable fields should be disposed
dotnet_diagnostic.CA2214.severity = error # Do not call overridable methods in constructors
dotnet_diagnostic.CA2216.severity = error # Disposable types should declare finalizer
dotnet_diagnostic.CA2229.severity = error # Implement serialization constructors
dotnet_diagnostic.CA2231.severity = error # Overload operator equals on overriding ValueType.Equals
dotnet_diagnostic.CA2235.severity = error # Mark all non-serializable fields
dotnet_diagnostic.CA2237.severity = error # Mark ISerializable types with SerializableAttribute
dotnet_diagnostic.CA2241.severity = error # Provide correct arguments to formatting methods
dotnet_diagnostic.CA2242.severity = error # Test for NaN correctly
###################
# Microsoft .NET Analyzers (CA) - Globalization Rules
###################
dotnet_diagnostic.CA1303.severity = none # Do not pass literals as localized parameters
dotnet_diagnostic.CA1308.severity = none # Normalize strings to uppercase
###################
# Microsoft .NET Analyzers (CA) - Interoperability Rules
###################
dotnet_diagnostic.CA1401.severity = error # P/Invokes should not be visible
###################
# Microsoft .NET Analyzers (CA) - Maintainability Rules
###################
dotnet_diagnostic.CA1507.severity = error # Use nameof in place of string
###################
# Microsoft .NET Analyzers (CA) - Naming Rules
###################
dotnet_diagnostic.CA1710.severity = suggestion # Identifiers should have correct suffix
dotnet_diagnostic.CA1724.severity = none # Type Names Should Not Match Namespaces
###################
# Microsoft .NET Analyzers (CA) - Performance Rules
###################
dotnet_diagnostic.CA1802.severity = error # Use Literals Where Appropriate
dotnet_diagnostic.CA1805.severity = error # Do not initialize unnecessarily
dotnet_diagnostic.CA1810.severity = none # Initialize reference type static fields inline
dotnet_diagnostic.CA1812.severity = error # Avoid uninstantiated internal classes
dotnet_diagnostic.CA1813.severity = error # Avoid unsealed attributes
dotnet_diagnostic.CA1814.severity = error # Prefer jagged arrays over multidimensional
dotnet_diagnostic.CA1815.severity = error # Override equals and operator equals on value types
dotnet_diagnostic.CA1821.severity = error # Remove empty finalizers
dotnet_diagnostic.CA1822.severity = error # Mark members as static
dotnet_diagnostic.CA1825.severity = error # Avoid zero-length array allocations
dotnet_diagnostic.CA1826.severity = error # Use property instead of Linq Enumerable method
dotnet_diagnostic.CA1827.severity = error # Do not use Count/LongCount when Any can be used
dotnet_diagnostic.CA1828.severity = error # Do not use CountAsync/LongCountAsync when AnyAsync can be used
dotnet_diagnostic.CA1829.severity = error # Use Length/Count property instead of Enumerable.Count method
dotnet_diagnostic.CA1830.severity = error # Prefer strongly-typed Append and Insert method overloads on StringBuilder
dotnet_diagnostic.CA1831.severity = error # Use AsSpan instead of Range-based indexers for string
dotnet_diagnostic.CA1832.severity = error # Use AsSpan or AsMemory instead of Range-based indexers for ReadOnlySpan/Memory
dotnet_diagnostic.CA1833.severity = error # Use AsSpan or AsMemory instead of Range-based indexers for Span/Memory
dotnet_diagnostic.CA1834.severity = error # Use StringBuilder.Append(char) for single character strings
dotnet_diagnostic.CA1835.severity = error # Prefer Memory-based overloads for ReadAsync and WriteAsync
dotnet_diagnostic.CA1836.severity = error # Prefer IsEmpty over Count when available
dotnet_diagnostic.CA1837.severity = error # Use Environment.ProcessId instead of Process.GetCurrentProcess().Id
dotnet_diagnostic.CA1838.severity = error # Avoid StringBuilder parameters for P/Invokes
dotnet_diagnostic.CA2007.severity = none # Do not directly await a Task
dotnet_diagnostic.CA2008.severity = error # Do not create tasks without passing a TaskScheduler
dotnet_diagnostic.CA2009.severity = error # Do not call ToImmutableCollection on an ImmutableCollection value
dotnet_diagnostic.CA2207.severity = error # Initialize value type static fields inline
###################
# Microsoft .NET Analyzers (CA) - Security Rules
###################
# SQL Injection & Command Injection
dotnet_diagnostic.CA2100.severity = error # Review SQL queries for security vulnerabilities
dotnet_diagnostic.CA3001.severity = error # Review code for SQL injection vulnerabilities
dotnet_diagnostic.CA3006.severity = error # Review code for process command injection vulnerabilities
# Cross-Site Scripting (XSS) & Injection Attacks
dotnet_diagnostic.CA3002.severity = error # Review code for XSS vulnerabilities
dotnet_diagnostic.CA3003.severity = error # Review code for file path injection vulnerabilities
dotnet_diagnostic.CA3005.severity = error # Review code for LDAP injection vulnerabilities
dotnet_diagnostic.CA3007.severity = error # Review code for open redirect vulnerabilities
dotnet_diagnostic.CA3008.severity = error # Review code for XPath injection vulnerabilities
dotnet_diagnostic.CA3009.severity = error # Review code for XML injection vulnerabilities
dotnet_diagnostic.CA3010.severity = error # Review code for XAML injection vulnerabilities
dotnet_diagnostic.CA3011.severity = error # Review code for DLL injection vulnerabilities
dotnet_diagnostic.CA3012.severity = error # Review code for regex injection vulnerabilities
dotnet_diagnostic.CA3004.severity = error # Review code for information disclosure vulnerabilities
# Insecure Deserialization
dotnet_diagnostic.CA2300.severity = error # Do not use insecure deserializer BinaryFormatter
dotnet_diagnostic.CA2301.severity = error # Do not call BinaryFormatter.Deserialize without setting Binder
dotnet_diagnostic.CA2302.severity = error # Ensure BinaryFormatter.Binder is set before deserializing
dotnet_diagnostic.CA2305.severity = error # Do not use insecure deserializer LosFormatter
dotnet_diagnostic.CA2310.severity = error # Do not use insecure deserializer NetDataContractSerializer
dotnet_diagnostic.CA2311.severity = error # Do not deserialize without setting NetDataContractSerializer.Binder
dotnet_diagnostic.CA2312.severity = error # Ensure NetDataContractSerializer.Binder is set before deserializing
dotnet_diagnostic.CA2315.severity = error # Do not use insecure deserializer ObjectStateFormatter
dotnet_diagnostic.CA2321.severity = error # Do not deserialize with JavaScriptSerializer using SimpleTypeResolver
dotnet_diagnostic.CA2322.severity = error # Ensure JavaScriptSerializer not initialized with SimpleTypeResolver
dotnet_diagnostic.CA2326.severity = error # Do not use TypeNameHandling values other than None
dotnet_diagnostic.CA2327.severity = error # Do not use insecure JsonSerializerSettings
dotnet_diagnostic.CA2328.severity = error # Ensure that JsonSerializerSettings are secure
dotnet_diagnostic.CA2329.severity = error # Do not deserialize with JsonSerializer using insecure configuration
dotnet_diagnostic.CA2330.severity = error # Ensure JsonSerializer has secure configuration when deserializing
dotnet_diagnostic.CA2350.severity = error # Ensure DataTable.ReadXml()'s input is trusted
dotnet_diagnostic.CA2351.severity = error # Ensure DataSet.ReadXml()'s input is trusted
dotnet_diagnostic.CA2352.severity = error # Unsafe DataSet/DataTable in serializable type vulnerable to RCE
dotnet_diagnostic.CA2353.severity = error # Unsafe DataSet or DataTable in serializable type
dotnet_diagnostic.CA2354.severity = error # Unsafe DataSet/DataTable in deserialized object graph vulnerable to RCE
dotnet_diagnostic.CA2355.severity = error # Unsafe DataSet or DataTable in deserialized object graph
dotnet_diagnostic.CA2356.severity = error # Unsafe DataSet/DataTable in web deserialized object graph
dotnet_diagnostic.CA2361.severity = error # Ensure autogenerated class with DataSet.ReadXml() not used with untrusted data
dotnet_diagnostic.CA2362.severity = error # Unsafe DataSet/DataTable in autogenerated serializable type vulnerable to RCE
dotnet_diagnostic.CA5360.severity = error # Do not call dangerous methods in deserialization
dotnet_diagnostic.CA5362.severity = error # Potential reference cycle in deserialized object graph
# Cryptography - Weak & Broken Algorithms
dotnet_diagnostic.CA5350.severity = error # Do not use weak cryptographic algorithms (SHA1, RIPEMD160, TripleDES)
dotnet_diagnostic.CA5351.severity = error # Do not use broken cryptographic algorithms (MD5, DES, RC2)
dotnet_diagnostic.CA5358.severity = error # Do not use unsafe cipher modes (ECB, OFB, CFB)
dotnet_diagnostic.CA5384.severity = error # Do not use Digital Signature Algorithm (DSA)
dotnet_diagnostic.CA5385.severity = error # Use RSA algorithm with sufficient key size (>= 2048 bits)
dotnet_diagnostic.CA5390.severity = error # Do not hard-code encryption key
dotnet_diagnostic.CA5394.severity = error # Do not use insecure randomness (use RNGCryptoServiceProvider)
dotnet_diagnostic.CA5401.severity = error # Do not use CreateEncryptor with non-default IV
dotnet_diagnostic.CA5403.severity = error # Do not hard-code certificate
dotnet_diagnostic.CA5373.severity = error # Do not use obsolete key derivation function
# TLS/SSL Protocol Security
dotnet_diagnostic.CA5359.severity = error # Do not disable certificate validation
dotnet_diagnostic.CA5361.severity = error # Do not disable SChannel use of strong crypto
dotnet_diagnostic.CA5364.severity = error # Do not use deprecated security protocols (TLS 1.0, TLS 1.1, SSL3)
dotnet_diagnostic.CA5378.severity = error # Do not disable ServicePointManagerSecurityProtocols
dotnet_diagnostic.CA5386.severity = error # Avoid hardcoding SecurityProtocolType value
dotnet_diagnostic.CA5397.severity = error # Do not use deprecated SslProtocols values
dotnet_diagnostic.CA5398.severity = error # Avoid hardcoded SslProtocols values
dotnet_diagnostic.CA5399.severity = error # Definitely disable HttpClient certificate revocation list check
dotnet_diagnostic.CA5380.severity = error # Do not add certificates to root store
dotnet_diagnostic.CA5381.severity = error # Ensure certificates are not added to root store
# XML Security
dotnet_diagnostic.CA3061.severity = error # Do not add schema by URL
dotnet_diagnostic.CA3075.severity = error # Insecure DTD processing
dotnet_diagnostic.CA3076.severity = error # Insecure XSLT script execution
dotnet_diagnostic.CA3077.severity = error # Insecure processing in API design, XML Document and XML Text Reader
dotnet_diagnostic.CA5366.severity = error # Use XmlReader for DataSet read XML
dotnet_diagnostic.CA5369.severity = error # Use XmlReader for deserialize
dotnet_diagnostic.CA5370.severity = error # Use XmlReader for validating reader
dotnet_diagnostic.CA5371.severity = error # Use XmlReader for schema read
dotnet_diagnostic.CA5372.severity = error # Use XmlReader for XPathDocument
dotnet_diagnostic.CA5374.severity = error # Do not use XslTransform
# Web Security
dotnet_diagnostic.CA3147.severity = error # Mark verb handlers with ValidateAntiForgeryToken
dotnet_diagnostic.CA5363.severity = error # Do not disable request validation
dotnet_diagnostic.CA5365.severity = error # Do not disable HTTP header checking
dotnet_diagnostic.CA5368.severity = error # Set ViewStateUserKey for classes derived from Page
# P/Invoke & DLL Security
dotnet_diagnostic.CA2101.severity = error # Specify marshalling for P/Invoke string arguments
dotnet_diagnostic.CA5393.severity = error # Do not use unsafe DllImportSearchPath value
# Archive & File Security
dotnet_diagnostic.CA5389.severity = error # Do not add archive item's path to target file system path (Zip Slip)
# Token Validation & Authentication
dotnet_diagnostic.CA5404.severity = error # Do not disable token validation checks
dotnet_diagnostic.CA5405.severity = error # Do not always skip token validation in delegates
# Other Security Rules
dotnet_diagnostic.CA2109.severity = error # Review visible event handlers
dotnet_diagnostic.CA2119.severity = error # Seal methods that satisfy private interfaces
dotnet_diagnostic.CA2153.severity = error # Do not catch corrupted state exceptions
dotnet_diagnostic.CA5367.severity = error # Do not serialize types with pointer fields
###################
# Microsoft .NET Analyzers (CA) - Reliability Rules (Additional)
###################
dotnet_diagnostic.CA2017.severity = error # Parameter count mismatch in logging
dotnet_diagnostic.CA2018.severity = error # Buffer.BlockCopy count argument
dotnet_diagnostic.CA2019.severity = error # ThreadStatic fields should not use inline initialization
dotnet_diagnostic.CA2020.severity = error # Prevent behavioral change with IntPtr/UIntPtr
dotnet_diagnostic.CA2021.severity = error # Don't call Cast/OfType with incompatible types
dotnet_diagnostic.CA2022.severity = error # Avoid inexact read with Stream.Read
dotnet_diagnostic.CA2023.severity = error # Invalid braces in message template
dotnet_diagnostic.CA2025.severity = error # Do not pass IDisposable into unawaited tasks
###################
# Roslynator Analyzers (RCS) - Code Simplification
###################
dotnet_diagnostic.RCS1001.severity = error # Add braces (when expression spans over multiple lines)
dotnet_diagnostic.RCS1005.severity = error # Simplify nested using statement
dotnet_diagnostic.RCS1006.severity = error # Merge 'else' with nested 'if'
dotnet_diagnostic.RCS1020.severity = error # Simplify Nullable to T?
dotnet_diagnostic.RCS1049.severity = error # Simplify boolean comparison
dotnet_diagnostic.RCS1068.severity = error # Simplify logical negation
dotnet_diagnostic.RCS1069.severity = error # Remove unnecessary case label
dotnet_diagnostic.RCS1071.severity = error # Remove redundant base constructor call
dotnet_diagnostic.RCS1073.severity = error # Convert 'if' to 'return' statement
dotnet_diagnostic.RCS1074.severity = error # Remove redundant constructor
dotnet_diagnostic.RCS1084.severity = error # Use coalesce expression instead of conditional expression
dotnet_diagnostic.RCS1128.severity = error # Use coalesce expression
dotnet_diagnostic.RCS1143.severity = error # Simplify coalesce expression
dotnet_diagnostic.RCS1171.severity = error # Simplify lazy initialization
dotnet_diagnostic.RCS1173.severity = error # Use coalesce expression instead of 'if'
dotnet_diagnostic.RCS1259.severity = error # Remove empty syntax (replaces RCS1066)
dotnet_diagnostic.RCS1264.severity = error # Use 'var' or explicit type (replaces RCS1010, RCS1176, RCS1177)
###################
# Roslynator Analyzers (RCS) - Code Quality & Best Practices
###################
dotnet_diagnostic.RCS1018.severity = error # Add/remove accessibility modifiers
dotnet_diagnostic.RCS1037.severity = error # Remove trailing white-space
dotnet_diagnostic.RCS1055.severity = error # Unnecessary semicolon at the end of declaration
dotnet_diagnostic.RCS1078.severity = error # Use "" or 'string.Empty'
dotnet_diagnostic.RCS1085.severity = error # Use auto-implemented property
dotnet_diagnostic.RCS1090.severity = error # Add/remove 'ConfigureAwait(false)' call
dotnet_diagnostic.RCS1102.severity = error # Make class static
dotnet_diagnostic.RCS1105.severity = error # Unnecessary interpolation
dotnet_diagnostic.RCS1138.severity = error # Add summary to documentation comment
dotnet_diagnostic.RCS1139.severity = error # Add summary element to documentation comment
dotnet_diagnostic.RCS1158.severity = none # Static member in generic type should use a type parameter
dotnet_diagnostic.RCS1163.severity = none # Unused parameter
dotnet_diagnostic.RCS1166.severity = error # Value type object is never equal to null
dotnet_diagnostic.RCS1168.severity = suggestion # Parameter name differs from base name
dotnet_diagnostic.RCS1179.severity = error # Unnecessary assignment
dotnet_diagnostic.RCS1180.severity = error # Inline lazy initialization
dotnet_diagnostic.RCS1188.severity = error # Remove redundant auto-property initialization
dotnet_diagnostic.RCS1201.severity = error # Use method chaining
dotnet_diagnostic.RCS1207.severity = error # Use anonymous function or method group
dotnet_diagnostic.RCS1211.severity = error # Remove unnecessary 'else'
dotnet_diagnostic.RCS1231.severity = suggestion # Make parameter ref read-only
dotnet_diagnostic.RCS1242.severity = error # Do not pass non-read-only struct by read-only reference
dotnet_diagnostic.RCS1248.severity = error # Normalize null check
dotnet_diagnostic.RCS1256.severity = none # Invalid argument null check
###################
# Roslynator Analyzers (RCS) - Performance & Optimization
###################
dotnet_diagnostic.RCS1058.severity = error # Use compound assignment
dotnet_diagnostic.RCS1077.severity = error # Optimize LINQ method call
dotnet_diagnostic.RCS1080.severity = error # Use 'Count/Length' property instead of 'Any' method
dotnet_diagnostic.RCS1112.severity = error # Combine 'Enumerable.Where' method chain
dotnet_diagnostic.RCS1190.severity = error # Join string expressions
dotnet_diagnostic.RCS1195.severity = error # Use ^ operator
dotnet_diagnostic.RCS1197.severity = error # Optimize StringBuilder.Append/AppendLine call
dotnet_diagnostic.RCS1198.severity = none # Avoid unnecessary boxing of value type
dotnet_diagnostic.RCS1214.severity = error # Unnecessary interpolated string
dotnet_diagnostic.RCS1235.severity = error # Optimize method call
###################
# StyleCop Analyzers (SA) - Spacing Rules
###################
dotnet_diagnostic.SA1000.severity = error # Keywords must be spaced correctly
dotnet_diagnostic.SA1001.severity = error # Commas must be spaced correctly
dotnet_diagnostic.SA1002.severity = error # Semicolons must be spaced correctly
dotnet_diagnostic.SA1003.severity = error # Symbols must be spaced correctly
dotnet_diagnostic.SA1004.severity = error # Documentation lines must begin with single space
dotnet_diagnostic.SA1005.severity = error # Single line comments must begin with single space
dotnet_diagnostic.SA1006.severity = error # Preprocessor keywords must not be preceded by space
dotnet_diagnostic.SA1007.severity = error # Operator keyword must be followed by space
dotnet_diagnostic.SA1008.severity = error # Opening parenthesis must be spaced correctly
dotnet_diagnostic.SA1009.severity = error # Closing parenthesis must be spaced correctly
dotnet_diagnostic.SA1010.severity = none # Opening square brackets must be spaced correctly
dotnet_diagnostic.SA1011.severity = error # Closing square brackets must be spaced correctly
dotnet_diagnostic.SA1012.severity = error # Opening braces must be spaced correctly
dotnet_diagnostic.SA1013.severity = error # Closing braces must be spaced correctly
dotnet_diagnostic.SA1014.severity = error # Opening generic brackets must be spaced correctly
dotnet_diagnostic.SA1015.severity = error # Closing generic brackets must be spaced correctly
dotnet_diagnostic.SA1016.severity = error # Opening attribute brackets must be spaced correctly
dotnet_diagnostic.SA1017.severity = error # Closing attribute brackets must be spaced correctly
dotnet_diagnostic.SA1018.severity = error # Nullable type symbols must not be preceded by space
dotnet_diagnostic.SA1019.severity = error # Member access symbols must be spaced correctly
dotnet_diagnostic.SA1020.severity = error # Increment decrement symbols must be spaced correctly
dotnet_diagnostic.SA1021.severity = error # Negative signs must be spaced correctly
dotnet_diagnostic.SA1022.severity = error # Positive signs must be spaced correctly
dotnet_diagnostic.SA1023.severity = error # Dereference and access of symbols must be spaced correctly
dotnet_diagnostic.SA1024.severity = error # Colons must be spaced correctly
dotnet_diagnostic.SA1025.severity = error # Code must not contain multiple whitespace in a row
dotnet_diagnostic.SA1026.severity = error # Code must not contain space after new keyword in implicitly typed array allocation
dotnet_diagnostic.SA1027.severity = error # Use tabs correctly
dotnet_diagnostic.SA1028.severity = error # Code must not contain trailing whitespace
###################
# StyleCop Analyzers (SA) - Readability Rules
###################
dotnet_diagnostic.SA1100.severity = error # Do not prefix calls with base unless local implementation exists
dotnet_diagnostic.SA1101.severity = none # Prefix local calls with this
dotnet_diagnostic.SA1102.severity = error # Query clause must follow previous clause
dotnet_diagnostic.SA1103.severity = error # Query clauses must be on same line or separate lines
dotnet_diagnostic.SA1104.severity = error # Query clause must begin on new line when previous clause spans multiple lines
dotnet_diagnostic.SA1105.severity = error # Query clauses spanning multiple lines must begin on own line
dotnet_diagnostic.SA1106.severity = error # Code must not contain empty statements
dotnet_diagnostic.SA1107.severity = error # Code must not contain multiple statements on one line
dotnet_diagnostic.SA1108.severity = error # Block statements must not contain embedded comments
dotnet_diagnostic.SA1110.severity = error # Opening parenthesis or bracket must be on declaration line
dotnet_diagnostic.SA1111.severity = error # Closing parenthesis must be on line of last parameter
dotnet_diagnostic.SA1112.severity = error # Closing parenthesis must be on line of opening parenthesis
dotnet_diagnostic.SA1113.severity = error # Comma must be on same line as previous parameter
dotnet_diagnostic.SA1114.severity = error # Parameter list must follow declaration
dotnet_diagnostic.SA1115.severity = error # Parameter must follow comma
dotnet_diagnostic.SA1116.severity = error # Split parameters must start on line after declaration
dotnet_diagnostic.SA1117.severity = error # Parameters must be on same line or separate lines
dotnet_diagnostic.SA1118.severity = error # Parameter must not span multiple lines
dotnet_diagnostic.SA1120.severity = error # Comments must contain text
dotnet_diagnostic.SA1121.severity = error # Use built-in type alias
dotnet_diagnostic.SA1122.severity = error # Use string.Empty for empty strings
dotnet_diagnostic.SA1123.severity = error # Do not place regions within elements
dotnet_diagnostic.SA1124.severity = error # Do not use regions
dotnet_diagnostic.SA1125.severity = error # Use shorthand for nullable types
dotnet_diagnostic.SA1127.severity = error # Generic type constraints must be on own line
dotnet_diagnostic.SA1128.severity = error # Constructor initializer must be on own line
dotnet_diagnostic.SA1129.severity = error # Do not use default value type constructor
dotnet_diagnostic.SA1130.severity = error # Use lambda syntax
dotnet_diagnostic.SA1131.severity = error # Use readable conditions
dotnet_diagnostic.SA1132.severity = error # Do not combine fields
dotnet_diagnostic.SA1133.severity = error # Do not combine attributes
dotnet_diagnostic.SA1134.severity = error # Attributes must not share line
dotnet_diagnostic.SA1135.severity = error # Using directives must be qualified
dotnet_diagnostic.SA1136.severity = error # Enum values should be on separate lines
dotnet_diagnostic.SA1137.severity = error # Elements should have the same indentation
dotnet_diagnostic.SA1139.severity = error # Use literal suffix notation instead of casting
###################
# StyleCop Analyzers (SA) - Ordering Rules
###################
dotnet_diagnostic.SA1200.severity = none # Using directives must be placed correctly
dotnet_diagnostic.SA1201.severity = error # Elements must appear in the correct order
dotnet_diagnostic.SA1202.severity = error # Elements must be ordered by access
dotnet_diagnostic.SA1203.severity = error # Constants must appear before fields
dotnet_diagnostic.SA1204.severity = error # Static elements must appear before instance elements
dotnet_diagnostic.SA1205.severity = error # Partial elements must declare access
dotnet_diagnostic.SA1206.severity = error # Declaration keywords must follow order
dotnet_diagnostic.SA1207.severity = error # Protected must come before internal
dotnet_diagnostic.SA1208.severity = error # System using directives must be placed before other using directives
dotnet_diagnostic.SA1209.severity = error # Using alias directives must be placed after other using directives
dotnet_diagnostic.SA1210.severity = error # Using directives must be ordered alphabetically by namespace
dotnet_diagnostic.SA1211.severity = error # Using alias directives must be ordered alphabetically by alias name
dotnet_diagnostic.SA1212.severity = error # Property accessors must follow order
dotnet_diagnostic.SA1213.severity = error # Event accessors must follow order
dotnet_diagnostic.SA1214.severity = error # Readonly elements must appear before non-readonly elements
dotnet_diagnostic.SA1216.severity = error # Using static directives must be placed at the correct location
dotnet_diagnostic.SA1217.severity = error # Using static directives must be ordered alphabetically
###################
# StyleCop Analyzers (SA) - Naming Rules
###################
dotnet_diagnostic.SA1300.severity = error # Element must begin with upper-case letter
dotnet_diagnostic.SA1302.severity = error # Interface names must begin with I
dotnet_diagnostic.SA1303.severity = error # Const field names must begin with upper-case letter
dotnet_diagnostic.SA1304.severity = error # Non-private readonly fields must begin with upper-case letter
dotnet_diagnostic.SA1306.severity = none # Field names must begin with lower-case letter
dotnet_diagnostic.SA1307.severity = error # Accessible fields must begin with upper-case letter
dotnet_diagnostic.SA1308.severity = error # Variable names must not be prefixed
dotnet_diagnostic.SA1309.severity = none # Field names must not begin with underscore
dotnet_diagnostic.SA1310.severity = error # Field names must not contain underscore
dotnet_diagnostic.SA1311.severity = none # Static readonly fields must begin with upper-case letter
dotnet_diagnostic.SA1312.severity = error # Variable names must begin with lower-case letter
dotnet_diagnostic.SA1313.severity = error # Parameter names must begin with lower-case letter
dotnet_diagnostic.SA1314.severity = error # Type parameter names must begin with T
dotnet_diagnostic.SA1316.severity = none # Tuple element names should use correct casing
###################
# StyleCop Analyzers (SA) - Maintainability Rules
###################
dotnet_diagnostic.SA1119.severity = error # Statement must not use unnecessary parenthesis
dotnet_diagnostic.SA1400.severity = error # Access modifier must be declared
dotnet_diagnostic.SA1401.severity = error # Fields must be private
dotnet_diagnostic.SA1402.severity = error # File may only contain a single type
dotnet_diagnostic.SA1403.severity = error # File may only contain a single namespace
dotnet_diagnostic.SA1404.severity = error # Code analysis suppression must have justification
dotnet_diagnostic.SA1405.severity = error # Debug.Assert must provide message text
dotnet_diagnostic.SA1406.severity = error # Debug.Fail must provide message text
dotnet_diagnostic.SA1407.severity = error # Arithmetic expressions must declare precedence
dotnet_diagnostic.SA1408.severity = error # Conditional expressions must declare precedence
dotnet_diagnostic.SA1410.severity = error # Remove delegate parenthesis when possible
dotnet_diagnostic.SA1411.severity = error # Attribute constructor must not use unnecessary parenthesis
dotnet_diagnostic.SA1413.severity = none # Use trailing commas in multi-line initializers
###################
# StyleCop Analyzers (SA) - Layout Rules
###################
dotnet_diagnostic.SA1500.severity = error # Braces for multi-line statements must not share line
dotnet_diagnostic.SA1501.severity = error # Statement must not be on single line
dotnet_diagnostic.SA1502.severity = error # Element must not be on single line
dotnet_diagnostic.SA1503.severity = error # Braces must not be omitted
dotnet_diagnostic.SA1504.severity = error # All accessors must be single-line or multi-line
dotnet_diagnostic.SA1505.severity = none # Opening braces must not be followed by blank line
dotnet_diagnostic.SA1506.severity = error # Element documentation headers must not be followed by blank line
dotnet_diagnostic.SA1507.severity = error # Code must not contain multiple blank lines in a row
dotnet_diagnostic.SA1508.severity = error # Closing braces must not be preceded by blank line
dotnet_diagnostic.SA1509.severity = error # Opening braces must not be preceded by blank line
dotnet_diagnostic.SA1510.severity = error # Chained statement blocks must not be preceded by blank line
dotnet_diagnostic.SA1511.severity = error # While-do footer must not be preceded by blank line
dotnet_diagnostic.SA1512.severity = error # Single-line comments must not be followed by blank line
dotnet_diagnostic.SA1513.severity = error # Closing brace must be followed by blank line
dotnet_diagnostic.SA1514.severity = none # Element documentation header must be preceded by blank line
dotnet_diagnostic.SA1515.severity = error # Single-line comment must be preceded by blank line
dotnet_diagnostic.SA1516.severity = error # Elements must be separated by blank line
dotnet_diagnostic.SA1517.severity = error # Code must not contain blank lines at start of file
dotnet_diagnostic.SA1518.severity = error # Use line endings correctly at end of file
dotnet_diagnostic.SA1519.severity = error # Braces must not be omitted from multi-line child statement
dotnet_diagnostic.SA1520.severity = error # Use braces consistently
###################
# StyleCop Analyzers (SA) - Documentation Rules
###################
dotnet_diagnostic.SA1600.severity = error # Elements must be documented
dotnet_diagnostic.SA1601.severity = error # Partial elements must be documented
dotnet_diagnostic.SA1602.severity = error # Enumeration items must be documented
dotnet_diagnostic.SA1604.severity = error # Element documentation must have summary
dotnet_diagnostic.SA1605.severity = error # Partial element documentation must have summary
dotnet_diagnostic.SA1606.severity = error # Element documentation must have summary text
dotnet_diagnostic.SA1607.severity = error # Partial element documentation must have summary text
dotnet_diagnostic.SA1608.severity = error # Element documentation must not have default summary
dotnet_diagnostic.SA1610.severity = error # Property documentation must have value text
dotnet_diagnostic.SA1611.severity = error # Element parameters must be documented
dotnet_diagnostic.SA1612.severity = error # Element parameter documentation must match element parameters
dotnet_diagnostic.SA1613.severity = error # Element parameter documentation must declare parameter name
dotnet_diagnostic.SA1614.severity = error # Element parameter documentation must have text
dotnet_diagnostic.SA1615.severity = error # Element return value must be documented
dotnet_diagnostic.SA1616.severity = error # Element return value documentation must have text
dotnet_diagnostic.SA1617.severity = error # Void return value must not be documented
dotnet_diagnostic.SA1618.severity = error # Generic type parameters must be documented
dotnet_diagnostic.SA1619.severity = error # Generic type parameters must be documented partial class
dotnet_diagnostic.SA1620.severity = error # Generic type parameter documentation must match type parameters
dotnet_diagnostic.SA1621.severity = error # Generic type parameter documentation must declare parameter name
dotnet_diagnostic.SA1622.severity = error # Generic type parameter documentation must have text
dotnet_diagnostic.SA1623.severity = error # Property summary documentation must match accessors
dotnet_diagnostic.SA1624.severity = error # Property summary documentation must omit set accessor with restricted access
dotnet_diagnostic.SA1625.severity = error # Element documentation must not be copied and pasted
dotnet_diagnostic.SA1626.severity = error # Single-line comments must not use documentation style slashes
dotnet_diagnostic.SA1627.severity = error # Documentation text must not be empty
dotnet_diagnostic.SA1629.severity = error # Documentation text must end with a period
dotnet_diagnostic.SA1633.severity = error # File must have header
dotnet_diagnostic.SA1634.severity = error # File header must show copyright
dotnet_diagnostic.SA1635.severity = error # File header must have copyright text
dotnet_diagnostic.SA1636.severity = error # File header copyright text must match
dotnet_diagnostic.SA1637.severity = none # File header must contain file name
dotnet_diagnostic.SA1638.severity = none # File header file name documentation must match file name
dotnet_diagnostic.SA1640.severity = error # File header must have valid company text
dotnet_diagnostic.SA1641.severity = error # File header company name text must match
dotnet_diagnostic.SA1642.severity = error # Constructor summary documentation must begin with standard text
dotnet_diagnostic.SA1643.severity = error # Destructor summary documentation must begin with standard text
dotnet_diagnostic.SA1649.severity = error # File name must match type name
dotnet_diagnostic.SA1651.severity = error # Do not use placeholder elements
###################
# StyleCop Alternative Analyzers (SX) - Alternative Rules
###################
dotnet_diagnostic.SX1101.severity = error # Do not prefix local members with this
dotnet_diagnostic.SX1309.severity = error # Field names must begin with underscore
dotnet_diagnostic.SX1623.severity = none # Property summary documentation must match accessors (alternative)
#############################################
# NUnit Analyzers
#############################################
[*.{cs,vb}]
###################
# NUnit Analyzers - Structure Rules (NUnit1001 - NUnit1999)
###################
dotnet_diagnostic.NUnit1001.severity = error # TestCase args must match parameter types
dotnet_diagnostic.NUnit1002.severity = error # TestCaseSource should use nameof
dotnet_diagnostic.NUnit1003.severity = error # TestCase provided too few arguments
dotnet_diagnostic.NUnit1004.severity = error # TestCase provided too many arguments
dotnet_diagnostic.NUnit1005.severity = error # ExpectedResult type must match return type
dotnet_diagnostic.NUnit1006.severity = error # ExpectedResult must not be used on void methods
dotnet_diagnostic.NUnit1007.severity = error # Non-void method but no ExpectedResult provided
dotnet_diagnostic.NUnit1008.severity = error # ParallelScope.Self at assembly level has no effect
dotnet_diagnostic.NUnit1009.severity = error # ParallelScope.Children on non-parameterized test
dotnet_diagnostic.NUnit1010.severity = error # ParallelScope.Fixtures on a test method
dotnet_diagnostic.NUnit1011.severity = error # TestCaseSource member does not exist
dotnet_diagnostic.NUnit1012.severity = error # async test method must have non-void return type
dotnet_diagnostic.NUnit1013.severity = error # async method must use non-generic Task when no result
dotnet_diagnostic.NUnit1014.severity = error # async method must use Task when result expected
dotnet_diagnostic.NUnit1015.severity = error # Source type does not implement I(Async)Enumerable
dotnet_diagnostic.NUnit1016.severity = error # Source type lacks default constructor
dotnet_diagnostic.NUnit1017.severity = error # Specified source is not static
dotnet_diagnostic.NUnit1018.severity = error # TestCaseSource param count mismatch (target method)
dotnet_diagnostic.NUnit1019.severity = error # Source does not return I(Async)Enumerable
dotnet_diagnostic.NUnit1020.severity = error # Parameters provided to field/property source
dotnet_diagnostic.NUnit1021.severity = error # ValueSource should use nameof
dotnet_diagnostic.NUnit1022.severity = error # Specified ValueSource is not static
dotnet_diagnostic.NUnit1023.severity = error # ValueSource cannot supply required parameters
dotnet_diagnostic.NUnit1024.severity = error # ValueSource does not return I(Async)Enumerable
dotnet_diagnostic.NUnit1025.severity = error # ValueSource member does not exist
dotnet_diagnostic.NUnit1026.severity = error # Test or setup/teardown method is not public
dotnet_diagnostic.NUnit1027.severity = error # Test method has parameters but no arguments supplied
dotnet_diagnostic.NUnit1028.severity = error # Non-test method is public
dotnet_diagnostic.NUnit1029.severity = error # TestCaseSource param count mismatch (Test method)
dotnet_diagnostic.NUnit1030.severity = error # TestCaseSource parameter type mismatch (Test method)
dotnet_diagnostic.NUnit1031.severity = error # ValuesAttribute args must match parameter types
dotnet_diagnostic.NUnit1032.severity = error # IDisposable field/property should be disposed in TearDown
dotnet_diagnostic.NUnit1033.severity = error # TestContext.Write methods will be obsolete
dotnet_diagnostic.NUnit1034.severity = error # Base TestFixtures should be abstract
dotnet_diagnostic.NUnit1035.severity = error # Range 'step' parameter cannot be zero
dotnet_diagnostic.NUnit1036.severity = error # Range: from < to when step is positive
dotnet_diagnostic.NUnit1037.severity = error # Range: from > to when step is negative
dotnet_diagnostic.NUnit1038.severity = error # Attribute values' types must match parameter type
###################
# NUnit Analyzers - Assertion Rules (NUnit2001 - NUnit2999)
###################
dotnet_diagnostic.NUnit2001.severity = error # Prefer Assert.That(..., Is.False) over ClassicAssert.False
dotnet_diagnostic.NUnit2002.severity = error # Prefer Assert.That(..., Is.False) over ClassicAssert.IsFalse
dotnet_diagnostic.NUnit2003.severity = error # Prefer Assert.That(..., Is.True) over ClassicAssert.IsTrue
dotnet_diagnostic.NUnit2004.severity = error # Prefer Assert.That(..., Is.True) over ClassicAssert.True
dotnet_diagnostic.NUnit2005.severity = error # Prefer Is.EqualTo over AreEqual
dotnet_diagnostic.NUnit2006.severity = error # Prefer Is.Not.EqualTo over AreNotEqual
dotnet_diagnostic.NUnit2007.severity = error # Actual value should not be a constant
dotnet_diagnostic.NUnit2008.severity = error # Incorrect IgnoreCase usage
dotnet_diagnostic.NUnit2009.severity = error # Same value used for actual and expected
dotnet_diagnostic.NUnit2010.severity = error # Use EqualConstraint for better messages
dotnet_diagnostic.NUnit2011.severity = error # Use ContainsConstraint for better messages
dotnet_diagnostic.NUnit2012.severity = error # Use StartsWithConstraint for better messages
dotnet_diagnostic.NUnit2013.severity = error # Use EndsWithConstraint for better messages
dotnet_diagnostic.NUnit2014.severity = error # Use SomeItemsConstraint for better messages
dotnet_diagnostic.NUnit2015.severity = error # Prefer Is.SameAs over AreSame
dotnet_diagnostic.NUnit2016.severity = error # Prefer Is.Null over ClassicAssert.Null
dotnet_diagnostic.NUnit2017.severity = error # Prefer Is.Null over ClassicAssert.IsNull
dotnet_diagnostic.NUnit2018.severity = error # Prefer Is.Not.Null over ClassicAssert.NotNull
dotnet_diagnostic.NUnit2019.severity = error # Prefer Is.Not.Null over ClassicAssert.IsNotNull
dotnet_diagnostic.NUnit2020.severity = error # Incompatible types for SameAs constraint
dotnet_diagnostic.NUnit2021.severity = error # Incompatible types for EqualTo constraint
dotnet_diagnostic.NUnit2022.severity = error # Missing property required for constraint
dotnet_diagnostic.NUnit2023.severity = error # Invalid NullConstraint usage
dotnet_diagnostic.NUnit2024.severity = error # Wrong actual type with String constraint
dotnet_diagnostic.NUnit2025.severity = error # Wrong actual type with ContainsConstraint
dotnet_diagnostic.NUnit2026.severity = error # Wrong actual type with SomeItems+EqualConstraint
dotnet_diagnostic.NUnit2027.severity = error # Prefer Is.GreaterThan over ClassicAssert.Greater
dotnet_diagnostic.NUnit2028.severity = error # Prefer Is.GreaterThanOrEqualTo over GreaterOrEqual
dotnet_diagnostic.NUnit2029.severity = error # Prefer Is.LessThan over ClassicAssert.Less
dotnet_diagnostic.NUnit2030.severity = error # Prefer Is.LessThanOrEqualTo over LessOrEqual
dotnet_diagnostic.NUnit2031.severity = error # Prefer Is.Not.SameAs over AreNotSame
dotnet_diagnostic.NUnit2032.severity = error # Prefer Is.Zero over ClassicAssert.Zero
dotnet_diagnostic.NUnit2033.severity = error # Prefer Is.Not.Zero over ClassicAssert.NotZero
dotnet_diagnostic.NUnit2034.severity = error # Prefer Is.NaN over ClassicAssert.IsNaN
dotnet_diagnostic.NUnit2035.severity = error # Prefer Is.Empty over ClassicAssert.IsEmpty
dotnet_diagnostic.NUnit2036.severity = error # Prefer Is.Not.Empty over ClassicAssert.IsNotEmpty
dotnet_diagnostic.NUnit2037.severity = error # Prefer Does.Contain over ClassicAssert.Contains
dotnet_diagnostic.NUnit2038.severity = error # Prefer Is.InstanceOf over ClassicAssert.IsInstanceOf
dotnet_diagnostic.NUnit2039.severity = error # Prefer Is.Not.InstanceOf over ClassicAssert.IsNotInstanceOf
dotnet_diagnostic.NUnit2040.severity = error # Non-reference types for SameAs constraint
dotnet_diagnostic.NUnit2041.severity = error # Incompatible types for comparison constraint
dotnet_diagnostic.NUnit2042.severity = error # Comparison constraint on object
dotnet_diagnostic.NUnit2043.severity = error # Use ComparisonConstraint for better messages
dotnet_diagnostic.NUnit2044.severity = error # Non-delegate actual parameter
dotnet_diagnostic.NUnit2045.severity = error # Use Assert.EnterMultipleScope or Assert.Multiple
dotnet_diagnostic.NUnit2046.severity = error # Use CollectionConstraint for better messages
dotnet_diagnostic.NUnit2047.severity = error # Incompatible types for Within constraint
dotnet_diagnostic.NUnit2048.severity = error # Prefer Assert.That over StringAssert
dotnet_diagnostic.NUnit2049.severity = error # Prefer Assert.That over CollectionAssert
dotnet_diagnostic.NUnit2050.severity = error # NUnit 4 no longer supports string.Format spec
dotnet_diagnostic.NUnit2051.severity = error # Prefer Is.Positive over ClassicAssert.Positive
dotnet_diagnostic.NUnit2052.severity = error # Prefer Is.Negative over ClassicAssert.Negative
dotnet_diagnostic.NUnit2053.severity = error # Prefer Is.AssignableFrom over ClassicAssert.IsAssignableFrom
dotnet_diagnostic.NUnit2054.severity = error # Prefer Is.Not.AssignableFrom over ClassicAssert.IsNotAssignableFrom
dotnet_diagnostic.NUnit2055.severity = error # Prefer Is.InstanceOf over 'is T' expression
dotnet_diagnostic.NUnit2056.severity = error # Prefer Assert.EnterMultipleScope statement over Multiple
###################
# NUnit Analyzers - Suppressor Rules (NUnit3001 - NUnit3999)
###################
dotnet_diagnostic.NUnit3001.severity = error # Expression checked in NotNull/IsNotNull/Assert.That
dotnet_diagnostic.NUnit3002.severity = error # Field/Property initialized in SetUp/OneTimeSetUp
dotnet_diagnostic.NUnit3003.severity = error # TestFixture instantiated via reflection
dotnet_diagnostic.NUnit3004.severity = error # Field should be disposed in TearDown/OneTimeTearDown
###################
# NUnit Analyzers - Style Rules (NUnit4001 - NUnit4999)
###################
dotnet_diagnostic.NUnit4001.severity = error # Simplify the Values attribute
dotnet_diagnostic.NUnit4002.severity = error # Use Specific constraint
###################
# Trimming Analyzer Warnings (IL2001 - IL2123)
# See: https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trim-warnings/
###################
dotnet_diagnostic.IL2001.severity = error # Type in UnreferencedCode attribute doesn't have matching RequiresUnreferencedCode
dotnet_diagnostic.IL2002.severity = error # Method with RequiresUnreferencedCode called from code without that attribute
dotnet_diagnostic.IL2003.severity = error # RequiresUnreferencedCode attribute is only supported on methods
dotnet_diagnostic.IL2004.severity = error # Incorrect RequiresUnreferencedCode signature
dotnet_diagnostic.IL2005.severity = error # Could not resolve dependency assembly
dotnet_diagnostic.IL2007.severity = error # Could not process embedded resource
dotnet_diagnostic.IL2008.severity = error # Could not find type in assembly
dotnet_diagnostic.IL2009.severity = error # Could not find method in type
dotnet_diagnostic.IL2010.severity = error # Invalid value for PreserveDependencyAttribute
dotnet_diagnostic.IL2011.severity = error # Unknown body modification
dotnet_diagnostic.IL2012.severity = error # Could not find field in type
dotnet_diagnostic.IL2013.severity = error # Substitution file contains invalid XML
dotnet_diagnostic.IL2014.severity = error # Missing substitution file
dotnet_diagnostic.IL2015.severity = error # Invalid XML encountered in substitution file
dotnet_diagnostic.IL2016.severity = error # Could not find type from substitution XML
dotnet_diagnostic.IL2017.severity = error # Could not find method in type specified in substitution XML
dotnet_diagnostic.IL2018.severity = error # Could not find field in type specified in substitution XML
dotnet_diagnostic.IL2019.severity = error # Could not find interface implementation in type
dotnet_diagnostic.IL2022.severity = error # Type in DynamicallyAccessedMembers attribute doesn't have matching DynamicallyAccessedMembers annotation
dotnet_diagnostic.IL2023.severity = error # Method returning DynamicallyAccessedMembers annotated type requires the same annotation
dotnet_diagnostic.IL2024.severity = error # Multiple DynamicallyAccessedMembers annotations on a member are not supported
dotnet_diagnostic.IL2025.severity = error # Duplicate preserve attribute
dotnet_diagnostic.IL2026.severity = error # Using member annotated with RequiresUnreferencedCode
dotnet_diagnostic.IL2027.severity = error # RequiresUnreferencedCodeAttribute is only supported on methods and constructors
dotnet_diagnostic.IL2028.severity = error # Invalid RequiresUnreferencedCode attribute usage
dotnet_diagnostic.IL2029.severity = error # RequiresUnreferencedCode attribute on type is not supported
dotnet_diagnostic.IL2030.severity = error # Dynamic invocation of method requiring unreferenced code is not safe
dotnet_diagnostic.IL2031.severity = error # Could not resolve dependency assembly from embedded resource
dotnet_diagnostic.IL2032.severity = error # Error reading debug symbols
dotnet_diagnostic.IL2033.severity = error # Trying to modify a sealed type
dotnet_diagnostic.IL2034.severity = error # Value passed to the implicit 'this' parameter does not satisfy 'DynamicallyAccessedMembersAttribute' requirements
dotnet_diagnostic.IL2035.severity = error # Unrecognized value passed to the parameter of method with 'DynamicallyAccessedMembersAttribute' requirements
dotnet_diagnostic.IL2036.severity = error # Interface implementation has different DynamicallyAccessedMembers annotations than interface
dotnet_diagnostic.IL2037.severity = error # BaseType annotation doesn't match
dotnet_diagnostic.IL2038.severity = error # Derived type doesn't have matching DynamicallyAccessedMembers annotation
dotnet_diagnostic.IL2039.severity = error # Implementation method doesn't have matching DynamicallyAccessedMembers annotation
dotnet_diagnostic.IL2040.severity = error # Interface member doesn't have matching DynamicallyAccessedMembers annotation
dotnet_diagnostic.IL2041.severity = error # GetType call on DynamicallyAccessedMembers annotated generic parameter
dotnet_diagnostic.IL2042.severity = error # The DynamicallyAccessedMembersAttribute value used in a custom attribute is not compatible
dotnet_diagnostic.IL2043.severity = error # DynamicallyAccessedMembersAttribute on property conflicts with base property
dotnet_diagnostic.IL2044.severity = error # DynamicallyAccessedMembersAttribute on event conflicts with base event
dotnet_diagnostic.IL2045.severity = error # Field type doesn't satisfy 'DynamicallyAccessedMembersAttribute' requirements
dotnet_diagnostic.IL2046.severity = error # Trimmer couldn't find PreserveBaseOverridesAttribute on a method
dotnet_diagnostic.IL2048.severity = error # Internal attribute couldn't be removed
dotnet_diagnostic.IL2049.severity = error # Could not process data format message
dotnet_diagnostic.IL2050.severity = error # Correctness of COM interop cannot be guaranteed after trimming
dotnet_diagnostic.IL2051.severity = error # COM related type is trimmed
dotnet_diagnostic.IL2052.severity = error # Resolving member reference for P/Invoke into type that is trimmed
dotnet_diagnostic.IL2053.severity = error # Target method is trimmed
dotnet_diagnostic.IL2054.severity = error # Generic constraint type is annotated with DynamicallyAccessedMembersAttribute which requires unreferenced code
dotnet_diagnostic.IL2055.severity = error # Type implements COM visible type but has no GUID
dotnet_diagnostic.IL2056.severity = error # Generic parameter with DynamicallyAccessedMembers annotation is not publicly visible
dotnet_diagnostic.IL2057.severity = error # Unrecognized value passed to the parameter of method with DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2058.severity = error # Parameter types of method doesn't have matching DynamicallyAccessedMembers annotation
dotnet_diagnostic.IL2059.severity = error # Unrecognized reflection pattern
dotnet_diagnostic.IL2060.severity = error # Unrecognized value passed to parameter with DynamicallyAccessedMembersAttribute
dotnet_diagnostic.IL2061.severity = error # Value passed to implicit this parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2062.severity = error # Value passed to parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2063.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2064.severity = error # Value assigned to field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2065.severity = error # Value passed to implicit this parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2066.severity = error # Value stored in field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2067.severity = error # Value passed to implicit this parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2068.severity = error # Value passed to parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2069.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2070.severity = error # Value stored in field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2071.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2072.severity = error # Value passed to parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2073.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2074.severity = error # Value stored in field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2075.severity = error # Value passed to implicit this parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2076.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2077.severity = error # Value passed to parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2078.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2079.severity = error # Value stored in field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2080.severity = error # Value passed to implicit this parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2081.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2082.severity = error # Value passed to parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2083.severity = error # Value stored in field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2084.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2085.severity = error # Value passed to implicit this parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2087.severity = error # Value passed to parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2088.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2089.severity = error # Value stored in field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2090.severity = error # Value passed to implicit this parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2091.severity = error # Target generic argument doesn't satisfy 'DynamicallyAccessedMembersAttribute' requirements
dotnet_diagnostic.IL2092.severity = error # Value passed to generic parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2093.severity = error # Value stored in field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2094.severity = error # DynamicallyAccessedMembers on 'this' parameter doesn't match overridden member
dotnet_diagnostic.IL2095.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2096.severity = error # Calling method on statically typed generic instance requires unreferenced code
dotnet_diagnostic.IL2097.severity = error # Value passed to parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2098.severity = error # Value stored in field doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2099.severity = error # Value returned from method doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2100.severity = error # XML stream doesn't conform to the schema
dotnet_diagnostic.IL2101.severity = error # Embedded XML in assembly couldn't be loaded
dotnet_diagnostic.IL2102.severity = error # Invalid warning number passed to UnconditionalSuppressMessage
dotnet_diagnostic.IL2103.severity = error # Value passed to the 'propertyAccessExpression' parameter doesn't satisfy DynamicallyAccessedMembersAttribute requirements
dotnet_diagnostic.IL2104.severity = error # Assembly that was specified through a custom step
dotnet_diagnostic.IL2105.severity = error # Type from a custom step that couldn't be loaded
dotnet_diagnostic.IL2106.severity = error # Method from a custom step that couldn't be loaded
dotnet_diagnostic.IL2107.severity = error # Methods in types that derive from RemotingClientProxy cannot be statically determined
dotnet_diagnostic.IL2108.severity = error # Invalid scope for UnconditionalSuppressMessage
dotnet_diagnostic.IL2109.severity = error # Method doesn't have matching DynamicallyAccessedMembers annotation
dotnet_diagnostic.IL2110.severity = error # Invalid member name in UnconditionalSuppressMessage
dotnet_diagnostic.IL2111.severity = error # Method with parameters or return value with DynamicallyAccessedMembersAttribute is not supported
dotnet_diagnostic.IL2112.severity = error # Reflection call to method with DynamicallyAccessedMembersAttribute requirements cannot be statically analyzed
dotnet_diagnostic.IL2113.severity = error # DynamicallyAccessedMembers on type references Type.MakeGenericType with different requirements
dotnet_diagnostic.IL2114.severity = error # DynamicallyAccessedMembers mismatch on signature types
dotnet_diagnostic.IL2115.severity = error # DynamicallyAccessedMembers on type or base types references member which requires unreferenced code
dotnet_diagnostic.IL2116.severity = error # DynamicallyAccessedMembers on parameter types doesn't match overridden parameter
dotnet_diagnostic.IL2117.severity = error # Methods with DynamicallyAccessedMembersAttribute annotations cannot be replaced
dotnet_diagnostic.IL2122.severity = error # Reflection call to method with UnreferencedCode attribute cannot be statically analyzed
dotnet_diagnostic.IL2123.severity = error # DynamicallyAccessedMembers on method or parameter doesn't match overridden member
###################
# AOT Analyzer Warnings (IL3xxx)
# See: https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/warnings/
###################
dotnet_diagnostic.IL3050.severity = error # Using member annotated with RequiresDynamicCode
dotnet_diagnostic.IL3051.severity = error # RequiresDynamicCode attribute is only supported on methods and constructors
dotnet_diagnostic.IL3052.severity = error # RequiresDynamicCode attribute on type is not supported
dotnet_diagnostic.IL3053.severity = error # Assembly has RequiresDynamicCode attribute
dotnet_diagnostic.IL3054.severity = error # Generic expansion in type requires dynamic code
dotnet_diagnostic.IL3055.severity = error # MakeGenericType on non-supported type requires dynamic code
dotnet_diagnostic.IL3056.severity = error # MakeGenericMethod on non-supported method requires dynamic code
dotnet_diagnostic.IL3057.severity = error # Reflection access to generic parameter requires dynamic code
#############################################
# C++ Files
#############################################
[*.{cpp,h,in}]
curly_bracket_next_line = true
indent_brace_style = Allman
#############################################
# XML Files
#############################################
[*.{csproj,vcxproj,vcxproj.filters,proj,nativeproj,locproj}]
indent_size = 2
[*.builds]
indent_size = 2
[*.{xml,stylecop,resx,ruleset}]
indent_size = 2
[*.{props,targets,config,nuspec}]
indent_size = 2
#############################################
# Shell Scripts
#############################################
[*.sh]
end_of_line = lf
[*.{cmd, bat}]
end_of_line = crlf
#############################################
# Other Settings
#############################################
vsspell_dictionary_languages = en-US
================================================
FILE: .gitattributes
================================================
# Catch all for anything we forgot. Add rules if you get CRLF to LF warnings.
* text=auto
# Text files that should be normalized to LF in odb.
*.cs text diff=csharp
*.xaml text
*.config text
*.c text
*.h text
*.cpp text
*.hpp text
*.sln text
*.csproj text
*.vcxproj text
*.md text
*.tt text
*.sh text
*.ps1 text
*.cmd text
*.bat text
*.markdown text
*.msbuild text
# Binary files that should not be normalized or diffed
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.rc binary
*.pfx binary
*.snk binary
*.dll binary
*.exe binary
*.lib binary
*.exp binary
*.pdb binary
*.sdf binary
*.7z binary
# lfs files
*.mht filter=lfs diff=lfs merge=lfs -text
*.ppam filter=lfs diff=lfs merge=lfs -text
*.wmv filter=lfs diff=lfs merge=lfs -text
*.btif filter=lfs diff=lfs merge=lfs -text
*.fla filter=lfs diff=lfs merge=lfs -text
*.qt filter=lfs diff=lfs merge=lfs -text
*.xlam filter=lfs diff=lfs merge=lfs -text
*.xm filter=lfs diff=lfs merge=lfs -text
*.djvu filter=lfs diff=lfs merge=lfs -text
*.woff filter=lfs diff=lfs merge=lfs -text
*.a filter=lfs diff=lfs merge=lfs -text
*.bak filter=lfs diff=lfs merge=lfs -text
*.lha filter=lfs diff=lfs merge=lfs -text
*.mpg filter=lfs diff=lfs merge=lfs -text
*.xltm filter=lfs diff=lfs merge=lfs -text
*.eol filter=lfs diff=lfs merge=lfs -text
*.ipa filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.uvm filter=lfs diff=lfs merge=lfs -text
*.cmx filter=lfs diff=lfs merge=lfs -text
*.dng filter=lfs diff=lfs merge=lfs -text
*.xltx filter=lfs diff=lfs merge=lfs -text
*.fli filter=lfs diff=lfs merge=lfs -text
*.wmx filter=lfs diff=lfs merge=lfs -text
*.jxr filter=lfs diff=lfs merge=lfs -text
*.pyv filter=lfs diff=lfs merge=lfs -text
*.s7z filter=lfs diff=lfs merge=lfs -text
*.csv filter=lfs diff=lfs merge=lfs -text
*.pptm filter=lfs diff=lfs merge=lfs -text
*.rz filter=lfs diff=lfs merge=lfs -text
*.wm filter=lfs diff=lfs merge=lfs -text
*.xlsx filter=lfs diff=lfs merge=lfs -text
*.bh filter=lfs diff=lfs merge=lfs -text
*.dat filter=lfs diff=lfs merge=lfs -text
*.mid filter=lfs diff=lfs merge=lfs -text
*.mpga filter=lfs diff=lfs merge=lfs -text
*.ogg filter=lfs diff=lfs merge=lfs -text
*.s3m filter=lfs diff=lfs merge=lfs -text
*.mar filter=lfs diff=lfs merge=lfs -text
*.movie filter=lfs diff=lfs merge=lfs -text
*.pptx filter=lfs diff=lfs merge=lfs -text
*.dll filter=lfs diff=lfs merge=lfs -text
*.docm filter=lfs diff=lfs merge=lfs -text
*.m3u filter=lfs diff=lfs merge=lfs -text
*.mov filter=lfs diff=lfs merge=lfs -text
*.aac filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.midi filter=lfs diff=lfs merge=lfs -text
*.mobi filter=lfs diff=lfs merge=lfs -text
*.potm filter=lfs diff=lfs merge=lfs -text
*.woff2 filter=lfs diff=lfs merge=lfs -text
*.cab filter=lfs diff=lfs merge=lfs -text
*.dmg filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.war filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.icns filter=lfs diff=lfs merge=lfs -text
*.slk filter=lfs diff=lfs merge=lfs -text
*.wbmp filter=lfs diff=lfs merge=lfs -text
*.xpm filter=lfs diff=lfs merge=lfs -text
*.xmind filter=lfs diff=lfs merge=lfs -text
*.3g2 filter=lfs diff=lfs merge=lfs -text
*.m4v filter=lfs diff=lfs merge=lfs -text
*.pic filter=lfs diff=lfs merge=lfs -text
*.uvi filter=lfs diff=lfs merge=lfs -text
*.uvp filter=lfs diff=lfs merge=lfs -text
*.xls filter=lfs diff=lfs merge=lfs -text
*.jpgv filter=lfs diff=lfs merge=lfs -text
*.mka filter=lfs diff=lfs merge=lfs -text
*.swf filter=lfs diff=lfs merge=lfs -text
*.uvs filter=lfs diff=lfs merge=lfs -text
*.wav filter=lfs diff=lfs merge=lfs -text
*.ecelp4800 filter=lfs diff=lfs merge=lfs -text
*.mng filter=lfs diff=lfs merge=lfs -text
*.pps filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.arj filter=lfs diff=lfs merge=lfs -text
*.lzh filter=lfs diff=lfs merge=lfs -text
*.raw filter=lfs diff=lfs merge=lfs -text
*.rlc filter=lfs diff=lfs merge=lfs -text
*.sgi filter=lfs diff=lfs merge=lfs -text
*.tar filter=lfs diff=lfs merge=lfs -text
*.au filter=lfs diff=lfs merge=lfs -text
*.dcm filter=lfs diff=lfs merge=lfs -text
*.GIF filter=lfs diff=lfs merge=lfs -text
*.resources filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.sil filter=lfs diff=lfs merge=lfs -text
*.bk filter=lfs diff=lfs merge=lfs -text
*.DS_Store filter=lfs diff=lfs merge=lfs -text
*.ief filter=lfs diff=lfs merge=lfs -text
*.JPEG filter=lfs diff=lfs merge=lfs -text
*.pbm filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.sketch filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.nef filter=lfs diff=lfs merge=lfs -text
*.oga filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.ecelp7470 filter=lfs diff=lfs merge=lfs -text
*.xlt filter=lfs diff=lfs merge=lfs -text
*.exe filter=lfs diff=lfs merge=lfs -text
*.mp4 filter=lfs diff=lfs merge=lfs -text
*.pnm filter=lfs diff=lfs merge=lfs -text
*.ttc filter=lfs diff=lfs merge=lfs -text
*.wdp filter=lfs diff=lfs merge=lfs -text
*.xbm filter=lfs diff=lfs merge=lfs -text
*.ecelp9600 filter=lfs diff=lfs merge=lfs -text
*.pot filter=lfs diff=lfs merge=lfs -text
*.wvx filter=lfs diff=lfs merge=lfs -text
*.uvu filter=lfs diff=lfs merge=lfs -text
*.asf filter=lfs diff=lfs merge=lfs -text
*.dxf filter=lfs diff=lfs merge=lfs -text
*.flv filter=lfs diff=lfs merge=lfs -text
*.mdi filter=lfs diff=lfs merge=lfs -text
*.pcx filter=lfs diff=lfs merge=lfs -text
*.tiff filter=lfs diff=lfs merge=lfs -text
*.bzip2 filter=lfs diff=lfs merge=lfs -text
*.deb filter=lfs diff=lfs merge=lfs -text
*.graffle filter=lfs diff=lfs merge=lfs -text
*.h261 filter=lfs diff=lfs merge=lfs -text
*.jpeg filter=lfs diff=lfs merge=lfs -text
*.ppm filter=lfs diff=lfs merge=lfs -text
*.tif filter=lfs diff=lfs merge=lfs -text
*.ppt filter=lfs diff=lfs merge=lfs -text
*.fbs filter=lfs diff=lfs merge=lfs -text
*.gzip filter=lfs diff=lfs merge=lfs -text
*.o filter=lfs diff=lfs merge=lfs -text
*.sub filter=lfs diff=lfs merge=lfs -text
*.z filter=lfs diff=lfs merge=lfs -text
*.alz filter=lfs diff=lfs merge=lfs -text
*.BMP filter=lfs diff=lfs merge=lfs -text
*.dotm filter=lfs diff=lfs merge=lfs -text
*.key filter=lfs diff=lfs merge=lfs -text
*.rgb filter=lfs diff=lfs merge=lfs -text
*.f4v filter=lfs diff=lfs merge=lfs -text
*.iso filter=lfs diff=lfs merge=lfs -text
*.ai filter=lfs diff=lfs merge=lfs -text
*.dtshd filter=lfs diff=lfs merge=lfs -text
*.fpx filter=lfs diff=lfs merge=lfs -text
*.shar filter=lfs diff=lfs merge=lfs -text
*.img filter=lfs diff=lfs merge=lfs -text
*.rmf filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.eot filter=lfs diff=lfs merge=lfs -text
*.wma filter=lfs diff=lfs merge=lfs -text
*.cpio filter=lfs diff=lfs merge=lfs -text
*.cr2 filter=lfs diff=lfs merge=lfs -text
*.adp filter=lfs diff=lfs merge=lfs -text
*.mpeg filter=lfs diff=lfs merge=lfs -text
*.npx filter=lfs diff=lfs merge=lfs -text
*.pdb filter=lfs diff=lfs merge=lfs -text
*.PNG filter=lfs diff=lfs merge=lfs -text
*.xwd filter=lfs diff=lfs merge=lfs -text
*.egg filter=lfs diff=lfs merge=lfs -text
*.ppsx filter=lfs diff=lfs merge=lfs -text
*.mp4a filter=lfs diff=lfs merge=lfs -text
*.pages filter=lfs diff=lfs merge=lfs -text
*.baml filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.class filter=lfs diff=lfs merge=lfs -text
*.h264 filter=lfs diff=lfs merge=lfs -text
*.lib filter=lfs diff=lfs merge=lfs -text
*.mmr filter=lfs diff=lfs merge=lfs -text
*.dot filter=lfs diff=lfs merge=lfs -text
*.gif filter=lfs diff=lfs merge=lfs -text
*.JPG filter=lfs diff=lfs merge=lfs -text
*.m4a filter=lfs diff=lfs merge=lfs -text
*.so filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.thmx filter=lfs diff=lfs merge=lfs -text
*.3ds filter=lfs diff=lfs merge=lfs -text
*.bmp filter=lfs diff=lfs merge=lfs -text
*.ogv filter=lfs diff=lfs merge=lfs -text
*.xif filter=lfs diff=lfs merge=lfs -text
*.aiff filter=lfs diff=lfs merge=lfs -text
*.dts filter=lfs diff=lfs merge=lfs -text
*.rip filter=lfs diff=lfs merge=lfs -text
*.vob filter=lfs diff=lfs merge=lfs -text
*.7z filter=lfs diff=lfs merge=lfs -text
*.fh filter=lfs diff=lfs merge=lfs -text
*.flac filter=lfs diff=lfs merge=lfs -text
*.g3 filter=lfs diff=lfs merge=lfs -text
*.jpm filter=lfs diff=lfs merge=lfs -text
*.ppsm filter=lfs diff=lfs merge=lfs -text
*.potx filter=lfs diff=lfs merge=lfs -text
*.zipx filter=lfs diff=lfs merge=lfs -text
*.dsk filter=lfs diff=lfs merge=lfs -text
*.ico filter=lfs diff=lfs merge=lfs -text
*.ktx filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.numbers filter=lfs diff=lfs merge=lfs -text
*.3gp filter=lfs diff=lfs merge=lfs -text
*.fst filter=lfs diff=lfs merge=lfs -text
*.scpt filter=lfs diff=lfs merge=lfs -text
*.epub filter=lfs diff=lfs merge=lfs -text
*.rmvb filter=lfs diff=lfs merge=lfs -text
*.webm filter=lfs diff=lfs merge=lfs -text
*.docx filter=lfs diff=lfs merge=lfs -text
*.pgm filter=lfs diff=lfs merge=lfs -text
*.pya filter=lfs diff=lfs merge=lfs -text
*.rtf filter=lfs diff=lfs merge=lfs -text
*.smv filter=lfs diff=lfs merge=lfs -text
*.tga filter=lfs diff=lfs merge=lfs -text
*.cur filter=lfs diff=lfs merge=lfs -text
*.dwg filter=lfs diff=lfs merge=lfs -text
*.lvp filter=lfs diff=lfs merge=lfs -text
*.pyo filter=lfs diff=lfs merge=lfs -text
*.apk filter=lfs diff=lfs merge=lfs -text
*.ar filter=lfs diff=lfs merge=lfs -text
*.caf filter=lfs diff=lfs merge=lfs -text
*.doc filter=lfs diff=lfs merge=lfs -text
*.h263 filter=lfs diff=lfs merge=lfs -text
*.xlsm filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text
*.mxu filter=lfs diff=lfs merge=lfs -text
*.wax filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.mj2 filter=lfs diff=lfs merge=lfs -text
*.otf filter=lfs diff=lfs merge=lfs -text
*.udf filter=lfs diff=lfs merge=lfs -text
*.aif filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.pyc filter=lfs diff=lfs merge=lfs -text
*.weba filter=lfs diff=lfs merge=lfs -text
*.webp filter=lfs diff=lfs merge=lfs -text
*.cgm filter=lfs diff=lfs merge=lfs -text
*.mkv filter=lfs diff=lfs merge=lfs -text
*.ppa filter=lfs diff=lfs merge=lfs -text
*.uvh filter=lfs diff=lfs merge=lfs -text
*.xpi filter=lfs diff=lfs merge=lfs -text
*.psd filter=lfs diff=lfs merge=lfs -text
*.xlsb filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.wim filter=lfs diff=lfs merge=lfs -text
*.ape filter=lfs diff=lfs merge=lfs -text
*.avi filter=lfs diff=lfs merge=lfs -text
*.dex filter=lfs diff=lfs merge=lfs -text
*.dra filter=lfs diff=lfs merge=lfs -text
*.dvb filter=lfs diff=lfs merge=lfs -text
*.jpg filter=lfs diff=lfs merge=lfs -text
*.xla filter=lfs diff=lfs merge=lfs -text
*.fvt filter=lfs diff=lfs merge=lfs -text
*.lzo filter=lfs diff=lfs merge=lfs -text
*.pea filter=lfs diff=lfs merge=lfs -text
*.ras filter=lfs diff=lfs merge=lfs -text
*.tlz filter=lfs diff=lfs merge=lfs -text
*.viv filter=lfs diff=lfs merge=lfs -text
*.winmd filter=lfs diff=lfs merge=lfs -text
================================================
FILE: .github/CODEOWNERS
================================================
# A CODEOWNERS file uses a pattern that follows the same rules used in gitignore files.
# The pattern is followed by one or more GitHub usernames or team names using the
# standard @username or @org/team-name format. You can also refer to a user by an
# email address that has been added to their GitHub account, for example user@example.com
.github/* @reactiveui/maintainers
* @reactiveui/core-team
version.json @reactiveui/maintainers
build.* @reactiveui/devops-team
SignPackages.* @reactiveui/devops-team
NuGet.* @reactiveui/devops-team
.vsts-ci.yml @reactiveui/devops-team
script/* @reactiveui/devops-team
samples/* @reactiveui/learning-team
snippets/* @reactiveui/learning-team
*.md @reactiveui/learning-team
src/ReactiveUI.AndroidSupport/* @reactiveui/android-team
src/ReactiveUI/Platforms/android/* @reactiveui/android-team
src/ReactiveUI/Platforms/apple-common/* @reactiveui/ios-team @reactiveui/mac-team
src/ReactiveUI/Platforms/ios/* @reactiveui/ios-team
src/ReactiveUI/Platforms/mac/* @reactiveui/mac-team
src/ReactiveUI/Platforms/net461/* @reactiveui/wpf-team @reactiveui/winforms-team
src/ReactiveUI/Platforms/netcoreapp/* @reactiveui/dotnetcore-team @reactiveui/webassembly-team
src/ReactiveUI/Platforms/uap10/* @reactiveui/uwp-team
src/ReactiveUI/Platforms/tizen/* @reactiveui/tizen-team
src/ReactiveUI/Platforms/tvos/* @reactiveui/tvos-team
src/ReactiveUI/Platforms/windows-common/* @reactiveui/wpf-team @reactiveui/winforms-team @reactiveui/uwp-team
src/ReactiveUI/Platforms/xamarin-common/* @reactiveui/xamarin-forms-team
src/ReactiveUI.Blend/* @reactiveui/wpf-team @reactiveui/winforms-team @reactiveui/uwp-team
src/ReactiveUI.Events.WPF/* @reactiveui/wpf-team
src/ReactiveUI.Events.XamForms/* @reactiveui/xamarin-forms-team
src/ReactiveUI.Fody*/* @reactiveui/fody-team
src/ReactiveUI.Winforms/* @reactiveui/winforms-team
src/ReactiveUI.Wpf/* @reactiveui/wpf-team
src/ReactiveUI.XamForms/* @reactiveui/xamarin-forms-team
================================================
FILE: .github/ISSUE_TEMPLATE/bug-report.yml
================================================
name: Bug Report
description: Create a report to help us improve
title: "[Bug]: "
labels: ["bug"]
body:
- type: markdown
attributes:
value: |
## Please note although we can't commit to any timeline, priority will be given to those who are [Contributors](https://github.com/reactiveui/ReactiveUI#contribute ) to the project.
- type: textarea
id: description
attributes:
label: Describe the bug 🐞
description: A clear and concise description of what the bug is.
value: "A bug happened!"
validations:
required: true
- type: textarea
id: reproduce-steps
attributes:
label: Step to reproduce
description: "Steps to reproduce the behavior:"
value: |
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
validations:
required: true
- type: input
id: reproduce-repository
attributes:
label: Reproduction repository
description: "Simple repository representing the bug"
placeholder: https://github.com/reactiveui/ReactiveUI
value: |
https://github.com/reactiveui/ReactiveUI
validations:
required: false
- type: textarea
id: expected-behavior
attributes:
label: Expected behavior
description: A clear and concise description of what you expected to happen.
value: This should happen...
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Screenshots 🖼️
description: If applicable, add screenshots to help explain your problem.
validations:
required: false
- type: dropdown
id: ide
attributes:
label: IDE
multiple: true
options:
- Visual Studio 2022
- Visual Studio 2019
- Visual Studio 2017
- Visual Studio for Mac
- Rider Windows
- Rider macOS
- Visual Studio Code
- type: input
id: operating-system
attributes:
label: Operating system
description: Windows, Linux, Mac OS...
validations:
required: false
- type: input
id: system-version
attributes:
label: Version
description: Version and distribution (if applicable)
validations:
required: false
- type: input
id: device
attributes:
label: Device
description: Device e.g. iPhone 6
validations:
required: false
- type: input
id: reactiveui-version
attributes:
label: ReactiveUI Version
description: e.g. 15.1.1
validations:
required: false
- type: textarea
id: additional-information
attributes:
label: Additional information ℹ️
description: Add any other information about the problem here.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Questions
url: https://github.com/reactiveui/ReactiveUI/discussions
about: 'For general questions about ReactiveUI, ask in the GitHub discussions'
- name: Chat
url: https://www.reactiveui.net/slack
about: 'Our slack chat community invite'
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: feature request
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
**Describe the solution you'd like**
**Describe alternatives you've considered**
**Describe suggestions on how to achieve the feature**
**Additional context**
================================================
FILE: .github/copilot-instructions.md
================================================
This repository’s canonical agent guidance has been consolidated into:
- `agent.md` in the root folder or relative path is `../agent.md` to this file.
GitHub Copilot (and other coding agents) should read and follow `agent.md` for build/test commands, repository architecture context, coding standards, and AOT requirements.
If there is any conflict between this file and `agent.md`, follow **agent.md**.
================================================
FILE: .github/renovate.json
================================================
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["local>reactiveui/.github:renovate"]
}
================================================
FILE: .github/workflows/build-samples.yml
================================================
name: Sample Build
on:
workflow_dispatch:
inputs:
disable:
description: "temporarily disabled"
env:
productNamespacePrefix: "ReactiveUI"
permissions:
contents: read
jobs:
build:
permissions:
contents: none
uses: reactiveui/actions-common/.github/workflows/workflow-common-setup-and-build.yml@main
with:
configuration: Release
productNamespacePrefix: "ReactiveUI"
useVisualStudioPreview: false
useMauiCheckDotNetTool: false
srcFolder: 'integrationtests'
solutionFile: 'IntegrationTests.All.sln'
performTests: false
================================================
FILE: .github/workflows/ci-build.yml
================================================
name: Build
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
# Needed so the reusable workflow can optionally delete the temp per-OS artifacts it creates.
permissions:
contents: read
actions: write
env:
productNamespacePrefix: "ReactiveUI"
jobs:
build:
uses: reactiveui/actions-common/.github/workflows/workflow-common-setup-and-build.yml@main
with:
configuration: Release
productNamespacePrefix: "ReactiveUI"
installWorkloads: true
secrets:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
================================================
FILE: .github/workflows/lock.yml
================================================
name: 'Lock Threads'
on:
schedule:
- cron: '0 0 * * *'
workflow_dispatch:
permissions:
issues: write
pull-requests: write
concurrency:
group: lock
jobs:
action:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v6
with:
github-token: ${{ github.token }}
issue-inactive-days: '14'
pr-inactive-days: '14'
issue-comment: >
This issue has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.
pr-comment: >
This pull request has been automatically locked since there
has not been any recent activity after it was closed.
Please open a new issue for related bugs.
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
workflow_dispatch:
permissions:
contents: write
id-token: write
jobs:
release:
uses: reactiveui/actions-common/.github/workflows/workflow-common-release.yml@main
with:
solutionFile: reactiveui.slnx
installWorkloads: true
secrets:
ES_USERNAME: ${{ secrets.ES_USERNAME }}
ES_PASSWORD: ${{ secrets.ES_PASSWORD }}
CREDENTIAL_ID: ${{ secrets.CREDENTIAL_ID }}
ES_TOTP_SECRET: ${{ secrets.ES_TOTP_SECRET }}
publish-nuget:
needs: release
runs-on: ubuntu-latest
environment:
name: release
permissions:
id-token: write
steps:
- name: Download signed packages
uses: actions/download-artifact@v8
with:
name: signed-nuget
- name: Setup .NET
uses: actions/setup-dotnet@v5
- name: NuGet login (OIDC trusted publishing)
id: nuget-login
uses: NuGet/login@v1
with:
user: ${{ secrets.NUGET_USER }}
- name: Push to NuGet
shell: bash
run: |
for pkg in *.nupkg; do
dotnet nuget push "$pkg" --source https://api.nuget.org/v3/index.json --api-key "${{ steps.nuget-login.outputs.NUGET_API_KEY }}"
done
create-release:
needs: [release, publish-nuget]
uses: reactiveui/actions-common/.github/workflows/workflow-common-create-release.yml@main
with:
version: ${{ needs.release.outputs.semver2 }}
================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
# User-specific files
*.rsuser
*.suo
*.user
*.userosscache
*.sln.docstates
*.env
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Mono auto generated files
mono_crash.*
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
[Dd]ebug/x64/
[Dd]ebugPublic/x64/
[Rr]elease/x64/
[Rr]eleases/x64/
bin/x64/
obj/x64/
[Dd]ebug/x86/
[Dd]ebugPublic/x86/
[Rr]elease/x86/
[Rr]eleases/x86/
bin/x86/
obj/x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
[Aa][Rr][Mm]64[Ee][Cc]/
bld/
[Oo]bj/
[Oo]ut/
[Ll]og/
[Ll]ogs/
# Build results on 'Bin' directories
**/[Bb]in/*
# Uncomment if you have tasks that rely on *.refresh files to move binaries
# (https://github.com/github/gitignore/pull/3736)
#!**/[Bb]in/*.refresh
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/
# Visual Studio 2017 auto generated files
Generated\ Files/
# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
*.trx
# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml
# Approval Tests result files
*.received.*
# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c
# Benchmark Results
BenchmarkDotNet.Artifacts/
# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/
# ASP.NET Scaffolding
ScaffoldingReadMe.txt
# StyleCop
StyleCopReport.xml
# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.obj
*.idb
*.iobj
*.pch
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
# but not Directory.Build.rsp, as it configures directory-level build defaults
!Directory.Build.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc
# Chutzpah Test files
_Chutzpah*
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.opensdf
*.sdf
*.cachefile
*.VC.db
*.VC.VC.opendb
# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap
# Visual Studio Trace Files
*.e2e
# TFS 2012 Local Workspace
$tf/
# Guidance Automation Toolkit
*.gpState
# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user
# TeamCity is a build add-in
_TeamCity*
# DotCover is a Code Coverage Tool
*.dotCover
# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json
# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info
# Visual Studio code coverage results
*.coverage
*.coveragexml
# NCrunch
_NCrunch_*
.NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*
# MightyMoose
*.mm.*
AutoTest.Net/
# Web workbench (sass)
.sass-cache/
# Installshield output folder
[Ee]xpress/
# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html
# Click-Once directory
publish/
# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj
# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/
# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets
# Microsoft Azure Build Output
csx/
*.build.csdef
# Microsoft Azure Emulator
ecf/
rcf/
# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload
# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/
# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs
# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk
# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/
# RIA/Silverlight projects
Generated_Code/
# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak
# SQL Server files
*.mdf
*.ldf
*.ndf
# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl
# Microsoft Fakes
FakesAssemblies/
# GhostDoc plugin setting file
*.GhostDoc.xml
# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/
# Visual Studio 6 build log
*.plg
# Visual Studio 6 workspace options file
*.opt
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp
# Visual Studio 6 technical files
*.ncb
*.aps
# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions
# Paket dependency manager
**/.paket/paket.exe
paket-files/
# FAKE - F# Make
**/.fake/
# CodeRush personal settings
**/.cr/personal
# Python Tools for Visual Studio (PTVS)
**/__pycache__/
*.pyc
# Cake - Uncomment if you are using it
#tools/**
#!tools/packages.config
# Tabs Studio
*.tss
# Telerik's JustMock configuration file
*.jmconfig
# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs
# OpenCover UI analysis results
OpenCover/
# Azure Stream Analytics local run output
ASALocalRun/
# MSBuild Binary and Structured Log
*.binlog
MSBuild_Logs/
# AWS SAM Build and Temporary Artifacts folder
.aws-sam
# NVidia Nsight GPU debugger configuration file
*.nvuser
# MFractors (Xamarin productivity tool) working folder
**/.mfractor/
# Local History for Visual Studio
**/.localhistory/
# Visual Studio History (VSHistory) files
.vshistory/
# BeatPulse healthcheck temp database
healthchecksdb
# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/
# Ionide (cross platform F# VS Code tools) working folder
**/.ionide/
# Fody - auto-generated XML schema
FodyWeavers.xsd
# VS Code files for those working on multiple tools
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets
# Local History for Visual Studio Code
.history/
# Built Visual Studio Code Extensions
*.vsix
# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp
# Received files
src/*.Tests/**/*ApiApprovalTests*.received.txt
# IntelliJ/Rider files
.idea/
# Mono Files
.mono/
# Fody Weavers (for tests)
src/Tools/
# Xamarin.Android Resource.Designer.cs files
**/*.Android/**/[Rr]esource.[Dd]esigner.cs
**/*.Droid/**/[Rr]esource.[Dd]esigner.cs
**/Android/**/[Rr]esource.[Dd]esigner.cs
**/Droid/**/[Rr]esource.[Dd]esigner.cs
**/[Rr]esources/[Rr]esource.[Dd]esigner.cs
# MSBuild generator editor configs
**/*.GeneratedMSBuildEditorConfig.editorconfig
/app
.dotnet/
# Claude Settings
.claude/
================================================
FILE: CLAUDE.md
================================================
# CLAUDE.md
Follow the canonical repository agent guidance in @agent.md.
If anything in this file conflicts with @agent.md, follow @agent.md.
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Code of Conduct
If you’re being harassed, noticed someone else being harassed, or have any other concerns, please contact us immediately. Your reports will be taken seriously and will not be dismissed or argued with. All members, committers and volunteers in this community are required to act according to the Code of Conduct. These guidelines help steer our interactions and strive to keep ReactiveUI a positive, growing project, community and help us provide and ensure a safe environment for everyone. When referring to a group of people, we aim to use gender-neutral terms like "team", "folks", "everyone". (For details, we recommend this post).
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to ReactiveUI
We'd love for you to contribute to our source code and to make reactiveui even better than it is
today! Here are the guidelines we'd like you to follow:
- [Code of Conduct](https://reactiveui.net/code-of-conduct)
- [Question or Problem?](#question)
- [Issues and Bugs](#issue)
- [Feature Requests](#feature)
- [Submission Guidelines](#submit)
- [Coding Rules](#rules)
- [Commit Message Guidelines](https://reactiveui.net/contribute/software-style-guide/commit-message-convention)
## Got a Question or Problem?
If you have questions about how to use reactiveui, please direct these to [StackOverflow](https://stackoverflow.com/questions/tagged/reactiveui). The project maintainers hang out in this [Slack](https://github.com/reactiveui/reactiveui#slack) channel.
## Found an Issue?
If you find a bug in the source code or a mistake in the documentation, you can help us by
submitting an issue to our [GitHub Repository](https://github.com/reactiveui/reactiveui). Even better you can submit a Pull Request
with a fix.
**Please see the [Submission Guidelines](#submit) below.**
## Want a Feature?
You can request a new feature by submitting an issue to our [GitHub Repository](https://github.com/reactiveui/reactiveui). If you
would like to implement a new feature then consider what kind of change it is:
* **Major Changes** that you wish to contribute to the project should be discussed first in [Slack](https://github.com/reactiveui/reactiveui#slack) so that we can better coordinate our efforts,
prevent duplication of work, and help you to craft the change so that it is successfully accepted
into the project.
* **Small Changes** can be crafted and submitted to the [GitHub Repository](https://github.com/reactiveui/reactiveui) as a Pull
Request.
## Submission Guidelines
### Submitting an Issue
If your issue appears to be a bug, and hasn't been reported, open a new issue. Help us to maximize
the effort we can spend fixing issues and adding new features, by not reporting duplicate issues.
Providing the following information will increase the chances of your issue being dealt with
quickly:
* **Overview of the Issue** - if an error is being thrown a stack trace helps
* **Motivation for or Use Case** - explain why this is a bug for you
* **reactiveui Version(s)** - is it a regression?
* **Operating System** - is this a problem with all browsers or only specific ones?
* **Reproduce the Error** - provide a example or an unambiguous set of steps.
* **Related Issues** - has a similar issue been reported before?
* **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be
causing the problem (line of code or commit)
**If you get help, help others. Good karma rulez!**
### Submitting a Pull Request
Before you submit your pull request consider the following guidelines:
* Search [GitHub](https://github.com/reactiveui/reactiveui/pulls) for an open or closed Pull Request
that relates to your submission. You don't want to duplicate effort.
* Make your changes in a new git branch:
```shell
git checkout -b my-fix-branch master
```
* Create your patch, **including appropriate test cases**.
* Follow our [Coding Rules](#rules).
* Run the test suite, as described below.
* Commit your changes using a descriptive commit message that follows our
[commit message guidelines](https://reactiveui.net/contribute/software-style-guide/commit-message-convention).
```shell
git commit -a
```
Note: the optional commit `-a` command line option will automatically "add" and "rm" edited files.
* Build your changes locally to ensure all the tests pass by using the Solution (.sln) files in the `src` directory.
* Push your branch to GitHub:
```shell
git push origin my-fix-branch
```
In GitHub, send a pull request to `reactiveui:master`.
If we suggest changes, then:
* Make the required updates.
* Re-run the test suite to ensure tests are still passing.
* Commit your changes to your branch (e.g. `my-fix-branch`).
* Push the changes to your GitHub repository (this will update your Pull Request).
If the PR gets too outdated we may ask you to rebase and force push to update the PR:
```shell
git rebase master -i
git push origin my-fix-branch -f
```
_WARNING: Squashing or reverting commits and force-pushing thereafter may remove GitHub comments
on code that were previously made by you or others in your commits. Avoid any form of rebasing
unless necessary._
That's it! Thank you for your contribution!
#### After your pull request is merged
After your pull request is merged, you can safely delete your branch and pull the changes
from the main (upstream) repository:
* Delete the remote branch on GitHub either through the GitHub web UI or your local shell as follows:
```shell
git push origin --delete my-fix-branch
```
* Check out the master branch:
```shell
git checkout master -f
```
* Delete the local branch:
```shell
git branch -D my-fix-branch
```
* Update your master with the latest upstream version:
```shell
git pull --ff upstream master
```
## Coding
### Developer Environment
- Visual Studio 2019 (with latest patches/updates), with the following workloads/components
- Windows Universal Platform Development workload
- .NET desktop development workload
- Mobile development with .NET workload
- .NET Core cross-platform development
- Windows 10 SDK 10.0.17763.0 (individual component)
- PowerShell
- Android SDK Platform 29 (install through Visual Studio)
Once all the above are set up, use the desired Solution (.sln) file in the repository's `src` directory.
### Coding Rules
To ensure consistency throughout the source code, keep these rules in mind as you are working:
* All features or bug fixes **must be tested** by one or more unit tests.
* All public API methods **must be documented** with XML documentation.
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) .NET Foundation and Contributors
All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
[](https://github.com/reactiveui/ReactiveUI/actions/workflows/ci-build.yml)
[](https://codecov.io/gh/reactiveui/ReactiveUI)
[](https://reactiveui.net/contribute)
[](https://reactiveui.net/slack)
# What is ReactiveUI?
[ReactiveUI](https://reactiveui.net/) is a composable, cross-platform model-view-viewmodel framework for all .NET platforms that is inspired by functional reactive programming, which is a paradigm that allows you to [abstract mutable state away from your user interfaces and express the idea around a feature in one readable place](https://www.youtube.com/watch?v=3HwEytvngXk) and improve the testability of your application.
[🔨 Get Started](https://reactiveui.net/docs/getting-started/) [🛍 Install Packages](https://reactiveui.net/docs/getting-started/installation/) [🎞 Watch Videos](https://reactiveui.net/docs/resources/videos) [🎓 View Samples](https://reactiveui.net/docs/resources/samples/) [🎤 Discuss ReactiveUI](https://reactiveui.net/slack)
## Documentation
- [RxSchedulers](docs/RxSchedulers.md) - Using ReactiveUI schedulers without RequiresUnreferencedCode attributes
## Book
There has been an excellent [book](https://kent-boogaart.com/you-i-and-reactiveui/) written by our Alumni maintainer Kent Boogart.
## NuGet Packages
Install the following packages to start building your own ReactiveUI app. Note: some of the platform-specific packages are required. This means your app won't perform as expected until you install the packages properly. See the Installation docs page for more info.
| Platform | ReactiveUI Package | NuGet |
| ----------------- | ----------------------------------- | ---------------------- |
| .NET Standard | [ReactiveUI][CoreDoc] | [![CoreBadge]][Core] |
| Any | [ReactiveUI.SourceGenerators][SGDoc]| [![SGBadge]][SG] |
| Unit Testing | [ReactiveUI.Testing][TestDoc] | [![TestBadge]][Test] |
| WPF | [ReactiveUI.WPF][WpfDoc] | [![WpfBadge]][Wpf] |
| UWP | [ReactiveUI.Uwp][UwpDoc] | [![UwpBadge]][Uwp] |
| WinUI | [ReactiveUI.WinUI][WinUiDoc] | [![WinUiBadge]][WinUi] |
| MAUI | [ReactiveUI.Maui][MauiDoc] | [![MauiBadge]][Maui] |
| Windows Forms | [ReactiveUI.WinForms][WinDoc] | [![WinBadge]][Win] |
| AndroidX | [ReactiveUI.AndroidX][DroDoc] | [![DroXBadge]][DroX] |
| Tizen | [ReactiveUI][CoreDoc] | [![CoreBadge]][Core] |
| Blazor | [ReactiveUI.Blazor][BlazDoc] | [![BlazBadge]][Blaz] |
| Platform Uno | [ReactiveUI.Uno][UnoDoc] | [![UnoBadge]][Uno] |
| Platform Uno | [ReactiveUI.Uno.WinUI][UnoWinUiDoc] | [![UnoWinUiBadge]][UnoWinUi] |
| Avalonia | [ReactiveUI.Avalonia][AvaDoc] | [![AvaBadge]][Ava] |
| Any | [ReactiveUI.Validation][ValDocs] | [![ValBadge]][ValCore] |
| Any | [ReactiveUI.Extensions][ExtDocs] | [![ExtBadge]][Ext] |
[Core]: https://www.nuget.org/packages/ReactiveUI/
[CoreBadge]: https://img.shields.io/nuget/v/ReactiveUI.svg
[CoreDoc]: https://reactiveui.net/docs/getting-started/installation/
[SG]: https://www.nuget.org/packages/ReactiveUI.SourceGenerators/
[SGDoc]: https://reactiveui.net/docs/handbook/view-models/boilerplate-code
[SGBadge]: https://img.shields.io/nuget/v/ReactiveUI.SourceGenerators.svg
[Test]: https://www.nuget.org/packages/ReactiveUI.Testing/
[TestBadge]: https://img.shields.io/nuget/v/ReactiveUI.Testing.svg
[TestDoc]: https://reactiveui.net/docs/handbook/testing/
[Wpf]: https://www.nuget.org/packages/ReactiveUI.WPF/
[WpfBadge]: https://img.shields.io/nuget/v/ReactiveUI.WPF.svg
[WpfDoc]: https://reactiveui.net/docs/getting-started/installation/windows-presentation-foundation
[Uwp]: https://www.nuget.org/packages/ReactiveUI.Uwp/
[UwpBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uwp.svg
[UwpDoc]: https://reactiveui.net/docs/getting-started/installation/universal-windows-platform
[WinUi]: https://www.nuget.org/packages/ReactiveUI.WinUI/
[WinUiBadge]: https://img.shields.io/nuget/v/ReactiveUI.WinUI.svg
[WinUiDoc]: https://reactiveui.net/docs/getting-started/installation/universal-windows-platform
[Maui]: https://www.nuget.org/packages/ReactiveUI.Maui/
[MauiBadge]: https://img.shields.io/nuget/v/ReactiveUI.Maui.svg
[MauiDoc]: https://blog.jetbrains.com/dotnet/2020/09/18/xamarin-maui-and-the-reactive-mvvm-between-them-webinar-recording/
[Win]: https://www.nuget.org/packages/ReactiveUI.WinForms/
[WinEvents]: https://www.nuget.org/packages/ReactiveUI.Events.WinForms/
[WinBadge]: https://img.shields.io/nuget/v/ReactiveUI.WinForms.svg
[WinDoc]: https://reactiveui.net/docs/getting-started/installation/windows-forms
[DroX]: https://www.nuget.org/packages/ReactiveUI.AndroidX/
[DroXBadge]: https://img.shields.io/nuget/v/ReactiveUI.AndroidX.svg
[DroDoc]: https://reactiveui.net/docs/getting-started/installation/
[Uno]: https://www.nuget.org/packages/ReactiveUI.Uno/
[UnoBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uno.svg
[UnoDoc]: https://reactiveui.net/docs/getting-started/installation/uno-platform
[UnoWinUi]: https://www.nuget.org/packages/ReactiveUI.Uno.WinUI/
[UnoWinUiBadge]: https://img.shields.io/nuget/v/ReactiveUI.Uno.WinUI.svg
[UnoWinUiDoc]: https://reactiveui.net/docs/getting-started/installation/uno-platform
[Blaz]: https://www.nuget.org/packages/ReactiveUI.Blazor/
[BlazBadge]: https://img.shields.io/nuget/v/ReactiveUI.Blazor.svg
[BlazDoc]: https://www.reactiveui.net/docs/getting-started/installation/blazor
[Ava]: https://www.nuget.org/packages/ReactiveUI.Avalonia/
[AvaBadge]: https://img.shields.io/nuget/v/ReactiveUI.Avalonia.svg
[AvaDoc]: https://reactiveui.net/docs/getting-started/installation/avalonia
[EventsDocs]: https://reactiveui.net/docs/handbook/events/
[ValCore]: https://www.nuget.org/packages/ReactiveUI.Validation/
[ValBadge]: https://img.shields.io/nuget/v/ReactiveUI.Validation.svg
[ValDocs]: https://reactiveui.net/docs/handbook/user-input-validation/
[Ext]: https://www.nuget.org/packages/ReactiveUI.Extensions/
[ExtBadge]: https://img.shields.io/nuget/v/ReactiveUI.Extensions.svg
[ExtDocs]: https://reactiveui.net/
## Sponsorship
The core team members, ReactiveUI contributors and contributors in the ecosystem do this open-source work in their free time. If you use ReactiveUI, a serious task, and you'd like us to invest more time on it, please donate. This project increases your income/productivity too. It makes development and applications faster and it reduces the required bandwidth.
[Become a sponsor](https://github.com/sponsors/reactivemarbles).
## Migration from Xamarin and .NET 8 MAUI
### Xamarin Users
As of May 2024, Microsoft ended support for Xamarin per their [support policy](https://docs.microsoft.com/dotnet/maui/what-is-maui#xamarin-retirement). ReactiveUI has removed support for legacy Xamarin platforms in favor of modern .NET MAUI. For Xamarin projects:
- **Xamarin.Forms** → Migrate to **MAUI** and use `ReactiveUI.Maui`
- **Xamarin.Android** → Migrate to **MAUI Android** or use `ReactiveUI.AndroidX` for native Android
- **Xamarin.iOS/Mac** → Migrate to **MAUI iOS/Mac Catalyst**
For guidance on migrating from Xamarin to MAUI, see the [official migration documentation](https://docs.microsoft.com/dotnet/maui/migration/).
### MAUI .NET 8 Users
ReactiveUI now requires .NET 9 for MAUI platforms. Update your projects to:
- `net9.0-android` (was `net8.0-android`)
- `net9.0-ios` (was `net8.0-ios`)
- `net9.0-maccatalyst` (was `net8.0-maccatalyst`)
- `net9.0-windows` (was `net8.0-windows`)
Note: Non-MAUI `net8.0` library targets remain fully supported.
This is how we use the donations:
* Allow the core team to work on ReactiveUI
* Thank contributors if they invested a large amount of time in contributing
* Support projects in the ecosystem
## Support
If you have a question, please see if any discussions in our [GitHub issues](https://github.com/reactiveui/ReactiveUI/issues) or [Stack Overflow](https://stackoverflow.com/questions/tagged/reactiveui) have already answered it.
If you want to discuss something or just need help, here is our [Slack room](https://reactiveui.net/slack), where there are always individuals looking to help out!
Please do not open GitHub issues for support requests.
## Contribute
ReactiveUI is developed under an OSI-approved open source license, making it freely usable and distributable, even for commercial use.
If you want to submit pull requests please first open a [GitHub issue](https://github.com/reactiveui/ReactiveUI/issues/new/choose) to discuss. We are first time PR contributors friendly.
See [Contribution Guidelines](https://www.reactiveui.net/contribute/) for further information how to contribute changes.
## Core Team