This is a KSP mod that allows KSPAssemblyDependency attributes to be used to
depend on other KSP mods that do not have a KSPAssembly attribute.
If you are not a mod author then you don't need to worry about what this mod does. Just install it as a dependency when requested.
KSPPluginLoader.
cs
[assembly: KSPAssemblyDependency("KSPPluginLoader", 1, 0)]
Dependencies on mods without a KSPAssembly attribute will not be resolved
unless your mod DLL has this dependency.KSPAssemblyDependency attributes for any other mods that you want to
depend on. See the next section to pick the right version.KSP.log in your KSP directory.AssemblyLoader log messages for your mod. They should look
something like this:
AssemblyLoader: Loading assembly at C:\KSP\GameData\ModuleManager.4.2.3.dll
AssemblyLoader: KSPAssembly 'ModuleManager' V2.5.0KSPAssembly message, then that's the version you should be
using. If all your dependencies have a KSPAssembly message, then you
don't actually need KSPPluginLoader (unless you're making use of the
advanced use cases section below).Mod DLLs found:KSPBurst v1.5.5.2
Kopernicus v1.0.0.0 / v1.12.227.0
ContractConfigurator v1.0.0.0 / v2.11.2.0 KSP-RO / v2.11.2.0KSPPluginLoader will use.
You only need to care about the version number so you can ignore any text
after the + in the version.As an example, here's what the dependencies would look like for latest versions of the three mods in step 5.
[assembly: KSPAssemblyDependency("KSPBurst", 1, 5, 5)]
[assembly: KSPAssemblyDependency("Kopernicus", 1, 12, 227)]
[assembly: KSPAssemblyDependency("ContractConfigurator", 2, 11, 2)]
To support more advanced use cases, KSPPluginLoader also has some extra assembly attributes you can use.
To use these you will need to actually depend on KSPPluginLoader.dll.
They also will not be checked unless your mod DLL has a KSPAssemblyDependency
on KSPPluginLoader.
You might want to only load your mod if some other mod's version is within a
certain range. KSPAssemblyDependency only lets you set a lower bound, so
this mod introduces a KSPAssemblyDependencyMax which allows you to set an
upper bound.
Declaring it works pretty much the same as KSPAssemblyDependency.
This would only allow your mod to be loaded if SomeMod's version is
< 1.0.0.
[assembly: KSPAssemblyDependencyMax("SomeMod", 1, 0, 0)]
As an example, the following two attributes would ensure your mod is only
loaded if a version of PersistentThrust in the range v1.7.5 <= v < v1.8.0
is present:
using KSPPluginLoader;
[assembly: KSPAssemblyDependency("PersistentThrust", 1, 7, 5)]
[assembly: KSPAssemblyDependencyMax("PersistentThrust", 1, 8, 0)]
In order for this attribute to make sure to:
* Add a KSPAssemblyDependency on KSPPluginLoader. Extra attributes like this
are only checked if the DLL depends on KSPPluginLoader.
* Also add a KSPAssemblyDependency on the same mod as your
KSPAssemblyDependencyMax. If you don't do this then then your DLL will never
be loaded.
You can use assembly dependency constraints to load different mod DLLs depending on a dependency version. The plugin loader will ensure only one copy of any mod with a given name is loaded at a time, but you can use dependency constraints to select which ones are considered.
The main use case for this is having multiple different implementations for different KSP versions.
For example, here's what you would need to add in order for your mod DLL to only be loaded for KSP v1.8:
[assembly: KSPAssemblyDependency("KSP", 1, 8)]
[assembly: KSPAssemblyDependencyMax("KSP", 1, 9)]
[assembly: KSPAssemblyDependency("KSPPluginLoader", 1, 0)]
CryoTanks contains DLL called SimpleBoiloff.dll but that DLL does not
have a KSPAssembly attribute. With this mod, however, you can ignore
that by adding the following to your AssemblyInfo.cs:
[assembly: KSPAssemblyDependency("SimpleBoiloff", 0, 2, 1)]
[assembly: KSPAssemblyDependency("KSPPluginLoader", 1, 0)]
Raw stats are from the beginning of time until now. Each follower and download entry represents one hour of data. Uneventful hours are omitted.