'Unable to call hook directly' warning message -- Seems to still workBug
In response to Wulf ():
Okay, but what is the exact usage?

Same test plugin again, this time it doesnt actually make a call to anything in the extension, it only has a reference to it.

// Reference Oxide.Ext.RustAlertsExtension
using Oxide.Ext.RustAlertsExtension.Libraries;
using Oxide.Plugins;
using System;
using System.Collections.Generic;
using System.Text;
using UnityEngine;

namespace Oxide.Plugins
{
	[Info("TestPlugin", "Atlas Incawporated",0.1)]
    public class TestPlugin : RustPlugin
    {
		[ChatCommand("test")]
		void TestFunction(BasePlayer player) {
			PrintToChat( "Test complete!", "" );
		}

		void Loaded() {
			Debug.Log( "Test Plugin loaded -(Onloaded) called!" );
			Debug.Log( "Test Plugin finished execution! -(Onloaded) called!" );
		}

    }
}

The usage is this plugin simply needs to respond to chat commands and make calls on the custom extension. But Oxide will not load the plugin at all if it makes a reference to the custom extension. 

I tried the plugin above, it gets me the exact same error. In this case there is no usage and the plugin still doesn't load. Do you have any idea why this might be the case? If Oxide doesn't load the plugin even when it doesn't do anything besides reference an extension and register a chat command, what steps do I need to take to correct this?

Here you have the exact usage like you asked, everything is there and the plugin doesn't load. Is this not a supported feature? 

Merged post

Side note, if anyone can reproduce this by posting an example of a working (Or not working) Rust Plugin to extension reference (or vice-versa) I'd be greatly appreciative. I just want one example of this working to see what I'm doing wrong.
You need to have "// Reference: Oxide.Ext.RustAlertsExtension", the semi-colon matters.
In response to Wulf ():
You need to have "// Reference: Oxide.Ext.RustAlertsExtension", the semi-colon matters.

So I figured this out a week ago but forgot to post back here.

Adding the semi-colon didn't change the error I got. What I did instead was I added a reference to my extension's internal plugin (The CSPlugin) with:

[PluginReference]
Plugin InteralPlugin;


Then from the interal plugin I could access all my extension's methods with a simple using Oxide.Ext.MyPlugin.Libraries statement.

Using // Reference: was not necessary anywhere within the plugins or extensions.

The PluginReferece would be for manually calling the intenral plugin through the API; it can't be used for calling methods outside of the internal plugin. If you want to call any other public methods, you'd need to use the // Reference method.
Oh okay. Good to know.