-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyPlugin.cs
More file actions
82 lines (73 loc) · 15.2 KB
/
MyPlugin.cs
File metadata and controls
82 lines (73 loc) · 15.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
using System;
using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Collections.Generic;
using System.Reflection;
using XrmToolBox.Extensibility;
using XrmToolBox.Extensibility.Interfaces;
namespace AccessTeamViewer
{
// Do not forget to update version number and author (company attribute) in AssemblyInfo.cs class
// To generate Base64 string for Images below, you can use https://www.base64-image.de/
[Export(typeof(IXrmToolBoxPlugin)),
ExportMetadata("Name", "Access Team Viewer"),
ExportMetadata("Description", "Allows you to view and edit Access Team memberships"),
ExportMetadata("SmallImageBase64", "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"),
ExportMetadata("BigImageBase64", "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"),
ExportMetadata("BackgroundColor", "Lavender"),
ExportMetadata("PrimaryFontColor", "Black"),
ExportMetadata("SecondaryFontColor", "Gray")]
public class MyPlugin : PluginBase
{
public override IXrmToolBoxPluginControl GetControl()
{
return new MyPluginControl();
}
/// <summary>
/// Constructor
/// </summary>
public MyPlugin()
{
// If you have external assemblies that you need to load, uncomment the following to
// hook into the event that will fire when an Assembly fails to resolve
// AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(AssemblyResolveEventHandler);
}
/// <summary>
/// Event fired by CLR when an assembly reference fails to load
/// Assumes that related assemblies will be loaded from a subfolder named the same as the Plugin
/// For example, a folder named Sample.XrmToolBox.MyPlugin
/// </summary>
/// <param name="sender"></param>
/// <param name="args"></param>
/// <returns></returns>
private Assembly AssemblyResolveEventHandler(object sender, ResolveEventArgs args)
{
Assembly loadAssembly = null;
Assembly currAssembly = Assembly.GetExecutingAssembly();
// base name of the assembly that failed to resolve
var argName = args.Name.Substring(0, args.Name.IndexOf(","));
// check to see if the failing assembly is one that we reference.
List<AssemblyName> refAssemblies = currAssembly.GetReferencedAssemblies().ToList();
var refAssembly = refAssemblies.Where(a => a.Name == argName).FirstOrDefault();
// if the current unresolved assembly is referenced by our plugin, attempt to load
if (refAssembly != null)
{
// load from the path to this plugin assembly, not host executable
string dir = Path.GetDirectoryName(currAssembly.Location).ToLower();
string folder = Path.GetFileNameWithoutExtension(currAssembly.Location);
dir = Path.Combine(dir, folder);
var assmbPath = Path.Combine(dir, $"{argName}.dll");
if (File.Exists(assmbPath))
{
loadAssembly = Assembly.LoadFrom(assmbPath);
}
else
{
throw new FileNotFoundException($"Unable to locate dependency: {assmbPath}");
}
}
return loadAssembly;
}
}
}