biohazard999 / DXNugetPackageBuilder

A nuget package builder for the DevExpress Universal Suite
MIT License
15 stars 10 forks source link

.NET Standard dlls #3

Closed Thieum closed 5 years ago

Thieum commented 6 years ago

Since 18.1, there are now .NET standard version of some of the dlls, located in C:\Program Files (x86)\DevExpress 18.1\Components\Bin\Standard

image

It would be nice to merge this dlls in the appropriate packages, and have a multi-target package as a result.

image

biohazard999 commented 6 years ago

I thought already about this, but didn't Had time so far. Any PR on this would be cool :)

Thieum commented 6 years ago

I have it working on my machine: image

Still need the localization, as they are nowhere to be found in what is dowloadable from the localization service.

I opened a ticket here: https://www.devexpress.com/Support/Center/Question/Details/T664385/where-can-i-find-localization-for-net-standard-dlls

Once I get the localization, I'll prepare a PR.

Thieum commented 6 years ago

Another problem I hit after more tests is that Assembly.LoadFile will load the GAC version if it has been installed. Other versions of the loading like Assembly.Load / Assembly.LoadFrom have the same issue. I don't see anyway of doing the package and getting the right dependencies without doing it on a machine that has not the components installed through the DevExpress Installer.

I tried to call GacUtil to temporarily uninstall the dll from the GAC, but it didn't work, and I don't think it's a better idea anyway.

References: https://stackoverflow.com/a/1607105/444469

biohazard999 commented 6 years ago

Maybe I have an alternative idea. In this very old ticket Serge was mentioning using the Assembly Deployment Tool's xml file.

I'm currently installing the latest DevExpress version and let's see if we can do something about it this way. Another way is to provide different .NET exe's compiled against different versions (I would have done this if I ever needed Silverlight for example) and just serialize the dependency tree, and pack them afterwards. (That's what the analyzer was ment for)

But thanks for your PR anyways. I think I will port this thing to the new csproj format and give it a shine, combined with the official nuget support. But that's the main reason I don't really maintain it anymore, hoping official nuget support gets better and better over time.

biohazard999 commented 6 years ago

For the assembly loading problem, I think there is a better way.

  1. Point the installer to the tool and do a silent install
  2. Copy over all DLL's and files needed into a temp directory
  3. Uninstall DevExpress
  4. Do the magic on the dll's (maybe we need seperate exe's to do the dependency walk, or just trust on matching names)
  5. Optional match up with the existing packages from DevExpress official nuget feed
Thieum commented 6 years ago

It works when porting the project to .NET Core, as .NET Core doesn't know about the GAC. It can be run on a computer with DevExpress installed and generate the packages like the previous version. Preparing another PR.

Thieum commented 6 years ago

Made a PR to ookii.commandline for a .net standard version, but the package is attached here if needed in the mean time.

https://github.com/SvenGroot/ookii.commandline/pull/1

Ookii.CommandLine.3.0.0.nupkg.zip Ookii.CommandLine.3.0.0.symbols.nupkg.zip

Thieum commented 5 years ago

I guess we can close this as it seems to work fine :)