XmlImporter Unexpected Failure - UWP

I’ve been trying to recreate the RolePlayingGame sample found here as a UWP project. It is giving me trouble building the xml content.

To isolate the problem, I have created a new MonoGame Windows 10 Universal (Core Application) solution in Visual Studio. This solution contains two projects: RPG and RPGData.

The RPG project is the main executable project. The only changes I have made to this project are adding, MainGameDescription.xml to the Content folder, and including the xml file in Content.mgcb.

MainGameDescription.xml:

<?xml version="1.0" encoding="utf-8"?>
<XnaContent xmlns:ns="Microsoft.Xna.Framework">
  <Asset Type="RPGData.GameStartDescription">
      <MapContentName>Map001</MapContentName>
      <PlayerContentNames>
          <Item>Kolatt</Item>
      </PlayerContentNames>
      <QuestLineContentName>MainQuestLine</QuestLineContentName>
  </Asset>
</XnaContent>

Content.mgcb:

 #----------------------------- Global Properties ----------------------------#

 /outputDir:bin/$(Platform)
 /intermediateDir:obj/$(Platform)
 /platform:WindowsStoreApp
 /config:
 /profile:Reach
 /compress:False

 #-------------------------------- References --------------------------------#


 #---------------------------------- Content ---------------------------------#

 #begin MainGameDescription.xml
 /importer:XmlImporter
 /processor:PassThroughProcessor
 /build:MainGameDescription.xml

The RPGData project is a Class Library (Universal Windows) project. I have given it a reference to the same MonoGame.Framework as the RPG project. It contains the GameStartDescription class.

GameStartDescription.cs:

using Microsoft.Xna.Framework.Content;
using System.Collections.Generic;
namespace RPGData
{
    /// <summary>
    /// The data needed to start a new game.
    /// </summary>
    public class GameStartDescription
    {
        #region Map
        /// <summary>
        /// The content name of the  map for a new game.
        /// </summary>
        private string mapContentName;
        /// <summary>
        /// The content name of the  map for a new game.
        /// </summary>
        public string MapContentName
        {
            get { return mapContentName; }
            set { mapContentName = value; }
        }
        #endregion
        #region Party
        /// <summary>
        /// The content names of the players in the party from the beginning.
        /// </summary>
        private List<string> playerContentNames = new List<string>();
        /// <summary>
        /// The content names of the players in the party from the beginning.
        /// </summary>
        public List<string> PlayerContentNames
        {
            get { return playerContentNames; }
            set { playerContentNames = value; }
        }
        #endregion
        #region Quest Line
        /// <summary>
        /// The quest line in action when the game starts.
        /// </summary>
        /// <remarks>The first quest will be started before the world is shown.</remarks>
        private string questLineContentName;
        /// <summary>
        /// The quest line in action when the game starts.
        /// </summary>
        /// <remarks>The first quest will be started before the world is shown.</remarks>
        [ContentSerializer(Optional = true)]
        public string QuestLineContentName
        {
            get { return questLineContentName; }
            set { questLineContentName = value; }
        }
        #endregion
        #region Content Type Reader
        /// <summary>
        /// Read a GameStartDescription object from the content pipeline.
        /// </summary>
        public class GameStartDescriptionReader : ContentTypeReader<GameStartDescription>
        {
            protected override GameStartDescription Read(ContentReader input,
                GameStartDescription existingInstance)
            {
                GameStartDescription desc = existingInstance;
                if (desc == null)
                {
                    desc = new GameStartDescription();
                }
                desc.MapContentName = input.ReadString();
                desc.PlayerContentNames.AddRange(input.ReadObject<List<string>>());
                desc.QuestLineContentName = input.ReadString();
                return desc;
            }
        }
        #endregion
    }
}

Lastly, I have referenced the RPGData project in RPG.

Building the solution gives two errors:

The command ““C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MGCB.exe” /@:“c:\users\user\documents\visual studio 2017\Projects\RPG\RPG\Content\Content.mgcb” /platform:WindowsStoreApp /quiet /outputDir:“bin\WindowsStoreApp\Content” /intermediateDir:“obj\WindowsStoreApp\Content”” exited with code 1.

Importer ‘XmlImporter’ had unexpected failure!

I am new to MonoGame so this is a bit of trial and error for me. I tried adding a reference to the RPGData library in Content.mgcb, but it gave me some kind of “Library corrupt” error. Should I be placing a reference to the library here?

Upon using fuslogvw (Assembly Binding Log Viewer), I am greeted with two errors. One for MGCB.XmlSerializers and one for SharpDX.Mathematics. Ignoring the SharpDX error for now, here is the MGCB.XmlSerializers log:

*** Assembly Binder Log Entry  (2/24/2018 @ 8:27:48 PM) ***
The operation failed.
Bind result: hr = 0x80070002. The system cannot find the file specified.
Assembly manager loaded from:  C:\Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll
Running under executable  C:\Program Files (x86)\MSBuild\MonoGame\v3.0\Tools\MGCB.exe
--- A detailed error log follows. 
=== Pre-bind state information ===
LOG: DisplayName = MGCB.XmlSerializers, Version=3.7.0.1279, Culture=neutral, PublicKeyToken=null, processorArchitecture=MSIL
 (Fully-specified)
LOG: Appbase = file:///C:/Program Files (x86)/MSBuild/MonoGame/v3.0/Tools/
LOG: Initial PrivatePath = NULL
LOG: Dynamic Base = NULL
LOG: Cache Base = NULL
LOG: AppName = MGCB.exe
Calling assembly : System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using host configuration file: 
LOG: Using machine configuration file from C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config.
LOG: Policy not being applied to reference at this time (private, custom, partial, or location-based assembly bind).
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MSBuild/MonoGame/v3.0/Tools/MGCB.XmlSerializers.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MSBuild/MonoGame/v3.0/Tools/MGCB.XmlSerializers/MGCB.XmlSerializers.DLL.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MSBuild/MonoGame/v3.0/Tools/MGCB.XmlSerializers.EXE.
LOG: Attempting download of new URL file:///C:/Program Files (x86)/MSBuild/MonoGame/v3.0/Tools/MGCB.XmlSerializers/MGCB.XmlSerializers.EXE.
LOG: All probing URLs attempted and failed.

At this point, I don’t know enough about how the MonoGame Content Pipeline to understand exactly what is going on here.

My understanding is that Content.mgcb contains a list of content as well as what to do with it at build time. In this instance, my Xml file is being imported with XmlImporter. XmlImporter I assume, is a part of the MonoGame Framework. While being imported, the importer looks at the Xml Asset Type tag and serializes to that.

Is this correct? What could I be missing that would cause the build to fail?

Any input is appreciated!