smith-chem-wisc / FlashLFQ

Ultra-fast label-free quantification algorithm for mass-spectrometry proteomics
GNU Lesser General Public License v3.0
19 stars 14 forks source link

Commandline version dependent on Microsoft.WindowsDesktop.App Framework #99

Closed acesnik closed 2 years ago

acesnik commented 3 years ago

Hi there,

I'm trying to update FlashLFQ in bioconda to use dotnet, and it looks like it's dependent on the Microsoft.WindowsDesktop.App Framework that's only available for Windows.

https://github.com/bioconda/bioconda-recipes/pull/28166

https://app.circleci.com/pipelines/github/bioconda/bioconda-recipes/45191/workflows/21a44685-ce3d-43ec-8bf3-fa02914ec5a6/jobs/151515

Digging into FlashLFQ, it looks like this is even the case for Utils class library, in addition to CMD, and I can't for the life of me figure out where it's dependent on the WindowsDesktop (WPF/Win Forms) namespace. Do you have any clue where to look?

AC

acesnik commented 3 years ago

To elaborate on this a bit more, I tried running FlashLFQ from the release on macOS, and I get this message:

$ dotnet CMD.dll
It was not possible to find any compatible framework version
The framework 'Microsoft.WindowsDesktop.App', version '3.1.0' was not found.
  - No frameworks were found.

You can resolve the problem by installing the specified framework and/or SDK.

The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.WindowsDesktop.App&framework_version=3.1.0&arch=x64&rid=osx.10.16-x64
acesnik commented 3 years ago

That leads here, where the WindowsDesktop framework is only available for Windows:

image
rmillikin commented 3 years ago

This may be related to an mzLib issue that I mentioned in my review of https://github.com/smith-chem-wisc/mzLib/pull/569 . mzLib may just need to be updated. I'll look into it

acesnik commented 3 years ago

That's a good thought. I did try updating mzLib here https://github.com/smith-chem-wisc/FlashLFQ/pull/100 and wasn't able to make Util and CMD independent of Windows (targeting net5.0, rather than net5.0-windows).

I briefly tried to figure out if there were any GUI dataframe objects that were used implicitly as input to the methods, but I didn't find any. Do you know of any cases like that?

rmillikin commented 3 years ago

I'm fairly sure it's all in .NET Core, there should be no .NET Framework GUI elements. I'm looking into this today, I'll post what I find here

rmillikin commented 3 years ago

.NET 5 version of FlashLFQ w/ latest mzLib. Works ok for me on Windows and a Linux docker container. Can check on Ubuntu too if needed. Seems to have no issues w/ targeting. Can you check on Mac?

FlashLFQ.zip

acesnik commented 3 years ago
image

Looks good!

acesnik commented 3 years ago

Glad to see that merged! I'll wrap up this PR to update FlashLFQ in bioconda after you make a fresh release. 👍🏼 https://github.com/bioconda/bioconda-recipes/pull/28166

acesnik commented 3 years ago

Any chance you could make a new patch release so I can wrap up that bioconda PR?

bmcnally-uw commented 2 years ago

This still seems to be a problem. The Microsoft.WindowsDesktop.App runtime doesn't seem to be available for Linux, yet CMD.dll appears to require it. Any thoughts? I'm on CentOS 7.


$ ./dotnet --list-runtimes
Microsoft.NETCore.App 3.1.0 [/tmp/shared/Microsoft.NETCore.App]
$ ./dotnet CMD.dll
It was not possible to find any compatible framework version
The framework 'Microsoft.WindowsDesktop.App', version '3.1.0' was not found.
  - No frameworks were found.

You can resolve the problem by installing the specified framework and/or SDK.

The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.WindowsDesktop.App&framework_version=3.1.0&arch=x64&rid=centos.7-x64```
wsnoble commented 2 years ago

This problem also arises on MacOS 11.6.

% dotnet --version
3.1.416
% dotnet ~/proj/FlashLFQ/CMD.exe 
It was not possible to find any compatible framework version
The framework 'Microsoft.WindowsDesktop.App', version '3.1.0' was not found.
  - No frameworks were found.

You can resolve the problem by installing the specified framework and/or SDK.

The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.WindowsDesktop.App&framework_version=3.1.0&arch=x64&rid=osx.10.16-x64
acesnik commented 2 years ago

Rob released version 1.2.1, and the update is now up for review on bioconda: https://github.com/bioconda/bioconda-recipes/pull/28166

The updated version is working for me in commandline on macOS 12.2.1, locally: image

And it's working on Linux (as well as Mac) in bioconda's build containers: image

I'm going to close this issue for now. Feel free to reopen if you encounter the issue again!

trishorts commented 2 years ago

thanks for looking into this anthony. no way that I could have done that