I installed the View Variants module to my XAF winforms 21.2.7 project and it "works on my machine"
When I deploy and run I get an error with the following call stack logged in eXpressAppFramework.Log
Type: InvalidCastException
Message: Unable to cast object of type 'ModelDetailView' to type 'DevExpress.ExpressApp.ViewVariantsModule.IModelViewVariants'.
Data: 0 entries
Stack trace:
at DevExpress.ExpressApp.ViewVariantsModule.ModelVariantsProvider.GetVariants(String rootVariantViewId)
at
DevExpress.ExpressApp.ViewVariantsModule.ReplaceViewIdHelper.factoryEvents_ViewCreating(Object sender, ViewCreatingEventArgs e)
at DevExpress.ExpressApp.ViewVariantsModule.XafApplicationViewsFactory.application_ViewCreating(Object sender, ViewCreatingEventArgs e)
at DevExpress.ExpressApp.XafApplication.OnViewCreating(ViewCreatingEventArgs args)
at DevExpress.ExpressApp.XafApplication.PrepareDetailViewCreatingEventArgs(IObjectSpace objectSpace, String detailViewID, Boolean isRoot, Object obj, Boolean isDelayedObjectLoading)
at DevExpress.ExpressApp.XafApplication.CreateDetailViewCore(IObjectSpace objectSpace, String detailViewID, Boolean isRoot, Object obj, Type objectType, Object objectKey, Boolean isDelayedObjectLoading, IEnumerable objectsToPrefetch)
at DevExpress.ExpressApp.XafApplication.CreateDetailView(IObjectSpace objectSpace, String detailViewID, Boolean isRoot, Object obj, Boolean isDelayedObjectLoading, IEnumerable objectsToPrefetch)
at DevExpress.ExpressApp.XafApplication.CreateDetailView(IObjectSpace objectSpace, String detailViewID, Boolean isRoot, Object obj)
at DevExpress.ExpressApp.XafApplication.CreateDetailView(IObjectSpace objectSpace, Object obj, View sourceView)
at DevExpress.ExpressApp.XafApplication.showLogonAction_OnCustomizePopupWindowParams(Object sender, CustomizePopupWindowParamsEventArgs args)
at DevExpress.ExpressApp.Actions.PopupWindowShowAction.GetPopupWindowParams()
at DevExpress.ExpressApp.Win.PopupWindowShowActionHelper.CreatePopupWindow(Boolean createAllControllers)
at DevExpress.ExpressApp.Win.WinApplication.DoLogon()
at DevExpress.ExpressApp.Win.WinApplication.Start()
InnerException is null
I can work around the issue by opening a pre-viewvariants copy of the application and logging in.
After that I can use the application successfully.
Alternatively I can delete the file ModulesVersionInfo from the Users Roaming Application folder to get the app opening successfully
Deleting modelassembly.dll from the application folder also solves the issue.
Removing ModelAssembly.Dll from deployment solved the issue. The dll then gets created correctly by the app when it opens.