f50e45f564
1) Fix an issue by adding an AssemblyResolve to find a missing xunit libraries.
80 lines
2.8 KiB
C#
80 lines
2.8 KiB
C#
#region Namespaces
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Windows.Media;
|
|
using System.Windows.Media.Imaging;
|
|
using Autodesk.Revit.ApplicationServices;
|
|
using Autodesk.Revit.UI;
|
|
#endregion
|
|
|
|
namespace xUnitRevit
|
|
{
|
|
class App : IExternalApplication
|
|
{
|
|
public Result OnStartup(UIControlledApplication a)
|
|
{
|
|
a.ControlledApplication.ApplicationInitialized += ControlledApplication_ApplicationInitialized;
|
|
|
|
string path = typeof(App).Assembly.Location;
|
|
RibbonPanel ribbonPanel = a.CreateRibbonPanel("xUnitRevit by Speckle");
|
|
|
|
var xUnitRevitButton = ribbonPanel.AddItem(new PushButtonData("Test Runner", "Test Runner", typeof(App).Assembly.Location, typeof(Command).FullName)) as PushButton;
|
|
|
|
if (xUnitRevitButton != null)
|
|
{
|
|
xUnitRevitButton.Image = LoadPngImgSource("xUnitRevitRunner.Assets.icon16.png", path);
|
|
xUnitRevitButton.LargeImage = LoadPngImgSource("xUnitRevitRunner.Assets.icon32.png", path);
|
|
xUnitRevitButton.ToolTipImage = LoadPngImgSource("xUnitRevitRunner.Assets.icon32.png", path);
|
|
xUnitRevitButton.ToolTip = "xUnit Test runner for Revit";
|
|
xUnitRevitButton.AvailabilityClassName = typeof(CmdAvailabilityViews).FullName;
|
|
xUnitRevitButton.SetContextualHelp(new ContextualHelp(ContextualHelpType.Url, "https://speckle.systems"));
|
|
}
|
|
|
|
AppDomain.CurrentDomain.AssemblyResolve += delegate (object sender, ResolveEventArgs e)
|
|
{
|
|
String currentFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
|
AssemblyName requestedName = new AssemblyName(e.Name);
|
|
if (requestedName.Name == "xunit.abstractions" || requestedName.Name == "xunit.runner.utility.net452")
|
|
{
|
|
var resolvedAssembly = Assembly.LoadFrom(Path.Combine(currentFolder, requestedName.Name + ".dll"));
|
|
return resolvedAssembly;
|
|
}
|
|
return null;
|
|
};
|
|
|
|
return Result.Succeeded;
|
|
}
|
|
|
|
private void ControlledApplication_ApplicationInitialized(object sender, Autodesk.Revit.DB.Events.ApplicationInitializedEventArgs e)
|
|
{
|
|
var app = sender as Application;
|
|
var uiapp = new UIApplication(app);
|
|
|
|
Runner.ReadConfig();
|
|
|
|
if (Runner.Config.AutoStart)
|
|
Runner.Launch(uiapp);
|
|
}
|
|
|
|
public Result OnShutdown(UIControlledApplication a)
|
|
{
|
|
return Result.Succeeded;
|
|
}
|
|
|
|
private ImageSource LoadPngImgSource(string sourceName, string path)
|
|
{
|
|
try
|
|
{
|
|
var assembly = Assembly.LoadFrom(Path.Combine(path));
|
|
var icon = assembly.GetManifestResourceStream(sourceName);
|
|
PngBitmapDecoder m_decoder = new PngBitmapDecoder(icon, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default);
|
|
ImageSource m_source = m_decoder.Frames[0];
|
|
return (m_source);
|
|
}
|
|
catch { }
|
|
|
|
return null;
|
|
}
|
|
}
|
|
}
|