EDIT: The issue is now solved, I'm including the details here to help anyone else who runs into this, as it's not that simple to solve.
Basically, it comes down to updating using the develop branch.
The first step is to checkout the monogame develop branch, this will not include the thirdparty/libs submodule, so you need to also update this in order to be able to compile the sources.
After this, you can compile MonoGame.Framework.Linux.sln, and update the references in your project to point to the new dll files.
This will still not load effect files, unless they are created using an up-to-date version of the content processors, so you need to go to a windows computer, checkout the develop branch (and libs) - or copy them from your linux system - then compile MonoGame.ContentPipeline/ContentProcessors/MonoGameContentProcessors.sln
You need to update the reference to MonoGameContentProcessors.dll in your content project, you also need to rename the MonoGame.ContentPipeline\ContentProcessors\bin\Release\libmojoshader_32.dll file to simply libmojoshader.dll.
Once all of this is done, you can finally use it as intended - build the .xnb files from your .fx files and add them to the linux project.
Hopefully this information will be useful to someone.
================================================= Original post:
I have just started out with MonoGame, and am trying to get a very simple application (rotating cube) to work on Windows and Linux - windows is not proving to be a problem, but I am having trouble getting my .fx files to work on Linux.
I have set up a "MonoGame Content Project", added the .fx file to it, selected the "MonoGame Effect" processor, set the build configuration to Linux - this all seems to work and i get a .xnb file in the output directory.
When I set up the Linux project, I copied the .xnb to the "Content" folder (the root directory is set accordingly) and used the following code to load the effect (same code as on windows):
CubeEffect = Content.Load<Effect>("Effect1");
CubeEffect.CurrentTechnique = CubeEffect.Techniques["Technique1"];
This then results in an application crash with this error:
Microsoft.Xna.Framework.Content.ContentLoadException: Could not load Effect1 asset!
Initially i assumed this to be a problem with file names, directory names, or some incorrect setting. However, i tried adding a .png file to the content folder and loading that:
Texture2D Tex = Content.Load<Texture2D>("bg.png");
This works perfectly well (checked the properties of the Texture2D in the debugger, and it has correct details for the file).
Have i missed a step somewhere when converting the shader file? Is there some really obvious thing that I'm not seeing?
If not, does anyone have any clue why it would act like this, or some way to get a more detailed error from it, like an actual reason for it not being able to load the asset?
EDIT: Having looked at the point in the disassembly where it actually throws the error, it seems that it finds the file, but doesn't recognise it as any valid resource type - could this be some kind of version/compatibility issue?