Base solution for your next web application

Activities of "statuscast"

Answer

I wasn't asking if its automatic or manual. Just for some direction.

Is there any specific documents that walk your customers through this? I mean, where do we get the specific Metronic build? where are the directions on how to build our own? where are the AspNetZero files to replace?

I find the KeenThemes and Metronic web sites INCREDIBLY confusing and very expansive. It's almost impossible to tell what is relevant and what isn't in regard to Anz. I mean, again, given SO MANY people are always asking about how to do this, wouldn't a simple step by step demonstration be something you could consider? We have long exhaustive documentation on far less common things (like deploying Anz to Azure pipelines). I imagine every customer needs to style their apps and some more comphrensive guidance is needed. Just my vote ;-) Anz is wonderful! But the approach to theme is with Metronic is very complicated and the completely lack of documentation is slowing down development.

Just downloaded latest and still getting a TON of warnings on a clean build. May I please ask when these are going to be addressed? They point to potentially core issues that we would like to see fixed before merging the latest in to our code base.

1>------ Build started: Project: SC.Core.Shared, Configuration: Debug Any CPU ------ 1>SC.Core.Shared -> C:\src\aspnet-core\src\SC.Core.Shared\bin\Debug\netstandard2.0\SC.Core.Shared.dll 2>------ Build started: Project: SC.Core, Configuration: Debug Any CPU ------ 3>------ Build started: Project: SC.Application.Shared, Configuration: Debug Any CPU ------ 2>SC.Core -> C:\src\aspnet-core\src\SC.Core\bin\Debug\netcoreapp2.2\SC.Core.dll 4>------ Build started: Project: SC.EntityFrameworkCore, Configuration: Debug Any CPU ------ 4>Migrations\Seed\Host\DefaultSettingsCreator.cs(26,17,26,20): warning CS0162: Unreachable code detected 4>SC.EntityFrameworkCore -> C:\src\aspnet-core\src\SC.EntityFrameworkCore\bin\Debug\netcoreapp2.2\SC.EntityFrameworkCore.dll 4>Done building project "SC.EntityFrameworkCore.csproj". 5>------ Build started: Project: SC.Migrator, Configuration: Debug Any CPU ------ 3>SC.Application.Shared -> C:\src\aspnet-core\src\SC.Application.Shared\bin\Debug\netstandard2.0\SC.Application.Shared.dll 6>------ Build started: Project: SC.Application, Configuration: Debug Any CPU ------ 7>------ Build started: Project: SC.GraphQL, Configuration: Debug Any CPU ------ 8>------ Build started: Project: SC.Application.Client, Configuration: Debug Any CPU ------ 9>------ Build started: Project: SC.ConsoleApiClient, Configuration: Debug Any CPU ------ 8>C:\src\aspnet-core\src\SC.Application.Client\SC.Application.Client.csproj : warning NU1701: Package 'modernhttpclient 2.4.2' was restored using '.NETPortable,Version=v0.0,Profile=Profile259, .NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project. 9>Program.cs(41,31,41,46): warning CS0618: 'DiscoveryClient' is obsolete: 'This type will be deprecated or changed in a future version. It is recommended that you switch to the new extension methods for HttpClient. They give you much more control over the HttpClient lifetime and configuration. See the docs here: https://identitymodel.readthedocs.io' 9>Program.cs(47,39,47,50): warning CS0618: 'TokenClient' is obsolete: 'This type will be deprecated or changed in a future version. It is recommended that you switch to the new extension methods for HttpClient. They give you much more control over the HttpClient lifetime and configuration. See the docs here: https://identitymodel.readthedocs.io' 5>SC.Migrator -> C:\src\aspnet-core\src\SC.Migrator\bin\Debug\netcoreapp2.2\SC.Migrator.dll 9>SC.ConsoleApiClient -> C:\src\aspnet-core\test\SC.ConsoleApiClient\bin\Debug\netcoreapp2.2\SC.ConsoleApiClient.dll 9>Done building project "SC.ConsoleApiClient.csproj". 8>SC.Application.Client -> C:\src\aspnet-core\src\SC.Application.Client\bin\Debug\netstandard2.0\SC.Application.Client.dll 8>Done building project "SC.Application.Client.csproj". 10>------ Build started: Project: SC.Mobile.Shared, Configuration: Debug Any CPU ------ 10>C:\src\aspnet-core\src\SC.Mobile.Shared\SC.Mobile.Shared.csproj : warning NU1701: Package 'Microsoft.Bcl 1.1.6' was restored using '.NETPortable,Version=v0.0,Profile=Profile259, .NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project. 10>C:\src\aspnet-core\src\SC.Mobile.Shared\SC.Mobile.Shared.csproj : warning NU1701: Package 'Microsoft.Bcl.Async 1.0.165' was restored using '.NETPortable,Version=v0.0,Profile=Profile259, .NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project. 10>C:\src\aspnet-core\src\SC.Mobile.Shared\SC.Mobile.Shared.csproj : warning NU1701: Package 'modernhttpclient 2.4.2' was restored using '.NETPortable,Version=v0.0,Profile=Profile259, .NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project. 10>C:\src\aspnet-core\src\SC.Mobile.Shared\SC.Mobile.Shared.csproj : warning NU1701: Package 'PCLStorage 1.0.2' was restored using '.NETPortable,Version=v0.0,Profile=Profile259, .NETFramework,Version=v4.6.1' instead of the project target framework '.NETStandard,Version=v2.0'. This package may not be fully compatible with your project. 10>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets(2114,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "ImageCircle.Forms.Plugin.Abstractions". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. 7>SC.GraphQL -> C:\src\aspnet-core\src\SC.GraphQL\bin\Debug\netcoreapp2.2\SC.GraphQL.dll 6>SC.Application -> C:\src\aspnet-core\src\SC.Application\bin\Debug\netcoreapp2.2\SC.Application.dll 11>------ Build started: Project: SC.Web.Core, Configuration: Debug Any CPU ------ 12>------ Build started: Project: SC.Test.Base, Configuration: Debug Any CPU ------ 10>Controls\HideableToolbarItem.cs(10,60,10,172): warning CS0618: 'BindableProperty.Create<TDeclarer, TPropertyType>(Expression<Func<TDeclarer, TPropertyType>>, TPropertyType, BindingMode, BindableProperty.ValidateValueDelegate<TPropertyType>, BindableProperty.BindingPropertyChangedDelegate<TPropertyType>, BindableProperty.BindingPropertyChangingDelegate<TPropertyType>, BindableProperty.CoerceValueDelegate<TPropertyType>, BindableProperty.CreateDefaultValueDelegate<TDeclarer, TPropertyType>)' is obsolete: 'Create<> (generic) is obsolete as of version 2.1.0 and is no longer supported.' 10>Controls\CardView.cs(14,17,14,29): warning CS0618: 'Frame.OutlineColor' is obsolete: 'OutlineColor is obsolete as of version 3.0.0. Please use BorderColor instead.' 10>SC.Mobile.Shared -> C:\src\aspnet-core\src\SC.Mobile.Shared\bin\Debug\netstandard2.0\SC.Mobile.Shared.dll 10>Done building project "SC.Mobile.Shared.csproj". 12>SC.Test.Base -> C:\src\aspnet-core\test\SC.Test.Base\bin\Debug\netcoreapp2.2\SC.GraphQL.Test.Base.dll 13>------ Build started: Project: SC.Tests, Configuration: Debug Any CPU ------ 14>------ Build started: Project: SC.GraphQL.Tests, Configuration: Debug Any CPU ------ 13>SC.Tests -> C:\src\aspnet-core\test\SC.Tests\bin\Debug\netcoreapp2.2\SC.Tests.dll 11>SC.Web.Core -> C:\src\aspnet-core\src\SC.Web.Core\bin\Debug\netcoreapp2.2\SC.Web.Core.dll 15>------ Build started: Project: SC.Web.Host, Configuration: Debug Any CPU ------ 16>------ Build started: Project: SC.Web.Public, Configuration: Debug Any CPU ------ 14>SC.GraphQL.Tests -> C:\src\aspnet-core\test\SC.GraphQL.Tests\bin\Debug\netcoreapp2.2\SC.GraphQL.Tests.dll 15>SC.Web.Host -> C:\src\aspnet-core\src\SC.Web.Host\bin\Debug\netcoreapp2.2\SC.Web.Host.dll 15>SC.Web.Host -> C:\src\aspnet-core\src\SC.Web.Host\bin\Debug\netcoreapp2.2\SC.Web.Host.Views.dll 16>SC.Web.Public -> C:\src\aspnet-core\src\SC.Web.Public\bin\Debug\netcoreapp2.2\SC.Web.Public.dll 16>SC.Web.Public -> C:\src\aspnet-core\src\SC.Web.Public\bin\Debug\netcoreapp2.2\SC.Web.Public.Views.dll ========== Build: 16 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Answer

Yes, obviously.

I'm not asking if WE can make every AspnetZero entity and service classes partial. I am asking if AspnetZero could please mark them partial. It would benefit everyone and has no downside.

Answer

Aaron --

I'm not quite sure what you are implying here with such a terse response.

Of course we already use Git and everytime there's a new AspNetZero release, we have to spend sometimes DAYS merging the code base. Primarily because we have had to integrate TONS of custom code into AspNetZero's source files. It's a grueling and incredily time consuming process.

Our current example: we are about 4 releases behind the latest AspNetZero release. Running a code compare and merge has literally THOUSANDS of items we have to review manually because we have so much of our code integrated directly in to AspNetZero code. It's just the nature of the beast. Custom permissions, login flows, modified login screens, additional startup calls, integrated Hangfire queues, etc etc There's 10,000 different reasons why the base code is changed per customer.

With binary based or library based frameworks this is easy. With frameworks trying to accomplish what AspNetZero does (which is a framework, not a library), we could eliminate 90% of these issues by simply adding the word PARTIAL to all the classes. It would make life so much easier for all your customers.

Suggesting we spend days trying to run complicated code merges when the inclusion of the word partial on AspNetZero class could solve most the problem isn't really helpful.

Answer

Not sure why it seems "uncommon", Partial classes are incredibly powerful. There's ZERO effect and no downside to marking the AspNetZero classes as partial for us. It would let our code sit side-by-side much easier. As it stands right now, everytime we want to enhance or extend your code, we are boxing ourselves in from any upgrades you release unless we want to spend days and days merging source code.

Why couldn't AspNetZero just go through and mark all their classes as partial for us? It would allow everyone to put most of their custom code that needs to be integrated directly into AspNetZero code in seperate files.

Nope, we gave up. Couldn't get it to work.

I understand. and I am pretty familiar with the places your team uses session info within domain services. It just is usually considered not-advisable as it ties the domain service to the application layer. In fact, your own documentation re-iterates that:

"Since authentication/authorization is an application layer task, it's advisable to use the IAbpSession in the application layer and upper layers. This is not generally done in the domain layer. ApplicationService, AbpController, AbpApiController and some other base classes have AbpSession already injected, so you can, for instance, directly use the AbpSession property in an application service method"

This was just a philosophical discussion. I was looking for some additional guidelines or suggestions. For now, we are not allowing the use of any AbpSession object within our domain services. Everything has to be passed in. That way they never assume there "is" a session and no kludgy if AbpSession is null stuff.

Sorry for late response. We are just going to try and use the native Abp Redis caching. Trying to use DI for some third party modules has turned out to be a nightmare.

I'm sorry but I have no clue how that article helps me get access to the IApplicationBuilder app in to an Xunit application that has no Configure() method in the first place.

I apologize for missing something....?

awesome. That might be a better solution, however it's a pure DB one and requires me to make sure that I update this code whenever we also add permissions or roles elsewhere. I think I'm going to keep my solution for now as it doesn't require the person adding new permissions to know about that code, kind of self maintained.

Anyway, thanks for the input!

Showing 1 to 10 of 34 entries