-
Notifications
You must be signed in to change notification settings - Fork 0
/
PowerDataOpsPlugin.cs
79 lines (70 loc) · 23.6 KB
/
PowerDataOpsPlugin.cs
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
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.IO;
using System.Linq;
using System.Reflection;
using XrmToolBox.Extensibility;
using XrmToolBox.Extensibility.Interfaces;
namespace PowerDataOps.Xtb.Plugin
{
[Export(typeof(IXrmToolBoxPlugin)),
ExportMetadata("Name", "PowerDataOps"),
ExportMetadata("Description", "Brings scripting capabilities to interact with Dataverse thanks to PowerShell."),
// Please specify the base64 content of a 32x32 pixels image
ExportMetadata("SmallImageBase64", "iVBORw0KGgoAAAANSUhEUgAAACAAAAAdCAYAAADLnm6HAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsEAAA7BAbiRa+0AAAfJSURBVEhLxZYJUBRXGoD/18f09HCJCgyIECXGAw8kBo8Y4wmuQVgUJcQ1R5XZmIpXmUpWk426WltWVtQtjdlFo2VZukbihqDENbqoq6igCfHI5QUj4qAIAzPMTF+vu/d122tlMtFdy1TtV/Xqdf/vf+//3//e/3fD/xtk9SGsn1YaG/SJKzkJPc1ybOnCf75eag09NFWTP8vFKp43tLh/O2j6sfg5A0PWoqw+BH97cI0UlObJGA9FNq7IEj80B7P3ZgpB4W+JGd1yNFl9XhWVTe4NdTOsYZMwB9b++q8ZsaJtenJ8AsDwdOiYOnxs4+XGbZ62Nrul8j/xeU5ZiiRI+xw9uKi41C5AjJOGaRxUdtzccGaCpRbuQExS1DjQoIvy5nhIXToJHCOciI22v+Jp8xRaKv+VfTm7Y8SAUCkqUo/Ghma4deOO6QAmjbLrdjoSfdK85cxQQzfMgbxlExt7jkkGWmMAkyuSkhgDqiJBS0tLwFJ5IHsn7mAFv/CJIEuDBCwCllWorvoaWm97ALE60DwCTcSxmoAPNK0/mRbiwB9L9jMzZi+a3ORvh6vbqqHqqBvY+htw+vTX+jt/WD/OUnsgiqL0FSRxgkiMGw4YTRYxfP9DA1AsEOMqaILRsFOX1GLamFQ4e2NK94Rec69dvbnZH/BM8tNRCHV/HDoVAHebChePH0M3mhqGPZWVvf3yD2e9pqX78NLoWS2+jk5VkIXxsqqAhGWIiLLB8IH9QOvEQLMkAooGOtarAKF5VHbe2wVXL1Veavd8szrgvxiIcDiWt6oMbk9MBBWr0BagiBO6rINOeX3arLwXXrP/Je+j5KNrl/eybIaQt6sIOKdjtYLwVkEWiUEdRg4eAIisIPtk6HT5QfXjr4hqYco7Y0SKYRzX7fYeQTvXXcjLnbSy/OO1pYjB+7GqEQc0wMQJxCg7KEo+rSH3HCoz+8vrad2/c52NXHzXZDgvVszRIpKi3pA15ZCkSgAyWUfAoAZJRDqkq/4WIT912dgOQ5c68OmKugTnkAmDB41qn11cWPHuqpIav3CptyoHzTKlSgEIeM7V94xOKhu/pKQ31y0u/ci3H0dWClc+MK3dh7n/WCBREUxRc6vnwv6aEzpJPxWLuJmsOWXwtqk3LbW7WVBRtvDcqy+PXlP26T7wpI/tpYjBIS1nd8H0TAwtX+0mkZBHTnEMftm1ZSd4ag/rGQuXLZcdUG+u8ACWn1/VwdjZ/OttrQt0TZuj6zA1s2zaFWvY5F4pPlV9svvS1RveRgmPLRYbvLTz2dcA+5uBiUoCd9X7wvPpaTnJIzOS6jt91NQxWbvTBw20Zj4aId+C3XvK0Yel296iHFnvdx1eYMp0TQV39WYA4cq6M9WH3jSFvyAhdaC4qEBXMBdH2xzme3v9CWhraQDgYkCU1AWjxz1X4HQ6zTGj/08zKC8vR+fPnzefDUpKSqC2thY2bdoEpaWlUFdXZ/Y/JawSkiufqUp+kqsS+G/UguJzA6JZoOhIxuvr3J7aJ+NeHf8lCPscjxg7q4Glkx6jI2LB6zkDwEYDrduA5hwQaD0HFEIBnrcX1Z744nNryiMRHgGGi4nokwXYd4fkrhcUrwt0lVQz5wDgu6aBpmkRwaCwd9ioSfnWjEcizAGEKFKzjS8vqX26avaq4gOxzQVRKSNMHV3X7bIs7R4zIW+SKXgEwo5gVPZvL3fpO7WP98Ih8HaeM2WIfEU4RyrED5sJN0+uE0hEaBIJG03TnkRnwpMH9+9xmYo/4pn5x8g+IqONPVLkDiGKsXraXI+iGbJZJhgWAZq2XTBS7+7uTXTORh1gGPRl8PZl6P1U8dLkHklPdOvW9WlyF1bIspxt6YUQGZc2Mzqhv9uZ/Libj0l02xyxborh3GTIrSpBtxxoc2PZPyf8CNTAQc/3h0HRBfPd4eDXFOTn5rKMvrb9WjW4Lx57YcqU/MZ/Ha44VXP84MYjX5STIhEOzfC5JH34eZN5PvdJjtd1jScb4zVV5jUs8yqWeBKRb8Mc4PiETjuXSkLkAJZlmwf07/feu79bpKemOD9zcLGtSOOzKiqrhlvq94WEOtO4vKWHOiFnCAfj0lkgxsmFVsyGEJIplq8Jc0BTlUiMfeQIFHIc9KntWzbIhnznR6tFRAs7NXI0okAtMJXvw/i36hIQoH6aiqHVK8HKPXfg1exYSE+mjPVNR4iLFyqXdpV+JgvsUTZbAti46A6bjW2yxCZxcV226uRwAsGO6flF85MscRjkvEfqoCHDUKRNhZfGx4Cr2QtNt333HEAUddLQDXNAlj1Rfv8F8iS6+vd9Ysld6V0q9mz8hqKV06qGba2t3rmWOAyKtmVpWIEBPSgoeSUOrt9shbV/dwPD0BDJkb8hzfgzchw3dc0ZP0JV9QxDrGs6vbX0z6IlvgeJyi4SJxAEcX5u4Ru9LfFP0J9B5AhffNYO6/Zeg7LqTnj9uXhYkBcPOZmRZkryMUl1hmZIHZjxm8VxrsY7NzRNt7Es46o5uj3MQN7Mef1crsbvjGfiTE3mkLQxmzf9CZuDFr9a0XiJ3HqnEW5y40j1JGmtGZfPSG2N7J6vP7x6oPlbHuLAxCkz2Vu3mhONZ4Zh8bkzR4y8DaHywBH0+xWremJMftoRgpkzpjW9t2SRZg0/JAD/Bmvqk52EunZZAAAAAElFTkSuQmCC"),
// Please specify the base64 content of a 80x80 pixels image
ExportMetadata("BigImageBase64", "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"),
ExportMetadata("BackgroundColor", "Black"),
ExportMetadata("PrimaryFontColor", "White"),
ExportMetadata("SecondaryFontColor", "White")]
public class PowerDataOpsPlugin : PluginBase
{
public override IXrmToolBoxPluginControl GetControl()
{
return new PowerDataOpsPluginControl();
}
/// <summary>
/// Constructor
/// </summary>
public PowerDataOpsPlugin()
{
}
/// <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;
}
}
}