MapWindow / MapWindow5

MW5 is a desktop GIS which is extendable using the plug-in architecture. It is using the MapWinGIS mapping control and is created from scratch in 2015 using new technologies like MEF and Dependency Injection making it small in size, robust and fast.
290 stars 100 forks source link

SampleDockWindow #116

Open saadb opened 3 years ago

saadb commented 3 years ago

If I do not want to use Syncfusion which I do not why is SampleDocKWindow using Syncfusion So do I need to use SampleDockWindow which it looks like I do How can I use the form without the Syscfusion Library reference? Help me please.

TongZhai commented 3 years ago

I might have experienced similar issue with this when developing custom plug-in. I used the MW5.TemplatePlugin project and it worked out, I mean it can be loaded into the MW5 menu etc, however, when I copied that MW5.TemplatePlugin.dll onto a barebone testing machine and placed it under with the same MapWindow5\Plugins\ folder, it gave the following exception when it was turned on (by the way, the MW5 version I used is MapWindow-v5.6.3.0-x64.exe): image

Now, this worked on my dev machine where Syncfusion libraries are installed, well, I surmise these are related. Anyway, any suggestion would be appreciated.

TongZhai commented 3 years ago

As a follow up trial, I took out the SampleDockWindow injection in both MapListener and MenuListener, and tried it on our barebone testing machine again, this time it worked without that exception.

mathijs-dumon commented 3 years ago

The sample plugin project is not distributed in the installer. Do not reference that project, but copy what you need from it into your own plugin.

Op wo 14 apr. 2021 22:47 schreef tong.zhai @.***>:

As a follow up trial, I took out the SampleDockWindow injection in both MapListener and MenuListener, and tried it on our barebone testing machine again, this time it worked without that exception.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/MapWindow/MapWindow5/issues/116#issuecomment-819821408, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACY6UYWGO5L65AVMCKZ7ILTIX5PPANCNFSM4YYHTUTQ .

TongZhai commented 3 years ago

Well, in this case, the "what you need from it" happens to be the SampleDockWindow and it didn't work. Are you suggesting somehow taking it out of that template project would make it work?

mathijs-dumon commented 3 years ago

Yes!

The template project is meant to be used as a template, but is not distributed with the installer, since it doesn´t actually do anything. It´s just an example of how you can create a plugin

Op do 15 apr. 2021 17:48 schreef tong.zhai @.***>:

Well, in this case, the "what you need from it" happens to be the SampleDockWindow and it didn't work. Are you suggesting somehow taking it out of that template project would make it work?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/MapWindow/MapWindow5/issues/116#issuecomment-820535478, or unsubscribe https://github.com/notifications/unsubscribe-auth/AACY6U3F5JCPKX5HYRWAHBLTI4DENANCNFSM4YYHTUTQ .

TongZhai commented 3 years ago

@mathijs-dumon the bottom line is that we want to know why it is failing on a testing machine (with only a MapWindow5 installed) but not on our dev machine, I appreciate your responses, but they didn't answer the "why".

mathijs-dumon commented 3 years ago

Ok I'll try and explain again: 1) The MW5.TemplatePlugin is an example project and the output of the project is not included in the 'vanilla' MW5 installers 2) If you build MW5 yourself on your DEV machine you might have compiled that project when building the solution. That means the dll's will be available, you can reference them and run your development build without a problem. 3) As soon as you try to load that plugin from the 'vanilla' MW5 however, the MW5.TemplatePlugin.dll is not found and your plugin will fail to resolve its dependencies. Hence the error message.

TongZhai commented 3 years ago

I did NOT build it inside the whole MW5 solution, I installed the MW5 from installer to my personal directory, i.e. C:\Users\tong.zhai\programs\MapWindow5 , then, I created the MW5.TemplatePlugin project under that folder, then I set the MW5.Api, MW5.Plugins, MW5.Tools, Syncfusion.Shared.Base, Syncfusion.Tools.Windows references to the dlls inside MW5 installation directory.

TongZhai commented 3 years ago

Also, I am very confused about what you mean when you kept saying that "MW5.TemplatePlugin.dll is not found in 'vanilla' MW5", of course we do NOT expect it to be there, that's the whole point of building your own custom plug-in and just drop into MW5's plugin folder to have it loaded, right?

mathijs-dumon commented 3 years ago

Hi TongZhai, I misread your initial post. I assumed you were building your own plugin, in a new project and were referencing the MW5.TemplatePlugin. But you are simply modifying that template plugin solution, right?

In that case, one possiblity is that your dll was perhaps built for x86 instead of x64 - can you confirm the platform target in your dev environment was set to x64 for the plugin?

To answer the question by @saadb: you don't need to install the syncfusion library, you should be able to reference the dll's from a recent mapwindow 5 installation (like @TongZhai did). There is no way NOT to use these if you want a dockable window.

TongZhai commented 3 years ago

Yes, I have the plugin set to x64 platform, and I installed the 64bit MW5, on both dev and testing machine. I suppose you guys already tried what I did, and it worked, or ...? and yes, I was just modifying the template plugin.

TongZhai commented 3 years ago

I did a clean up of the reference list, and re-referenced all MW and Syncfusion related libs to dlls inside MapWindow5\Plugins\, now when the SimpleDockWindow is called, it is not giving that exception anymore, but it locks up the entire MW application, it just freezes up, had to use TaskManager to terminate it, this is the same behavior on both dev and testing machines.