Skip to content
Open
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion managed/CounterStrikeSharp.API/Core/BasePlugin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ public abstract class BasePlugin : IPlugin
{
private bool _disposed;

internal string _version = "<unknown>";

public BasePlugin()
{
RegisterListener<Listeners.OnMapEnd>(() =>
Expand All @@ -52,7 +54,7 @@ public BasePlugin()
}

public abstract string ModuleName { get; }
public abstract string ModuleVersion { get; }
public virtual string ModuleVersion { get => _version; }
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you tried loading a plugin compiled with this API against an older version of CS#? Does it complain about the virtual/abstract change when its being invoked or does it generate the same IL code?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if I recall correctly I did not, but I'll check today

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess the other way around would also be good, so old plugin against new CS#.


public virtual string ModuleAuthor { get; }

Expand Down
22 changes: 21 additions & 1 deletion managed/CounterStrikeSharp.API/Core/Plugin/PluginContext.cs
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,26 @@ public void Load(bool hotReload = false)

if (Plugin == null) throw new Exception("Unable to create plugin instance");

/* Version Priority order:
* ModuleVersion override
* Assembly.GetName().Version
* "<unknown>"
*/
if (Plugin is BasePlugin basePlugin)
{
// if no override we look for assembly version
if (basePlugin._version == "<unknown>")
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe basePlugin.ModuleVersion instead of the backing field?

{
Version? assemblyVersion = defaultAssembly.GetName().Version;

// if its set, we use that, otherwise it remains "<unknown>"
if (assemblyVersion != null)
{
basePlugin._version = assemblyVersion.ToString();
}
}
}

State = PluginState.Loading;

Plugin.ModulePath = _path;
Expand Down Expand Up @@ -241,4 +261,4 @@ public void Unload(bool hotReload = false)
_logger.LogInformation("Finished unloading plugin {Name}", cachedName);
}
}
}
}