Version 4.7.200 release
I am pleased to announce the release of CSLA .NET version 4.7.200 with support for Blazor, and enhanced support for ASP.NET Core and Xamarin.
The packages are now in NuGet.
🛑 🔐 Security warning: This version of CSLA .NET allows the use of
WcfProxy.WcfProxyuses the NetDataContractSerializer (NDCS) which has known vulnerabilities that can allow remote execution of code during deserialization. NDCS itself is considered obsolete, and you should avoid usingWcfProxyor upgrade to CSLA 6 or higher where this issue does not exist.
This is a pretty big release, focused on four key areas:
- Improved sample code
- Enhanced support for ASP.NET Core
- The new
CslaModelBinderProviderandCslaModelBindertypes support data binding in Razor Pages scenarios
- The new
- Enhanced support for Xamarin
- Updated for Xamarin Forms 3.0; Enhanced the
PropertyInfotype, Fixed critical bug inGraphMergeron iOS
- Updated for Xamarin Forms 3.0; Enhanced the
- Support for Blazor (and mono/wasm)
- Add support for Blazor so it is possible to use CSLA objects in client-side mono/wasm code in a Blazor app, reference the
CSLA-Core-NSpackage from your Blazor client app to use CSLA
- Add support for Blazor so it is possible to use CSLA objects in client-side mono/wasm code in a Blazor app, reference the
More details are listed here:
ASP.NET Core
- #900 Update model binder to support editable list root objects
- #900 Add CslaModelBinder for IBusinessBase types
- #908 Add ScaffoldColumn and NotMapped attributes so scaffolding works with BusinessBase and BusinessListBase types
Xamarin
- #903 Fix the GraphMerger so it works on iOS devices - Find child type on iOS when indexer is not found
- #886 Upgrade to Xamarin Forms 3.0
- #886 Upgrade to Xamarin Forms 3.0 (also consolidate all json.net references to the same version)
- #697 Add Tag property to PropertyInfo class.
Blazor
- #829 Make UseTextSerialization property static
- #829 Remove MobileList test with complex types (breaking change - scenario no longer supported)
- #829 Add UseReflectionFallback setting to prevent use of System.Linq.Expressions
- #829 Make HttpProxy and HttpPortalController support optional text serialization
- #829 Expose GetValueOrNull method as public
- #829 Remove DCS dependency in MobileList
Bug fixes
- #897 Get BeginEdit working in netstandard 2.0 implementation
- Closes #545 Unhook event handlers before save operations.
- Closes #205 Call OnRefreshing before each OnRefreshed call.
- Fixes #761 Resolve exception when calling BeginRefresh
- Fix threading issue in InitializePerTypeRules (#614)
- Fix threading issue in InitializePerTypeRules (#614)
Misc
- #879 Update tests to work in .NET Core.
- #879 Add basic .NET Core undoable tests
- Closes #633 Closes #657 Closes #697 Add CustomTag property and fix null ref exception during control init. Make UpdateState public.
- Complete pt resources.Add some fr resources. (#884)
- Add ReadOnlyBase support for property setter anlyzer
- Mention contributor agreement in the getting started list
- #836 Make ConnectionManager types match; Optimize locking in DeRef method
Samples
- Add Wisej Web UI to ProjectTracker sample (#881)
- Update Project Tracker to 4.7.200-R18051402 ( #879))
- #829 Add BlazorExample sample code
- Remove useless overload RoleEdit GetRole(int id) (#687)
- ProjectTracker.BusinessLibrary.Netstandard is missing a reference to ProjectTracker.Dal (#870)
- ProjectTracker WinForms - show validation errors on Save (#868)
- Fix for ProjectTracker WinForms RolesEdit is broken (#863) UI
- Missing Display attribute (#863)
- Fix for ProjectTracker WinForms RolesEdit is broken (#863)
- ProjectTracker BO: add missing RoleList.CacheList (#865)
- Revert to RoleList cache refresh (#861)
- Async RoleList cache refresh (#861)
- Consistent codig of ResourceEdit and ProjectEdit (#861 (#861)
- Improve Project Tracker WinForms (#861)
- Updating samples to 4.7.101 (#859)
- Update sample to CSLA .NET 4.7.101 (#844) Cosmetic changes on some forms.
- Update SimpleNTier (broken Wcf configuration) sample to CSLA .NET 4.7.101 #844
- Update Project Tracker sample to CSLA .NET 4.7.101 #844
- Update CslaMVC sample to CSLA .NET 4.7.101 #844
- Refresh generated code (#847)
- Add sample to verify NuGet versions (#841)
- #832 Change NuGet targets to lib/net461
Important notes
There continue to be two "families" of CSLA .NET packages in NuGet. One that supports full .NET and one that supports all other runtimes. The following work item is tracking when this is resolved (after Microsoft fixes a bug in full .NET):
- #822OnDeserialized attribute from NS2 causes runtime error in full .NET
In the meantime, the full .NET family (based on the CSLA-Core package) must be used for the following types of app:
- Windows Forms
- WPF
- ASP.NET (other than Core)
- Console apps (other than Core)
- Azure Functions
- Any other runtime hosted by full .NET 4.6.1+
The netstandard family (based on the CSLA-Core-NS package) must be used for the following types of app:
- Xamrin
- UWP
- .NET Core
- ASP.NET Core
- Blazor
- Any other runtime not hosted by full .NET 4.6.1+
What this means for you is that if your n-tier app is 100% full .NET or full netstandard then you can live within one of those families. BUT if your server is full .NET and your client is Xamarin (for example) then your business library assemblies need to be compiled twice: once for full .NET and once for netstandard.
The Samples\ProjectTracker app shows how this is done by using a Shared Project to contain the code, and two concrete class library projects that compile the code for full .NET and netstandard respectively.
Also included are changes from 4.7.100 and 4.7.101
Version 4.7.101 is a bugfix release over 4.7.100. Release notes for 4.7.100 are below.
Version 4.7.101
- #832 Change NuGet targets from net46 to net461
- #836 BUG: Fix non-generic ConnectionManager
- #834 BUG: Csla.Web.Mvc4.dll for .NET461 reports version 1.0.0.0
- #844 Update samples to CSLA .NET 4.7.101 (thanks to tfreitasleal)
Version 4.7.100
I am pleased to announce the release of CSLA .NET version 4.7.100 with full support for netstandard 2.0 and .NET Core 2.
The packages are now in NuGet. Once some final updates to the samples are complete and merged into master I'll create a formal release tag/page on GitHub.
This release also includes some other very exciting capabilities, including:
- #760 Add support for ASP.NET Core 2.0
- #759 Add support for EF Core (EntityFrameworkCore)
- #813 Major performance improvement when data binding to large object graphs thanks to keithdv
- #795 Add
Transactionalattribute back into netstandard 2.0 code - #800 Changes to configuration so it is possible to configure CSLA without any
web.configorapp.configfiles (such as in .NET Core, etc.) - #496 Support
ClaimsPrincipalvia newCslaClaimsPrincipaltype - #729
ApplicationContextnow defaults to usingAsyncLocalto maintain values on the current thread/context with help from j055 BREAKING CHANGE - #712 Support in-place deserialization of an object graph
- #748 Major improvements to serialization via
MobileFormatterthanks to jasonbock - #763 Update to samples thanks to tfreitasleal
- #688 Get
ApplicationContext.Userauthentication working with ASP.NET Core thanks to dazinator - #766 Update to use latest UWP libraries for Windows 10 Fall Creators Update BREAKING CHANGE
- #790 BUG: Fix
AmbiguousMatchExceptionin data portal thanks to iherwald - #710 BUG: Fix ambiguous
Savemethod issue thanks to rabidkitten
There are a couple known issues with this release:
- #818 Xamarin projects using
System.Data.SqlClientshow a warning about this assembly's location - #794 UWP projects show
warning PRI263: 0xdef01051messages relative to CSLA resource strings - #822 There are two "sets" of CSLA packages/assemblies: one for full .NET 4.6.1+ and one for netstandard (including Xamarin, UWP, .NET Core, etc.) due to a type error between netstandard and full .NET
- #703 Though netstandard supports BinaryFormatter, that is currently not an option from the CSLA configuration, and this needs to be addressed
Regarding the NuGet/assembly split noted in #822:
Right now there are two "families" of CSLA .NET packages in NuGet. One that supports full .NET and one that supports all other runtimes.
The full .NET family must be used for the following types of app:
- Windows Forms
- WPF
- ASP.NET (other than Core)
- Console apps (other than Core)
- Azure Functions
- Any other runtime hosted by full .NET 4.6.1+
The netstandard family must be used for the following types of app:
- Xamrin
- UWP
- .NET Core
- ASP.NET Core
- Any other runtime not hosted by full .NET 4.6.1+
What this means for you is that if your n-tier app is 100% full .NET or full netstandard then you can live within one of those families. BUT if your server is full .NET and your client is Xamarin (for example) then your business library assemblies need to be compiled twice: once for full .NET and once for netstandard.
The Samples\ProjectTracker app shows how this is done by using a Shared Project to contain the code, and two concrete class library projects that compile the code for full .NET and netstandard respectively.