Tomshiii/MoonMissing

Linux compatability

Opened this issue · 5 comments

In attempting to build, there appears to be no Linux compatibility.
As a casual runner, Linux support would be great, especially since there are no distributed binaries from what I can tell.

MoonMissing/MoonMissing on  main   msbuild ./MoonMissing.csproj 
Microsoft (R) Build Engine version 16.10.1 for Mono
Copyright (C) Microsoft Corporation. All rights reserved.

Build started 2/24/2022 5:17:28 PM.
Project "/tmp/MoonMissing/MoonMissing/MoonMissing.csproj" on node 1 (default targets).
/usr/lib/mono/msbuild/Current/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(93,5): error NETSDK1013: The TargetFramework value 'net6.0-windows' was not recognized. It may be misspelled. If not, then the TargetFrameworkIdentifier and/or TargetFrameworkVersion properties must be specified explicitly. [/tmp/MoonMissing/MoonMissing/MoonMissing.csproj]
Done Building Project "/tmp/MoonMissing/MoonMissing/MoonMissing.csproj" (default targets) -- FAILED.

Build FAILED.

"/tmp/MoonMissing/MoonMissing/MoonMissing.csproj" (default target) (1) ->
(_CheckForUnsupportedTargetFramework target) -> 
  /usr/lib/mono/msbuild/Current/bin/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets(93,5): error NETSDK1013: The TargetFramework value 'net6.0-windows' was not recognized. It may be misspelled. If not, then the TargetFrameworkIdentifier and/or TargetFrameworkVersion properties must be specified explicitly. [/tmp/MoonMissing/MoonMissing/MoonMissing.csproj]

    0 Warning(s)
    1 Error(s)

Time Elapsed 00:00:00.30

I have deleted my previous comment, due to it being incorrect. This application is being developed as a WPF application in .NET 6. There is no support for WPF on a Linux platform.

That being said, there are potentional ways to make the applicaiton work involving older framerworks. For example, I believe, though not entirely certain, that WPF in .NET Core 3.0 can run on Linux using Wine.

In the future, should it be feasible and largely requested, upon completion of the application, .NET Maui posses a promising candidate for cross-platform support. But for now, .NET Maui is still in development and is not something I am considering using.

Ty for that explination, and sorry for the late comment. Do you think you could add a built exe to the releases so I could at least run it through Wine?

There is no exe to provide, the project is nowhere near completion in its current state, it doesn't even have any front end at all currently.

Oooh gotcha. If it's that early in development, would you maybe consider something cross-platform?

@ThatOneCalculator There is a front end, albeit minimal in the development branch. As the project lead, I have experience in C# WPF.

Currently, the application is being developed with a standard MVVM design pattern, with observable elements to properly implement a reactive UI.

My reason for this is due to the fact that the application needs to be simple, but also efficient in design. That is to say, I want an application that can look good and also function fast and efficiently for the Speedrunner, such that there are no bugs or time impacts.

Although it can be done in other languages, it is outside my experience to design an application that I feel happy with from both a UI and UX point of view.

WPF has a versatile front-end schema, using XAML to develop anything UI, which means it's easy to modify and swap out designs if they don't mesh well post-release.

For now, however, I want to emphasise the benefits of bug-free production that produces an application that runs fast.

Since the SMO game has so much data, we have opted for an embedded database, so we can query for desired information. This both minimises the application architecture and maximises code reuse via a more dynamic design.

Due to all mentioned, the development of a UI application is not "difficult" to do, but it is difficult to do "right". I don't want, for example, it to take 5 seconds to open a window with the required moon information, or to have an application that lags as it loads.

I hope this helps clarify some of the aspects of my choice in design.

On the topic of compiling an application for you, I cannot do so, as I do not wish to pollute the git repo. You can fork the repository, or download the development branch (or main branch) as a zip file, and then try it yourself. All you need to do (if I recall correctly) is change the *.csproj files to each build for .NET Core 3. This, however, may be a chore to do, or it may be impossible with some of the technologies we're are using.

With all that being said, when we release the application, we will be providing a database file to accompany the compiled app. You are more than welcome to use that database to build your own applications.