eXpandFramework / eXpand

DevExpress XAF (eXpressApp) extension framework. ๐—น๐—ถ๐—ป๐—ธ๐—ฒ๐—ฑ๐—ถ๐—ป.๐—ฒ๐˜…๐—ฝ๐—ฎ๐—ป๐—ฑ๐—ณ๐—ฟ๐—ฎ๐—บ๐—ฒ๐˜„๐—ผ๐—ฟ๐—ธ.๐—ฐ๐—ผ๐—บ, ๐˜†๐—ผ๐˜‚๐˜๐˜‚๐—ฏ๐—ฒ.๐—ฒ๐˜…๐—ฝ๐—ฎ๐—ป๐—ฑ๐—ณ๐—ฟ๐—ฎ๐—บ๐—ฒ๐˜„๐—ผ๐—ฟ๐—ธ.๐—ฐ๐—ผ๐—บ and ๐˜๐˜„๐—ถ๐˜๐˜๐—ฒ๐—ฟ @๐—ฒ๐˜…๐—ฝ๐—ฎ๐—ป๐—ฑ๐—ณ๐—ฟ๐—ฎ๐—บ๐—ฒ๐˜„๐—ผ๐—ฟ๐—ธ and or simply ๐—ฆ๐˜๐—ฎ๐—ฟ/๐˜„๐—ฎ๐˜๐—ฐ๐—ต this repository and get notified from ๐—š๐—ถ๐˜๐—›๐˜‚๐—ฏ
http://expand.expandframework.com
Microsoft Public License
220 stars 114 forks source link

AccessViolationException (from Harmony.Patch()) when running DX's standalone ModelEditor #927

Closed krombipils closed 2 years ago

krombipils commented 2 years ago

Since the upgrade to DevExpress 21.2.7 it is no longer possible to use DevExpress' standalone ModelEditor in a solution containing a Reactive.XAF module (e.g. HideToolBarModule). When harmony.Patch() is called in the static constructor of ReactiveModuleBase, an AccessViolationException is thrown.

I think this is somehow related to the update to net6.0 in the ModelEditor (see t1051661). In a solution without any Reactive.XAF modules the ModelEditor is working fine. In 21.2.5 (before the ModelEditor was updated) everything is fine too.

I attached a screencast demonstrating the problem and also my simple test solution. DXApplication2.zip

apobekiaris commented 2 years ago

the case looks enviromental and not able to repro it locally, however i removing patching instructions when designtim

image

apobekiaris commented 2 years ago

The pre-release 4.212.9.0 in the Reactive.XAF lab branch includes commits that relate to this task:

To minimize version conflicts we recommend that you use the Xpand.XAF.Core.All, Xpand.XAF.Win.All, Xpand.XAF.Web.All packages. Doing so, all packages will be at your disposal and .NET will add a dependecy only to those packages that you actually use and not to all (see the Modules installation-registrations youtube video).

Released packages: Xpand.Extensions v.4.212.9
Xpand.Extensions.Blazor v.4.212.9
Xpand.Extensions.Mono.Cecil v.4.212.9
Xpand.Extensions.Office.Cloud v.4.212.9
Xpand.Extensions.Office.Cloud.Google.Blazor v.4.212.9
Xpand.Extensions.Reactive v.4.212.9
Xpand.Extensions.XAF v.4.212.9
Xpand.Extensions.XAF.Xpo v.4.212.9
Xpand.TestsLib v.4.212.9
Xpand.TestsLib.Blazor v.4.212.9
Xpand.TestsLib.Common v.4.212.9
Xpand.TestsLib.EasyTest v.4.212.9
Xpand.TestsLib.Net461 v.4.212.9
Xpand.VersionConverter v.4.212.9
Xpand.XAF.Core.All v.4.212.9
Xpand.XAF.Modules.AutoCommit v.4.212.9
Xpand.XAF.Modules.Blazor v.4.212.9
Xpand.XAF.Modules.BulkObjectUpdate v.4.212.9
Xpand.XAF.Modules.CloneMemberValue v.4.212.9
Xpand.XAF.Modules.CloneModelView v.4.212.9
Xpand.XAF.Modules.Email v.4.212.9
Xpand.XAF.Modules.GridListEditor v.4.212.9
Xpand.XAF.Modules.HideToolBar v.4.212.9
Xpand.XAF.Modules.JobScheduler.Hangfire v.4.212.9
Xpand.XAF.Modules.JobScheduler.Notification v.4.212.9
Xpand.XAF.Modules.MasterDetail v.4.212.9
Xpand.XAF.Modules.ModelMapper v.4.212.9
Xpand.XAF.Modules.ModelViewInheritance v.4.212.9
Xpand.XAF.Modules.Office.Cloud.Google v.4.212.9
Xpand.XAF.Modules.Office.Cloud.Google.Calendar v.4.212.9
Xpand.XAF.Modules.Office.Cloud.Google.Tasks v.4.212.9
Xpand.XAF.Modules.Office.Cloud.Microsoft v.4.212.9
Xpand.XAF.Modules.Office.Cloud.Microsoft.Calendar v.4.212.9
Xpand.XAF.Modules.Office.Cloud.Microsoft.Todo v.4.212.9
Xpand.XAF.Modules.Office.DocumentStyleManager v.4.212.9
Xpand.XAF.Modules.OneView v.4.212.9
Xpand.XAF.Modules.PositionInListView v.4.212.9
Xpand.XAF.Modules.ProgressBarViewItem v.4.212.9
Xpand.XAF.Modules.RazorView v.4.212.9
Xpand.XAF.Modules.Reactive v.4.212.9
Xpand.XAF.Modules.Reactive.Logger v.4.212.9
Xpand.XAF.Modules.Reactive.Logger.Client.Win v.4.212.9
Xpand.XAF.Modules.Reactive.Logger.Hub v.4.212.9
Xpand.XAF.Modules.Reactive.Rest v.4.212.9
Xpand.XAF.Modules.RefreshView v.4.212.9
Xpand.XAF.Modules.SequenceGenerator v.4.212.9
Xpand.XAF.Modules.SuppressConfirmation v.4.212.9
Xpand.XAF.Modules.TenantManager v.4.212.9
Xpand.XAF.Modules.ViewEditMode v.4.212.9
Xpand.XAF.Modules.ViewItemValue v.4.212.9
Xpand.XAF.Modules.ViewWizard v.4.212.9
Xpand.XAF.Modules.Windows v.4.212.9
Xpand.XAF.Web.All v.4.212.9
Xpand.XAF.Win.All v.4.212.9

Please update the related Nuget packages and test if issues is addressed. These are nightly nuget packages available only from our NugetServer.

If you do not use these packages directly but through a module of the main eXpandFramework project, please wait for the bot to notify you again when integration is finished or update the related packages manually.

Thanks a lot for your contribution.

krombipils commented 2 years ago

the case looks enviromental and not able to repro it locally

Have you tried to repro it by running the standalone ModelEditor (DevExpress.ExpressApp.ModelEditor.v21.2.exe)? In the screenshot you are using the VS-integrated ModelEditor.

I can repro the problem on multiple machines/setups. However, your patch fixes the problem. Thank you!

apobekiaris commented 2 years ago

not tried the standalone editor but there is no patching now

apobekiaris commented 2 years ago

have you noticed any issues since this patch? I want to attempt restoring one design time, which is required from the ModelViewInheritance, so if sommething related please ping me to think of something else.

krombipils commented 2 years ago

I'm now using 22.1 and the net6.0 version of the ModelEditor. Everything is fine in this version when your designtime check is active. I'm also using harmony in one of my own modules and use the same if (DesignerOnlyCalculator.IsRunTime) {...} check. For a test I removed the check and now the same AccessViolationException is back again

apobekiaris commented 2 years ago

do u use my version of harmony or the officiall nuget package? if not using the official can you try it? maybe is time we upagrade our custom build. official does not offer a netstandard2 target nor is singed thats the reason we have a custom one

krombipils commented 2 years ago

I just added your Xpand.Patcher" Version="2.0.31" to a fresh XAF solution and called harmony.Patch() in a module. The AccessViolationException is thrown, when trying to run the standalone ModelEditor. Then I replaced Xpand.Patcher with Lib.Harmony" Version="2.2.1" and the exception is still thrown. So I think upgrading the your custom harmony build won't help. Very annoying...

apobekiaris commented 2 years ago

hmm somehow i was not clear anough, please use the harmony nuget and not my package

https://www.nuget.org/packages/lib.harmony

krombipils commented 2 years ago

You were clear, but maybe I was not clear enogh. I tried both version of harmony, yours (Xpand.Patcher) and the official nuget version 2.2.1. And the problem occurs with both version even in a small demo project without any other eXpand modules

apobekiaris commented 2 years ago

thnks for clarifying, I will not apply any designtime patching, VS designers madness wil never get better I guess. Anyway I will revisit again in the future to see if Harmony .NET6 version is any better

krombipils commented 2 years ago

Hi, I think something got wrong in your Move PatchWith to Xpand.Extensions.XAF assembly commit. I'm currently evaluating the lab build 4.221.1.2 and in this version, the exception is back again, when running the standalone modeleditor. E.g. the ModelViewInheritanceService uses Xpand.Extensions.Harmony.HarmonyExtensions.PatchWith(..) and in this line harmony.Patch() is always called (without a DesignerOnlyCalculator.IsRunTime check). I guess you wanted to use your new patch extension?!

apobekiaris commented 2 years ago

yeah true, we have tests for the package but they testing the runtime only so easy to miss, thnks

apobekiaris commented 2 years ago

The pre-release 4.221.1.0 in the Reactive.XAF lab branch includes commits that relate to this task:

To minimize version conflicts we recommend that you use the Xpand.XAF.Core.All, Xpand.XAF.Win.All, Xpand.XAF.Web.All packages. Doing so, all packages will be at your disposal and .NET will add a dependecy only to those packages that you actually use and not to all (see the Modules installation-registrations youtube video).

Released packages: Xpand.Extensions v.4.221.1
Xpand.Extensions.Blazor v.4.221.1
Xpand.Extensions.Mono.Cecil v.4.221.1
Xpand.Extensions.Office.Cloud v.4.221.1
Xpand.Extensions.Office.Cloud.Google.Blazor v.4.221.1
Xpand.Extensions.Reactive v.4.221.1
Xpand.Extensions.XAF v.4.221.1
Xpand.Extensions.XAF.Xpo v.4.221.1
Xpand.TestsLib v.4.221.1
Xpand.TestsLib.Blazor v.4.221.1
Xpand.TestsLib.Common v.4.221.1
Xpand.TestsLib.EasyTest v.4.221.1
Xpand.VersionConverter v.4.221.1
Xpand.XAF.Core.All v.4.221.1
Xpand.XAF.Modules.AutoCommit v.4.221.1
Xpand.XAF.Modules.Blazor v.4.221.1
Xpand.XAF.Modules.BulkObjectUpdate v.4.221.1
Xpand.XAF.Modules.CloneMemberValue v.4.221.1
Xpand.XAF.Modules.CloneModelView v.4.221.1
Xpand.XAF.Modules.Email v.4.221.1
Xpand.XAF.Modules.GridListEditor v.4.221.1
Xpand.XAF.Modules.HideToolBar v.4.221.1
Xpand.XAF.Modules.JobScheduler.Hangfire v.4.221.1
Xpand.XAF.Modules.JobScheduler.Notification v.4.221.1
Xpand.XAF.Modules.MasterDetail v.4.221.1
Xpand.XAF.Modules.ModelMapper v.4.221.1
Xpand.XAF.Modules.ModelViewInheritance v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Google v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Google.Calendar v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Google.Tasks v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Microsoft v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Microsoft.Calendar v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Microsoft.Todo v.4.221.1
Xpand.XAF.Modules.Office.DocumentStyleManager v.4.221.1
Xpand.XAF.Modules.OneView v.4.221.1
Xpand.XAF.Modules.PositionInListView v.4.221.1
Xpand.XAF.Modules.ProgressBarViewItem v.4.221.1
Xpand.XAF.Modules.RazorView v.4.221.1
Xpand.XAF.Modules.Reactive v.4.221.1
Xpand.XAF.Modules.Reactive.Logger v.4.221.1
Xpand.XAF.Modules.Reactive.Logger.Client.Win v.4.221.1
Xpand.XAF.Modules.Reactive.Logger.Hub v.4.221.1
Xpand.XAF.Modules.Reactive.Rest v.4.221.1
Xpand.XAF.Modules.RefreshView v.4.221.1
Xpand.XAF.Modules.SequenceGenerator v.4.221.1
Xpand.XAF.Modules.SuppressConfirmation v.4.221.1
Xpand.XAF.Modules.TenantManager v.4.221.1
Xpand.XAF.Modules.ViewEditMode v.4.221.1
Xpand.XAF.Modules.ViewItemValue v.4.221.1
Xpand.XAF.Modules.ViewWizard v.4.221.1
Xpand.XAF.Modules.Windows v.4.221.1
Xpand.XAF.Web.All v.4.221.1
Xpand.XAF.Win.All v.4.221.1

Please update the related Nuget packages and test if issues is addressed. These are nightly nuget packages available only from our NugetServer.

If you do not use these packages directly but through a module of the main eXpandFramework project, please wait for the bot to notify you again when integration is finished or update the related packages manually.

Thanks a lot for your contribution.

krombipils commented 2 years ago

I think I should build Reactive.XAF on my own (and send PRs in the future). Unfortunately I cannot build it at the moment: paket restore fails because DevExpress.SpellChecker.Core cannot be restored.

The package DevExpress.SpellChecker.Core 22.1.3 can't be found in C:\Program. (The directory doesn't exist.) Please check the feed definition in your paket.dependencies file.

Do you any clue where this come from? Actually DevExpress.SpellChecker.Core does not exist in the official DevExpress nuget feed. In paket.dependencies there is a source C:\Program Files (x86)\DevExpress 22.1\Components\System\Components\Packages. This is wrong, DX sources are now in C:\Program Files, not C:\Program Files (x86) (no idea where the wrong path comes from), but even if a change it to source C:\Program Files\DevExpress 22.1\Components\System\Components\Packages. or source "C:\Program Files\DevExpress 22.1\Components\System\Components\Packages" it does not work.

apobekiaris commented 2 years ago

it is about the space in the source and nothing else.

https://github.com/eXpandFramework/Reactive.XAF/blob/master/paket.dependencies#L1

the build pipeline has this line that uses instead en Enviromental variable. But in anycase you can either attempt to quote a correct path, e.g. install dx in you c:\dx or replace it with yout own remote nuget feed.

apobekiaris commented 2 years ago

y

you can also just use a symbollink

new-item -ItemType SymbolicLink -Value "C:\Program Files\DevExpress 22.1\Components\System\Components\packages\" -Name Lastest -Path C:\DX\

and replace the source with c:\dx\latest

krombipils commented 2 years ago

Thank you. I used the symlink approach and restore is working fine now. But now it stops at

at Read-MSBuildSolutionFile<Process>, C:\Program Files\WindowsPowerShell\Modules\XpandPwsh\1.212.0.4\public\DotNet\Read-MSBuildSolutionFile.ps1: line 15 at GetConfiguration, C:\repos\Reactive.XAF\build\BuildDevExpress.XAF.ps1: line 151 at <ScriptBlock>, C:\repos\Reactive.XAF\build\BuildDevExpress.XAF.ps1: line 178 at Invoke-Script<Process>, C:\Program Files\WindowsPowerShell\Modules\XpandPwsh\1.212.0.4\public\System\Invoke-Script.ps1: line 23 at <ScriptBlock>, C:\repos\Reactive.XAF\build\BuildDevExpress.XAF.ps1: line 173 at Invoke-Task, C:\Users\andre\Documents\WindowsPowerShell\Modules\psake\4.9.0\public\Invoke-Task.ps1: line 108 at Invoke-Task, C:\Users\andre\Documents\WindowsPowerShell\Modules\psake\4.9.0\public\Invoke-Task.ps1: line 142 at <ScriptBlock>, C:\Users\andre\Documents\WindowsPowerShell\Modules\psake\4.9.0\public\Invoke-psake.ps1: line 303 at ExecuteInBuildFileScope, C:\Users\andre\Documents\WindowsPowerShell\Modules\psake\4.9.0\private\ExecuteInBuildFileScope.ps1: line 57 at Invoke-psake, C:\Users\andre\Documents\WindowsPowerShell\Modules\psake\4.9.0\public\Invoke-psake.ps1: line 258 at <ScriptBlock>, C:\repos\Reactive.XAF\go.ps1: line 36 at <ScriptBlock>, <No file>: line 1 Error: 26.07.2022 10:20:24: At C:\repos\Reactive.XAF\build\BuildDevExpress.XAF.ps1:151 char:15 + $match = (Read-MSBuildSolutionFile $solution).SolutionConfigurati ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [<<==>>] Exception: Unable to find type [Microsoft.Build.Construction.SolutionFile].

I also found the same error at stackoverflow, but no solution. Any hint?

apobekiaris commented 2 years ago

does this work in a powershell core prompt

Read-MSBuildSolutionFile C:\Work\Reactive.XAF\src\Tests\Tests.sln

ProjectsInOrder                                                                                               ProjectsB
                                                                                                              yGuid
---------------                                                                                               ---------
{.paket, Xpand.XAF.Modules.AutoCommit, Xpand.XAF.Modules.CloneMemberValue, Xpand.XAF.Modules.CloneModelViewโ€ฆ} {[{60EFBโ€ฆ

I also wonder why u try to run the full build, do you plan to host your own pipe in Azure or somewhere. Why just dont you try to build the Extensions.sln and the Modules.sln. I mean the build pipeline takes care a ton of stuff that most probably are for a distribution and there is not much value if you solo user

apobekiaris commented 2 years ago

give me some time I will push a script to make everyboidy life easier and avoid to go buildpipeline.ps1, it is too much unless you want to support your own AzDevOps pipeline and publish/distribute the universe

krombipils commented 2 years ago

does this work in a powershell core prompt

Does not work on my side.

PS C:\repos\Reactive.XAF\src\Modules> Read-MSBuildSolutionFile C:\repos\Reactive.XAF\src\Tests\Tests.sln
Unable to find type [Microsoft.Build.Construction.SolutionFile].
At C:\Program Files\WindowsPowerShell\Modules\XpandPwsh\1.212.0.4\public\DotNet\Read-MSBuildSolutionFile.ps1:15 char:9
+         [Microsoft.Build.Construction.SolutionFile]::Parse([System.IO ...
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (Microsoft.Build...on.SolutionFile:TypeName) [], RuntimeException
    + FullyQualifiedErrorId : TypeNotFound

I also wonder why u try to run the full build

Because I didn't know, that it is possible to build the 2 solutions without the build script ;-) Running a dotnet build Extensions.sln followed by dotnet build Modules.sln is working fine! Thank you

apobekiaris commented 2 years ago

Does not work on my side.

I do not think we should spent more time debugging the universe. The buildpipeline is desinged for AzDevops and works fine there.

Because I didn't know, that it is possible to build the 2 solutions without the build script ;-)

I will detail all steps in a script that can do most of the work for you.

apobekiaris commented 2 years ago

_QuickBuild.zip attaching my script, usage:

$p=@{
    DXApiFeed="C:\dx\Latest"
    SourcePath="c:\work\rx.xaf"
    GitHubUserName="apobekiaris"
    GitHubToken="$env:GithubToken"
    Force=$true
}
C:\Work\Reactive.XAF\Build\_QuickBuild.ps1 @p

i will invluced in the source under the Build root folder. Please test it and feel free to suggest additional features.

apobekiaris commented 2 years ago

hmm not work on an empty nuget cache folder will post an update shortly

apobekiaris commented 2 years ago

_QuickBuild.zip

apobekiaris commented 2 years ago

I tested this case and works as i describe it

https://github.com/eXpandFramework/eXpand/issues/941#issuecomment-1192535944

krombipils commented 2 years ago

Great work, thank you! Just a few comments: 1) I extracted the _quickbuild.ps1 into my c:\repos\reactive.xaf directory and excecuted it there. This does not work, because in line 56 Push-Location .\Reactive.XAF throws Cannot find path 'C:\repos\Reactive.XAF\Reactive.XAF'

2) I removed the if ($PSVersionTable.Psedition -ne "Core"){ check. I'm using Powershell Desktop Edition and everything seems to be fine

3) Modules.Office.Cloud.Google cannot be build (because it is not compatible with net6.0). No real problem, but the script errors with ScriptHalted At C:\Program Files\WindowsPowerShell\Modules\XpandPwsh\1.212.0.4\public\System\Approve-LastExitCode.ps1:14 char:13 I guess Modules.Office.Cloud.Google should be (temporarily) excluded from the build?!

apobekiaris commented 2 years ago

I extracted the _quickbuild.ps1 into my c:\repos\reactive.xaf directory and excecuted it there. This does not work, because in line 56 Push-Location .\Reactive.XAF throws Cannot find path 'C:\repos\Reactive.XAF\Reactive.XAF'

line 49 has Push-Location $SourcePath

so unless u did a SkipRepoClone it should work, but we need to call it again for it, i will modify it.

Modules.Office.Cloud.Google cannot be build (because it is not compatible with net6.0). No real problem, but the script errors with ScriptHalted At C:\Program Files\WindowsPowerShell\Modules\XpandPwsh\1.212.0.4\public\System\Approve-LastExitCode.ps1:14 char:13

yes but those modules target net61 and the script works fine on my enviroment, I am confused, maybe you did something?

apobekiaris commented 2 years ago

_QuickBuild.zip

has the fix and additional help comments on the top

apobekiaris commented 2 years ago

C:\Program Files\WindowsPowerShell\Modules\XpandPwsh\1.212.0.4\public\System\Approve-LastExitCode.ps1:14 char:13

see the full stack that is halt only

apobekiaris commented 2 years ago

Modules.Office.Cloud.Google

can u build manually? now you have restored paket? go to the same path as the csproj open powershell and write sxb and enter

krombipils commented 2 years ago

Sorry for bothering you. I did a fresh checkout and everything is fine now. I use SkipRepoClone therefore Cannot find path 'C:\repos\Reactive.XAF\Reactive.XAF' is still thrown (in line 69). I just removed it and everything is fine. Do you really need this line (can it be made conditionaly, if SkipRepoClone is set?) And I also think you could remove the check for Powershell Core, everything works with Powershell Desktop

apobekiaris commented 2 years ago

Cannot find path 'C:\repos\Reactive.XAF

fixed -> everything works with Powershell Desktop

converter to warning [Uploading _QuickBuild.zipโ€ฆ]()

krombipils commented 2 years ago

Perfect! quickbuild.ps1 from lab works like a charm!

apobekiaris commented 2 years ago

looking forward for your PR now that is so easy to debug and modify

krombipils commented 2 years ago

Sorry, but I think I cannot send a PR, because I don't really understand the intention of your 'Move PatchWith to Xpand.Extensions.XAF assembly' commit.

E.g. the newly added Xpand.Extensions.Harmony.HarmonyExtensions.PreFix calls the newly added Xpand.Extensions.Harmony.PatchWith. This extension method has our check for duplicate patching, but it does no longer have the onlyRuntime check (therefore it fails in standalone model editor).

In contrast to this the newly added Xpand.Extensions.XAF.Harmony.HarmonyExtensions.PreFix has a onlyRuntime check/parameter, but this method might apply the patch multiple times, because there is no longer a 'PatchedMethods' check. Am I misunderstanding this somehow?

apobekiaris commented 2 years ago

The pre-release 4.221.1.0 in the Reactive.XAF lab branch includes commits that relate to this task:

To minimize version conflicts we recommend that you use the Xpand.XAF.Core.All, Xpand.XAF.Win.All, Xpand.XAF.Web.All packages. Doing so, all packages will be at your disposal and .NET will add a dependecy only to those packages that you actually use and not to all (see the Modules installation-registrations youtube video).

Released packages: Xpand.Extensions v.4.221.1
Xpand.Extensions.Blazor v.4.221.1
Xpand.Extensions.Mono.Cecil v.4.221.1
Xpand.Extensions.Office.Cloud v.4.221.1
Xpand.Extensions.Office.Cloud.Google.Blazor v.4.221.1
Xpand.Extensions.Reactive v.4.221.1
Xpand.Extensions.XAF v.4.221.1
Xpand.Extensions.XAF.Xpo v.4.221.1
Xpand.TestsLib v.4.221.1
Xpand.TestsLib.Blazor v.4.221.1
Xpand.TestsLib.Common v.4.221.1
Xpand.TestsLib.EasyTest v.4.221.1
Xpand.VersionConverter v.4.221.1
Xpand.XAF.Core.All v.4.221.1
Xpand.XAF.Modules.AutoCommit v.4.221.1
Xpand.XAF.Modules.Blazor v.4.221.1
Xpand.XAF.Modules.BulkObjectUpdate v.4.221.1
Xpand.XAF.Modules.CloneMemberValue v.4.221.1
Xpand.XAF.Modules.CloneModelView v.4.221.1
Xpand.XAF.Modules.Email v.4.221.1
Xpand.XAF.Modules.GridListEditor v.4.221.1
Xpand.XAF.Modules.HideToolBar v.4.221.1
Xpand.XAF.Modules.JobScheduler.Hangfire v.4.221.1
Xpand.XAF.Modules.JobScheduler.Notification v.4.221.1
Xpand.XAF.Modules.MasterDetail v.4.221.1
Xpand.XAF.Modules.ModelMapper v.4.221.1
Xpand.XAF.Modules.ModelViewInheritance v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Google v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Google.Calendar v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Google.Tasks v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Microsoft v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Microsoft.Calendar v.4.221.1
Xpand.XAF.Modules.Office.Cloud.Microsoft.Todo v.4.221.1
Xpand.XAF.Modules.Office.DocumentStyleManager v.4.221.1
Xpand.XAF.Modules.OneView v.4.221.1
Xpand.XAF.Modules.PositionInListView v.4.221.1
Xpand.XAF.Modules.ProgressBarViewItem v.4.221.1
Xpand.XAF.Modules.RazorView v.4.221.1
Xpand.XAF.Modules.Reactive v.4.221.1
Xpand.XAF.Modules.Reactive.Logger v.4.221.1
Xpand.XAF.Modules.Reactive.Logger.Client.Win v.4.221.1
Xpand.XAF.Modules.Reactive.Logger.Hub v.4.221.1
Xpand.XAF.Modules.Reactive.Rest v.4.221.1
Xpand.XAF.Modules.RefreshView v.4.221.1
Xpand.XAF.Modules.SequenceGenerator v.4.221.1
Xpand.XAF.Modules.SuppressConfirmation v.4.221.1
Xpand.XAF.Modules.TenantManager v.4.221.1
Xpand.XAF.Modules.ViewEditMode v.4.221.1
Xpand.XAF.Modules.ViewItemValue v.4.221.1
Xpand.XAF.Modules.ViewWizard v.4.221.1
Xpand.XAF.Modules.Windows v.4.221.1
Xpand.XAF.Web.All v.4.221.1
Xpand.XAF.Win.All v.4.221.1

Please update the related Nuget packages and test if issues is addressed. These are nightly nuget packages available only from our NugetServer.

If you do not use these packages directly but through a module of the main eXpandFramework project, please wait for the bot to notify you again when integration is finished or update the related packages manually.

Thanks a lot for your contribution.