Skip to content

Commit

Permalink
Released v1.2.1, see changelog
Browse files Browse the repository at this point in the history
  • Loading branch information
mysteryx93 committed May 29, 2022
1 parent c1ce590 commit dd5cef0
Show file tree
Hide file tree
Showing 157 changed files with 492 additions and 6,040 deletions.
16 changes: 16 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,22 @@

All notable changes to this project will be documented in this file.

## 1.2.1 - 2022-05-29

Made the library more friendly for unit tests. One area that caused trouble is the creation of the
dialog view model `new MyDialogViewModel()`. If it has dependencies, you might use `Locator.MyDialogViewModel`,
but then that's not unit-test friendly.

As a solution, you will now create the view model using
`IDialogService.CreateViewModel<T>`.
It will call a ViewModelFactory function set in the DialogService constructor.

- Added `viewModelFactory` parameter to DialogService constructor
- Moved `viewLocator` constructor parameter from DialogService to DialogManager
- Updated all demos to use correct constructor parameters
- Updated all demos to use `IDialogService.CreateViewModel<T>`
- Added unit test sample project: `Demo.ModalDialog.Tests`

## 1.2.0 - 2022-05-28

- Logging is now done using standard `ILogger<DialogService>` interface. See doc
Expand Down
46 changes: 46 additions & 0 deletions MvvmDialogs.sln
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo.OpenFolderDialog", "sa
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo.CustomOpenFolderDialog", "samples\Avalonia\Demo.CustomOpenFolderDialog\Demo.CustomOpenFolderDialog.csproj", "{F01E685B-AC00-44ED-AF05-D96633B1E31A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Demo.ModalDialog.Tests", "samples\Avalonia\Demo.ModalDialog.Tests\Demo.ModalDialog.Tests.csproj", "{20C76953-78BF-493C-BF15-AB67DC620D82}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Demo.ModalDialog.Tests", "samples\Wpf\Demo.ModalDialog.Tests\Demo.ModalDialog.Tests.csproj", "{743EA3B7-51AE-4055-AA6B-A0232142F0C6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -751,6 +755,46 @@ Global
{F01E685B-AC00-44ED-AF05-D96633B1E31A}.Release|x64.Build.0 = Release|Any CPU
{F01E685B-AC00-44ED-AF05-D96633B1E31A}.Release|x86.ActiveCfg = Release|Any CPU
{F01E685B-AC00-44ED-AF05-D96633B1E31A}.Release|x86.Build.0 = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|ARM.ActiveCfg = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|ARM.Build.0 = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|ARM64.Build.0 = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|x64.ActiveCfg = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|x64.Build.0 = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|x86.ActiveCfg = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Debug|x86.Build.0 = Debug|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|Any CPU.Build.0 = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|ARM.ActiveCfg = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|ARM.Build.0 = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|ARM64.ActiveCfg = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|ARM64.Build.0 = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|x64.ActiveCfg = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|x64.Build.0 = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|x86.ActiveCfg = Release|Any CPU
{20C76953-78BF-493C-BF15-AB67DC620D82}.Release|x86.Build.0 = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|ARM.ActiveCfg = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|ARM.Build.0 = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|ARM64.ActiveCfg = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|ARM64.Build.0 = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|x64.ActiveCfg = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|x64.Build.0 = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|x86.ActiveCfg = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Debug|x86.Build.0 = Debug|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|Any CPU.Build.0 = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|ARM.ActiveCfg = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|ARM.Build.0 = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|ARM64.ActiveCfg = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|ARM64.Build.0 = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|x64.ActiveCfg = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|x64.Build.0 = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|x86.ActiveCfg = Release|Any CPU
{743EA3B7-51AE-4055-AA6B-A0232142F0C6}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -791,6 +835,8 @@ Global
{3562249C-10F4-42C8-BD49-CCF26C51ED8C} = {0A8EF671-0277-4F7A-B03D-C6E227020E86}
{2EBBA423-F963-4CF4-9355-A5B2CE7C699A} = {0CAFC532-721B-4CD0-B4CA-AF10F07BFD76}
{F01E685B-AC00-44ED-AF05-D96633B1E31A} = {0CAFC532-721B-4CD0-B4CA-AF10F07BFD76}
{20C76953-78BF-493C-BF15-AB67DC620D82} = {0CAFC532-721B-4CD0-B4CA-AF10F07BFD76}
{743EA3B7-51AE-4055-AA6B-A0232142F0C6} = {0A8EF671-0277-4F7A-B03D-C6E227020E86}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {983A22B3-AE5B-4B67-A798-F6A6697B82A8}
Expand Down
35 changes: 26 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ public class ModalDialogTabContentViewModel : INotifyPropertyChanged

private async Task ShowDialogAsync()
{
var dialogViewModel = new AddTextDialogViewModel();
var dialogViewModel = dialogService.CreateViewModel<AddTextDialogViewModel>();

bool? success = await dialogService.ShowDialogAsync(this, dialogViewModel);
if (success == true)
Expand All @@ -90,7 +90,8 @@ public static class DialogExtensions
{
dialog.CheckNotNull(nameof(dialog)); // using HanumanInstitute.Validators
var viewModel = ViewModelLocator.SelectPreset.Load(false);
var viewModel = dialog.CreateViewModel<SelectPresetViewModel>();
viewModel.Load(false);
var result = await dialog.ShowDialogAsync(ownerViewModel, viewModel).ConfigureAwait(true);
return result == true ? viewModel.SelectedItem : null;
}
Expand All @@ -99,13 +100,16 @@ public static class DialogExtensions
{
dialog.CheckNotNull(nameof(dialog));

var viewModel = ViewModelLocator.SelectPreset.Load(true);
var viewModel = dialog.CreateViewModel<SelectPresetViewModel>();
viewModel.Load(true);
var result = await dialog.ShowDialogAsync(ownerViewModel, viewModel).ConfigureAwait(true);
return result == true ? viewModel.PresetName : null;
}
}
```

To make your code testable, use `IDialogService.CreateViewModel<T>` to create your dialog view models. It will call `viewModelFactory` function that you set in `DialogService` constructor.

Then the usage is super *sexy*! (a long way from ReactiveUI [Interactions](https://www.reactiveui.net/docs/handbook/interactions/)...)

```c#
Expand Down Expand Up @@ -143,7 +147,9 @@ public partial class App
{
Ioc.Default.ConfigureServices(
new ServiceCollection()
.AddSingleton<IDialogService>(new DialogService(viewLocator: new ViewLocator()))
.AddSingleton<IDialogService>(new DialogService(
new DialogManager(viewLocator: new ViewLocator()),
viewModelFactory: x => Ioc.Default.GetService(x)))
.AddTransient<MainWindowViewModel>()
.BuildServiceProvider());
}
Expand All @@ -162,7 +168,7 @@ namespace MyDemoApp;
public class ViewLocator : ViewLocatorBase
{
/// <inheritdoc />
protected override string GetViewName(object viewModel) => viewModel.GetType().FullName!.Replace("ViewModel", "");
protected override string GetViewName(object viewModel) => viewModel.GetType().FullName!.Replace("ViewModel", "View");
}
```

Expand All @@ -173,7 +179,7 @@ it is recommended to use the async methods.
```c#
private bool? ShowDialog()
{
var dialogViewModel = new AddTextDialogViewModel();
var dialogViewModel = dialogService.CreateViewModel<AddTextDialogViewModel>();
return dialogService.ShowDialog(this, dialogViewModel); // Sync
}
}
Expand Down Expand Up @@ -213,7 +219,9 @@ public class App : Application
AvaloniaXamlLoader.Load(this);

var build = Locator.CurrentMutable;
build.RegisterLazySingleton(() => (IDialogService)new DialogService(viewLocator: new ViewLocator()));
build.RegisterLazySingleton(() => (IDialogService)new DialogService(
new DialogManager(viewLocator: new ViewLocator()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.Register<CurrentTimeDialogViewModel>();
Expand All @@ -237,8 +245,6 @@ public class ViewLocator : ViewLocatorBase
}
```



#### AppDialogSettings

For the moment there are no application-wide settings used for Avalonia.
Expand Down Expand Up @@ -351,6 +357,17 @@ new DialogService(dialogManager: dialogManagerMock.Object);

From here you can configure your mock to validate calls to `Show`, `ShowDialogAsync` and `ShowFrameworkDialogAsync`.

One problem you may face with unit testing dialogs is with the creation of your view model if it has dependencies.

In the `DialogService` constructor, pass `viewModelFactory`

new DialogService(viewModelFactory: x => Locator.Current.GetService(x))

Create your view model instances using `IDialogService.CreateViewModel<T>`

var vm = dialogService.CreateViewModel<MyDialogViewModel>();

*This* can easily be mocked. [Here's a sample unit test](samples/Avalonia/Demo.ModalDialog.Tests/MainWindowViewModelTests.cs)

## Logging

Expand Down
6 changes: 4 additions & 2 deletions samples/Avalonia/Demo.ActivateNonModalDialog/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddFilter(logLevel => true).AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
new DialogManager(logger: loggerFactory.CreateLogger<DialogManager>()),
viewLocator: new ViewLocator()));
new DialogManager(
viewLocator: new ViewLocator(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.Register<CurrentTimeDialogViewModel>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public MainWindowViewModel(IDialogService dialogService)

public void Show()
{
DialogViewModel = App.CurrentTimeDialog;
DialogViewModel = dialogService.CreateViewModel<CurrentTimeDialogViewModel>();
dialogService.Show(this, DialogViewModel);
}

Expand Down
6 changes: 4 additions & 2 deletions samples/Avalonia/Demo.CloseNonModalDialog/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
new DialogManager(logger: loggerFactory.CreateLogger<DialogManager>()),
viewLocator: new ViewLocator()));
new DialogManager(
viewLocator: new ViewLocator(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.Register<CurrentTimeDialogViewModel>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ public MainWindowViewModel(IDialogService dialogService)

private void Show()
{
DialogViewModel = App.CurrentTimeDialog;
DialogViewModel = dialogService.CreateViewModel<CurrentTimeDialogViewModel>();
dialogService.Show(this, DialogViewModel);
}

Expand Down
8 changes: 6 additions & 2 deletions samples/Avalonia/Demo.CustomDialogTypeLocator/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Demo.CustomDialogTypeLocator.ComponentA;
using HanumanInstitute.MvvmDialogs;
using HanumanInstitute.MvvmDialogs.Avalonia;
using Microsoft.Extensions.Logging;
Expand All @@ -19,10 +20,13 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddFilter(logLevel => true).AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
new DialogManager(logger: loggerFactory.CreateLogger<DialogManager>()),
viewLocator: new ViewLocator()));
new DialogManager(
viewLocator: new ViewLocator(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowVM>();
SplatRegistrations.Register<MyDialogVM>();
SplatRegistrations.SetupIOC();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public MainWindowVM(IDialogService dialogService)

private async Task ShowDialogAsync()
{
var dialogViewModel = new MyDialogVM();
var dialogViewModel = dialogService.CreateViewModel<MyDialogVM>();
await dialogService.ShowDialogAsync(this, dialogViewModel);
}
}
7 changes: 5 additions & 2 deletions samples/Avalonia/Demo.CustomMessageBox/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddFilter(logLevel => true).AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
dialogManager: new DialogManager(new CustomFrameworkDialogFactory(), logger: loggerFactory.CreateLogger<DialogManager>()),
new ViewLocator()));
dialogManager: new DialogManager(
viewLocator: new ViewLocator(),
frameworkDialogFactory: new CustomFrameworkDialogFactory(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.SetupIOC();
Expand Down
7 changes: 5 additions & 2 deletions samples/Avalonia/Demo.CustomOpenFileDialog/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddFilter(logLevel => true).AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
dialogManager: new DialogManager(new CustomFrameworkDialogFactory(), logger: loggerFactory.CreateLogger<DialogManager>()),
new ViewLocator()));
dialogManager: new DialogManager(
viewLocator: new ViewLocator(),
frameworkDialogFactory: new CustomFrameworkDialogFactory(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.SetupIOC();
Expand Down
7 changes: 5 additions & 2 deletions samples/Avalonia/Demo.CustomOpenFolderDialog/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddFilter(logLevel => true).AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
dialogManager: new DialogManager(new CustomFrameworkDialogFactory(), logger: loggerFactory.CreateLogger<DialogManager>()),
new ViewLocator()));
dialogManager: new DialogManager(
viewLocator: new ViewLocator(),
frameworkDialogFactory: new CustomFrameworkDialogFactory(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.SetupIOC();
Expand Down
7 changes: 5 additions & 2 deletions samples/Avalonia/Demo.CustomSaveFileDialog/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,11 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddFilter(logLevel => true).AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
dialogManager: new DialogManager(new CustomFrameworkDialogFactory(), logger: loggerFactory.CreateLogger<DialogManager>()),
new ViewLocator()));
dialogManager: new DialogManager(
viewLocator: new ViewLocator(),
frameworkDialogFactory: new CustomFrameworkDialogFactory(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.SetupIOC();
Expand Down
6 changes: 4 additions & 2 deletions samples/Avalonia/Demo.MessageBox/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddFilter(logLevel => true).AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
new DialogManager(logger: loggerFactory.CreateLogger<DialogManager>()),
viewLocator: new ViewLocator()));
new DialogManager(
viewLocator: new ViewLocator(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.SetupIOC();
Expand Down
6 changes: 4 additions & 2 deletions samples/Avalonia/Demo.ModalCustomDialog/App.axaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@ public override void Initialize()
var loggerFactory = LoggerFactory.Create(builder => builder.AddFilter(logLevel => true).AddDebug());

build.RegisterLazySingleton(() => (IDialogService)new DialogService(
new DialogManager(logger: loggerFactory.CreateLogger<DialogManager>()),
viewLocator: new ViewLocator()));
new DialogManager(
viewLocator: new ViewLocator(),
logger: loggerFactory.CreateLogger<DialogManager>()),
viewModelFactory: x => Locator.Current.GetService(x)));

SplatRegistrations.Register<MainWindowViewModel>();
SplatRegistrations.Register<AddTextCustomDialogViewModel>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ private Task ExplicitShowDialog() =>

private async Task ShowDialogAsync(Func<AddTextCustomDialogViewModel, Task<bool?>> showDialogAsync)
{
var dialogViewModel = new AddTextCustomDialogViewModel();
var dialogViewModel = dialogService.CreateViewModel<AddTextCustomDialogViewModel>();

var success = await showDialogAsync(dialogViewModel).ConfigureAwait(true);
if (success == true)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>

<IsPackable>false</IsPackable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Avalonia" Version="0.10.14" />
<PackageReference Include="Avalonia.ReactiveUI" Version="0.10.14" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.11.0" />
<PackageReference Include="Moq" Version="4.18.1" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
<PackageReference Include="coverlet.collector" Version="3.1.0">
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\..\src\MvvmDialogs.Avalonia\MvvmDialogs.Avalonia.csproj" />
<ProjectReference Include="..\Demo.ModalDialog\Demo.ModalDialog.csproj" />
</ItemGroup>

</Project>
Loading

0 comments on commit dd5cef0

Please sign in to comment.