Code Monkey home page Code Monkey logo

Comments (6)

CodeDead avatar CodeDead commented on May 29, 2024 2

This will be made possible in the upcoming WPF remake!

from deadlock.

CodeDead avatar CodeDead commented on May 29, 2024 1

I'm thinking more of a radically different approach. In the sense that something like Tauri + Rust and a React frontend are perfectly capable of providing small binaries, which are portable, in addition to providing the same (or slightly different) user interface that our users are already used to. It would completely remove the requirement of .NET and be modern and maintainable.

A dotnet library for DeadLock could also be made available, and I'm working on one right now for developers as a NuGet package.

from deadlock.

CodeDead avatar CodeDead commented on May 29, 2024

Definitely! We've discussed software portability in a blog post here:
http://codedead.com/?p=1294

from deadlock.

r15ch13 avatar r15ch13 commented on May 29, 2024

Nice! Watching the repo to add it as soon it's released 👍

from deadlock.

BinToss avatar BinToss commented on May 29, 2024

As far as I know, a .NET portable app can be made in two ways with a stable SDK release:
A. Require the system already have .NET Framework and its dependencies. Framework 4.8 is pre-installed and continually updated on most Windows systems. It can run .NET Framework apps compiled for any previous 4.x runtime with minor differences where the API had a breaking change. I an imagine that some domain/organization-managed systems might not have the Framework installed for NUCs.
B. The app is published its own copy of the .NET runtime via Self-Contained.

[One problem with the latter is trim-incompatibility] of WPF and WinForms](https://docs.microsoft.com/en-us/dotnet/core/deploying/trimming/incompatibilities). Without IL trimming, the entire .NET Runtime is included with the build artifacts and leads to a 100MiB+ deployment. This might change with .NET 7 .NET 8(?) if these libraries are updated to use trim-compatible code.

  • WPF uses a lot of assembly Reflection and run-time code inspection. The member-level trimmer of .NET 5 and even 6 cannot walk certain uses of Reflection. See dotnet/wpf#3811 for updates.
  • Similarly, WinForms uses a bit of Reflection in addition to lots of built-in COM marshalling. When all of its reflection and COM marshalling is switched out for COM wrappers, it will become significantly more trim-compatible. Not completely, though. See dotnet/winforms#4649 for updates.

Note: .NET 7 appears to be introducing native-code Ahead Of Time compilation. I haven't looked into it enough to know if the resulting assemblies could be considered portable or if they would still have platform-specific runtime prerequisites.

from deadlock.

Symbai avatar Symbai commented on May 29, 2024

NET 7 appears to be introducing native-code Ahead Of Time compilation.

WPF does not support AOT and it's very unclear if it will be supported in the future at all. Winforms support AOT unofficial with some workarounds according to users. Avalonia (WPF-like cross platform UI) however supports AOT already. Unfortunately the portable AOT version of an Avalonia app is quite big in size.

from deadlock.

Related Issues (12)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.