Just upgraded my whole system, with it came mono 3.0.4 (previous was mono 2.10.6). Now KeePassRPC.plgx will not load anymore with KeePass claiming it being incompatible. This isn't really a good error message, as saving the compile output, I see:
error CS1705: Assembly `System, Version=184.108.40.206, Culture=neutral, PublicKeyToken=b77a5c561934e089' references `Mono.Security, Version=220.127.116.11, Culture=neutral, PublicKeyToken=0738eb9f132ed756' which has a higher version number than imported assembly `Mono.Security, Version=18.104.22.168, Culture=neutral, PublicKeyToken=0738eb9f132ed756'
where I am at a loss at what to do now. I have installed everything my distro offers, but to me it looks like the rpc plugin needs v2 whereas my system only offers v4 of that particular Mono.System, but I am not at all experienced with mono/c#/.net so I can't really tell. In such situations one really discoveres how dependent your daily workflow became on such tools as keefox ...
so what could I try (besides downgrading mono, which is not really an option).
You might also/instead need to pass a parameter to mono to tell it to run KeePass using the .NET v2 framework.
Unfortunately this might stop some other KeePass plugins working.
The problem is that I've had to include the v2 of Mono.Security in order to workaround the limitations of the Microsoft .NET framework v2 so some changes in this area might not be easy. Hopefully we can find a way of conditionally including v2 of Mono.Security on Windows only or maybe find a way to tell Linux to just ignore it.
Unfortnuately, both ways did not work. I tried both, changing the .config and passing --runtime=v2.0.50727 to mono. All result in that KeePass is then not even trying to compile the plugin and I have no idea why. Starting keepass with -debug does not give any more information either.
What I noticed though is that even though I have set it to use v4.0 (by deleting only the v4.5 line), the compile command includes some /sdk:4.5 switch. I don't know if this tells anything.
Next thing I tried then is to delete KeePass PluginCache before building. This helps in so far as then with using the v2, it shortly displays the plugin compilation dialogue, however the plugins dialog does not show the rpc plugin to be loaded. But the PluginCache directory will contain -- among others -- a KeePassRPC.dll.
I tried to replace those files by "known good" ones (those from a mono 2.x installation where everything runs fine) but also those are not loaded.
My current guess is that somehow KeePass internally fails to load the plugin, but swallows the error, and I have no real idea how to get at the error.
btw. I am running on OpenSUSE 12.3 if that is any help.
I installed openSUSE 12.3 in a VM to have a look at this.
The bad news.
It appears that the compiler in mono 3 is broken in that it is not assigning a product name to the final assembly. As a result, KeePass thinks that plugins are just regular .dlls and is ignoring them. This is why there are no useful error messages - KeePass is ignoring the plugin .dll completely. This also means that it is not just KeeFox - all KeePass .plgx plugins are broken in mono 3.
So, one of two things needs to happen before .plgx plugins will work with KeePass and mono 3. 1) Someone needs to fix mono or 2) someone needs to patch KeePass with a workaround.
The good news.
Luckily, you can still run non-plgx plugins. I have zipped up working files from another install and attached them. Extract them to the folder that contains KeePass.exe or a plugins subfolder in that same directory - works either way. I tried it on my openSUSE VM and it seems to work, so it should get you going.
Indeed this tarball works just fine. Is this a problem with mono3 in general, or just on opensuse? Either way with your knowledge about it, you may want to report it as a bug and post an uri in here, I would guess that I will not be the only one with that problem...
Don't know for sure. I'll have to download the trunk of mono and build it to see if the problem still exists. If it does, I will see what I can do to fix it. Love that about open source - you don't have to wait around and hope that someone else fixes it for you, you can just fix it yourself if you have the know-how (and time).
Thanks for tracking down the problem with the mono compiler! I've been pulling my hair out trying to get KeePass .plgx plugins to work in KeePass under openSUSE 12.3. The only plugin I've been able to get to work so far is KeePassHttp, and that is only because they provide a choice of using either the .plgx or .dlls. It's been working pretty well, but it doesn't have a Thunderbird plug-in like KeeFox.
I'd like to report the bug to https://bugzilla.xamarin.com, and/or the openSUSE mono packagers, and KeePass.info ASAP to get this issue resolved because I'm stuck with mono 3.0 in openSUSE and am depending in KeePass. I'm not well versed in mono however, so if you'd be willing to file the reports it would be greatly appreciated. Otherwise, you can just fill me in on what more you discover out point out the most help info for me to report.
I was just hit by this bug on Debian Unstable. So it is not distribution-specific. Downgraded to Mono 2.10 (Debian Testing) to make it work again. I am not sure how and where to report this, given that keefox is not a Debian package.