View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001079 | NoesisGUI | C# SDK | public | 2017-05-12 07:23 | 2019-03-15 00:07 |
| Reporter | ai_enabled | Assigned To | sfernandez | ||
| Priority | none | Severity | feature | ||
| Status | resolved | Resolution | fixed | ||
| Product Version | 2.0.1f1 | ||||
| Target Version | 2.2.0 | Fixed in Version | 2.2.0 | ||
| Summary | 0001079: Noesis Application Framework | ||||
| Description | After completing "1078: C# SDK with namespaces compatible with WPF/UWP" http://bugs.noesisengine.com/view.php?id=1078 and fixing most of the reported differences with WPF it will allow us to start an open-source project "Noesis Application framework". Ideally, it should be distributed via Nuget as following packages:
It should also include custom MSBuild target which will automatically copy all the XAML files into the application build folder (to be able to load them in Runtime) during the build phase. It will allow developers to easily port their WPF/UWP applications to NoesisGUI for Windows by following these steps:
If developer need to port application to multiple platforms, it could be done this way:
Executable files could be run with Mono/CoreCLR on Linux and Mac. Mono or CoreCLR could be embedded with the application (as it's already done for many games on these platforms, for example https://github.com/flibitijibibo/MonoKickstart but it will even easier for CoreCLR). I think this is not really hard and this opensource project could be started with only some platforms but grow to full-fledged framework. | ||||
| Platform | Any | ||||
|
We just published the first 2.1 beta for C#. It also includes a first approach to the application framework, for now only windows is included. The architecture is very similar to C++, in fact we are reusing things we already have in C++ (like the renderers) instead of adding extra dependencies to SharpDX and things like that. There are a lot of things to do here. Step by step : ) |
|
|
Great news! |
|
|
Hi, we are working on moving our C# code to NuGet and we are facing some problems with the native libraries that maybe you can help with. We decided the following structure of packages: Noesis.GUI ---------------------> Wrappers and proxies for Noesis core, includes all native libraries An application will depend on the desired platform packages to get all the dependencies. The problem we are having is that native libraries in Noesis.GUI package are not copied to output folders when building the application, only managed assemblies are. <Project Sdk="Microsoft.NET.Sdk"> runtimes/android-arm/native/libNoesis.so Have you faced this problem and know how to solve it? Documentation is bit of a mess considering the differences between old and new SDK csproj files. |
|
|
Hi, I see you're using the new approach with "runtimes". The format (RID mapping) is looking properly so it should work fine. There are some known problems though:
If you still cannot make it work you can drop me the sample project and I will check it ASAP. I have some experience with debugging issues with MSBuild. |
|
|
We followed all the indications and still are unable to get the native libraries deployed. |
|
|
As a quick note. I've looked into this and it does copy Noesis.dll in case I'm building Button project for 64-bit platform (Src\Samples\Buttons\Projects\windows_x86_64\Bin\x64\Debug). |
|
|
I tried so many things that I can't assure I already tried that before, but the fact it is working for me too selecting x64 platform in the Buttons sample :) |
|
|
Ok, I've figured out what's going on. nuget locals all -clear After that it started working fine when I did any changes with runtimes. Otherwise it always used the cached packages (even after deleting runtimes folder and repacking the NuGet package, it still copied Noesis.dll from the cached package). Also, it's not recommended to reference NuGet projects via PackageReference. Just use a Project reference instead. So, for example, in case of Noesis.App.csproj, replace: <PackageReference Include="Noesis.GUI" Version="2.2.0" /> with <ProjectReference Include="....\Noesis\Noesis.GUI.csproj" /> It will still generate a proper NuGet package (basically, there are no differences in output, it still will reference the same NuGet package of the referenced project). However, it will not work with Buttons project as this project must reference NuGet packages (not project references) in order to use the NuGet runtimes copy feature. I'm really not sure what to do in that case. The documentation is severely lacking as you have noticed. The best idea is to look how other multi-targeting projects are organized on Github. I don't have an immediate suggestion as most projects (such as Xenko game engine) are too bloated and have custom MSBuild tooling which is overkill for your case. |
|
|
It's definitely working here - I've tried x86 and x64 and it does work properly. nuget locals all -clearand only then build Buttons C# project. But it works fine. |
|
|
Hi, we uploaded our first version of NuGet packages: https://www.nuget.org/profiles/NoesisTechnologies We also published the code in our GitHub: https://github.com/Noesis/Managed, so anyone can download it and modify anything they want. |
|
|
This doesn't make sense without any example Sergio. Could you upload one of the examples to github? |
|
|
We updated the Buttons sample to use our NuGet packages, you can download it from here: https://github.com/Noesis/Tutorials/tree/master/Samples/Buttons/C%23 |
|
|
Hi guys. Sorry for the delay. I'm on a short vacation now and will have a detailed look in the next 24 hours as I will have access to VS. |
|
|
UPD. Re: NoesisGUIExtensions.cs - I remember now that it's required only for WPF to ensure there are no XAML compilation issues... so probably it should be a part of a separate NuGet package - so the recommended way of "flavoring" a WPF project with NoesisGUI extensions will be via NuGet - even though it will not give any practical benefits for WPF project itself. |
|
|
It is a great idea, we'll do it. |
|
I would love to see a proper sample targeting .NET Core 2.1, eventually! :-) Alas, I cannot tell anything regarding other samples (uwp, android, ios) as I don't have the environment to try them here.
or this way: Samples\Buttons\C#\Src\App.<platform>.cs (so each C# sample project will link according App.<platform>.cs file from shared Src folder) This way you can also get rid of the unnecessary conditional compilation. Regards! |
|
|
Thanks for your time!
|
|
|
So, regarding 4) We have two kind of files here:
|
|
|
I'm glad to help.
Same as in WPF, of course. All XAML files should have corresponding .g.cs files (including App.g.cs) and these files should always go into obj project folder -- so they're not visible and not editable. If you certainly don't want to implement VS/MSBuild plugin in the closest future, you have to write the required "generated" code manually as a temporary solution. There are two options where you could put that code:
In the both cases, it would be great to have a readme file clarifying the problem and the temporary solution -- until you implement the plugin. You can even link this single readme file into all C# demo projects to make it obvious. Regards! |
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2017-05-12 07:23 | ai_enabled | New Issue | |
| 2017-05-12 07:24 | ai_enabled | Summary | NoesisGUI Application framework => Noesis Application framework |
| 2017-05-12 07:24 | ai_enabled | Summary | Noesis Application framework => Noesis Application Framework |
| 2017-05-12 07:27 | ai_enabled | Description Updated | |
| 2017-05-12 07:28 | ai_enabled | Description Updated | |
| 2017-05-12 07:29 | ai_enabled | Description Updated | |
| 2017-05-12 07:30 | ai_enabled | Description Updated | |
| 2017-12-20 03:45 | jsantos | Assigned To | => sfernandez |
| 2017-12-20 03:45 | jsantos | Status | new => assigned |
| 2017-12-20 03:50 | jsantos | Note Added: 0004947 | |
| 2017-12-20 08:48 | ai_enabled | Note Added: 0004951 | |
| 2018-11-01 02:14 | jsantos | View Status | public => private |
| 2019-02-12 23:12 | sfernandez | Target Version | => 2.2.0 |
| 2019-02-12 23:12 | sfernandez | Platform | => Any |
| 2019-02-14 16:33 | sfernandez | Status | assigned => feedback |
| 2019-02-14 16:33 | sfernandez | Note Added: 0005439 | |
| 2019-02-14 16:34 | sfernandez | Note Edited: 0005439 | |
| 2019-02-14 17:14 | ai_enabled | Note Added: 0005440 | |
| 2019-02-14 17:14 | ai_enabled | Status | feedback => assigned |
| 2019-02-18 12:03 | sfernandez | Status | assigned => feedback |
| 2019-02-18 12:03 | sfernandez | Note Added: 0005441 | |
| 2019-02-18 12:05 | sfernandez | Note Edited: 0005441 | |
| 2019-02-18 12:51 | ai_enabled | Note Added: 0005442 | |
| 2019-02-18 12:51 | ai_enabled | Status | feedback => assigned |
| 2019-02-18 14:06 | sfernandez | Note Added: 0005443 | |
| 2019-02-18 14:10 | ai_enabled | Note Added: 0005444 | |
| 2019-02-18 14:11 | ai_enabled | Note Edited: 0005444 | |
| 2019-02-18 14:29 | ai_enabled | Note Added: 0005445 | |
| 2019-03-04 09:47 | sfernandez | Status | assigned => feedback |
| 2019-03-04 09:47 | sfernandez | Note Added: 0005492 | |
| 2019-03-04 09:48 | sfernandez | Note Edited: 0005492 | |
| 2019-03-04 11:19 | jsantos | Note Added: 0005493 | |
| 2019-03-04 11:24 | sfernandez | Note Added: 0005494 | |
| 2019-03-05 01:34 | ai_enabled | Note Added: 0005497 | |
| 2019-03-05 01:34 | ai_enabled | Status | feedback => assigned |
| 2019-03-05 01:34 | ai_enabled | Note Edited: 0005497 | |
| 2019-03-05 01:49 | ai_enabled | Note Added: 0005498 | |
| 2019-03-05 14:12 | sfernandez | Note Added: 0005499 | |
| 2019-03-06 00:48 | ai_enabled | Note Added: 0005500 | |
| 2019-03-06 00:49 | ai_enabled | Note Edited: 0005500 | |
| 2019-03-06 00:51 | ai_enabled | Note Edited: 0005500 | |
| 2019-03-06 00:54 | ai_enabled | Note Edited: 0005500 | |
| 2019-03-06 00:55 | ai_enabled | Note Edited: 0005500 | |
| 2019-03-06 00:56 | ai_enabled | Note Edited: 0005500 | |
| 2019-03-06 00:56 | ai_enabled | Note Edited: 0005500 | |
| 2019-03-06 00:57 | ai_enabled | Note Edited: 0005500 | |
| 2019-03-06 17:15 | jsantos | Note Added: 0005503 | |
| 2019-03-06 17:19 | jsantos | Note Added: 0005504 | |
| 2019-03-06 17:19 | jsantos | Status | assigned => feedback |
| 2019-03-06 17:20 | jsantos | View Status | private => public |
| 2019-03-06 23:53 | ai_enabled | Note Added: 0005506 | |
| 2019-03-06 23:53 | ai_enabled | Status | feedback => assigned |
| 2019-03-06 23:54 | ai_enabled | Note Edited: 0005506 | |
| 2019-03-06 23:57 | ai_enabled | Note Edited: 0005506 | |
| 2019-03-15 00:07 | sfernandez | Status | assigned => resolved |
| 2019-03-15 00:07 | sfernandez | Resolution | open => fixed |
| 2019-03-15 00:07 | sfernandez | Fixed in Version | => 2.2.0 |