Compare commits

...

7 Commits

20 changed files with 86487 additions and 210 deletions
Split View
  1. +15
    -2
      ClickForensics.Quartz.Manager.Setup/ClickForensics.Quartz.Manager.Setup.vdproj
  2. +13
    -6
      ClickForensics.Quartz.Manager/ClickForensics.Quartz.Manager.csproj
  3. +228
    -0
      ClickForensics.Quartz.Manager/ClickForensics.Quartz.Manager.csproj.bak
  4. +32
    -72
      ClickForensics.Quartz.Manager/MainForm.Designer.cs
  5. +146
    -84
      ClickForensics.Quartz.Manager/MainForm.cs
  6. +24
    -21
      ClickForensics.Quartz.Manager/Program.cs
  7. +7
    -2
      ClickForensics.Quartz.Manager/QuartzScheduler.cs
  8. +1
    -1
      ClickForensics.Quartz.Manager/RegistryStore.cs
  9. +21
    -20
      ClickForensics.Quartz.Manager/SchedulerNode.cs
  10. +25
    -0
      ClickForensics.Quartz.Manager/log4net.config
  11. +4
    -0
      ClickForensics.Quartz.Manager/packages.config
  12. +2
    -2
      README
  13. BIN
      packages/log4net.1.2.10/lib/1.0/log4net.dll
  14. +28655
    -0
      packages/log4net.1.2.10/lib/1.0/log4net.xml
  15. BIN
      packages/log4net.1.2.10/lib/1.1/log4net.dll
  16. +28655
    -0
      packages/log4net.1.2.10/lib/1.1/log4net.xml
  17. BIN
      packages/log4net.1.2.10/lib/2.0/log4net.dll
  18. +28655
    -0
      packages/log4net.1.2.10/lib/2.0/log4net.xml
  19. BIN
      packages/log4net.1.2.10/log4net.1.2.10.nupkg
  20. +4
    -0
      packages/repositories.config

+ 15
- 2
ClickForensics.Quartz.Manager.Setup/ClickForensics.Quartz.Manager.Setup.vdproj View File

@@ -80,6 +80,19 @@
"PrerequisitesLocation" = "2:1"
"Url" = "8:"
"ComponentsUrl" = "8:"
"Items"
{
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:.NETFramework,Version=v4.0,Profile=Client"
{
"Name" = "8:Microsoft .NET Framework 4 Client Profile (x86 and x64)"
"ProductCode" = "8:.NETFramework,Version=v4.0,Profile=Client"
}
"{EDC2488A-8267-493A-A98E-7D9C3B36CDF3}:Microsoft.Windows.Installer.3.1"
{
"Name" = "8:Windows Installer 3.1"
"ProductCode" = "8:Microsoft.Windows.Installer.3.1"
}
}
}
}
"Release"
@@ -275,7 +288,7 @@
"Product"
{
"Name" = "8:Microsoft Visual Studio"
"ProductName" = "8:Quartz.Net Manager"
"ProductName" = "8:Quartz.Net-1.0 Manager"
"ProductCode" = "8:{35E7E363-C413-4BCA-B0D6-1E0D7277F2EB}"
"PackageCode" = "8:{E292DFAA-0752-4BA9-945D-F33FD0742798}"
"UpgradeCode" = "8:{41236195-C6AD-462D-934D-034CDFCDB6E0}"
@@ -812,7 +825,7 @@
{
"{5259A561-127C-4D43-A0A1-72F10C7B3BF8}:_22F9343A882E45B59179759884B708BD"
{
"SourcePath" = "8:..\\ClickForensics.Quartz.Manager\\obj\\Release\\ClickForensics.Quartz.Manager.exe"
"SourcePath" = "8:..\\ClickForensics.Quartz.Manager\\obj\\Debug\\ClickForensics.Quartz.Manager.exe"
"TargetName" = "8:"
"Tag" = "8:"
"Folder" = "8:_D7658F850B314942942D9354F682D7DA"


+ 13
- 6
ClickForensics.Quartz.Manager/ClickForensics.Quartz.Manager.csproj View File

@@ -54,6 +54,9 @@
<Reference Include="Common.Logging">
<HintPath>..\lib\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.1.2.10\lib\2.0\log4net.dll</HintPath>
</Reference>
<Reference Include="Quartz">
<HintPath>..\lib\Quartz.dll</HintPath>
</Reference>
@@ -161,6 +164,10 @@
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="log4net.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
@@ -210,11 +217,11 @@
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

+ 228
- 0
ClickForensics.Quartz.Manager/ClickForensics.Quartz.Manager.csproj.bak View File

@@ -0,0 +1,228 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{D23DACFA-11A1-480E-A6C4-1F37B564523D}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ClickForensics.Quartz.Manager</RootNamespace>
<AssemblyName>ClickForensics.Quartz.Manager</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation />
<TargetFrameworkProfile />
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Common.Logging">
<HintPath>..\lib\Common.Logging.dll</HintPath>
</Reference>
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
<HintPath>..\packages\log4net.1.2.10\lib\2.0\log4net.dll</HintPath>
</Reference>
<Reference Include="Quartz, Version=1.0.3.3, Culture=neutral, PublicKeyToken=f6b8c98a402cc8a4, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\svn\clickforensics\TRUNK\Libraries\Quartz.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.configuration" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="AddJobForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AddJobForm.Designer.cs">
<DependentUpon>AddJobForm.cs</DependentUpon>
</Compile>
<Compile Include="AddListenerForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="AddListenerForm.Designer.cs">
<DependentUpon>AddListenerForm.cs</DependentUpon>
</Compile>
<Compile Include="AssemblyRepository.cs" />
<Compile Include="ConnectionInfo.cs" />
<Compile Include="DeleteAssembliesForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="DeleteAssembliesForm.Designer.cs">
<DependentUpon>DeleteAssembliesForm.cs</DependentUpon>
</Compile>
<Compile Include="SimpleTriggerDisplay.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="SimpleTriggerDisplay.Designer.cs">
<DependentUpon>SimpleTriggerDisplay.cs</DependentUpon>
</Compile>
<Compile Include="ErrorDialog.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ErrorDialog.Designer.cs">
<DependentUpon>ErrorDialog.cs</DependentUpon>
</Compile>
<Compile Include="JobType.cs" />
<Compile Include="NativeJobDetailDisplay.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="NativeJobDetailDisplay.Designer.cs">
<DependentUpon>NativeJobDetailDisplay.cs</DependentUpon>
</Compile>
<Compile Include="JobNode.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<EmbeddedResource Include="AddJobForm.resx">
<DependentUpon>AddJobForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="AddListenerForm.resx">
<DependentUpon>AddListenerForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="DeleteAssembliesForm.resx">
<DependentUpon>DeleteAssembliesForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="SimpleTriggerDisplay.resx">
<DependentUpon>SimpleTriggerDisplay.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="CronTriggerDisplay.resx">
<DependentUpon>CronTriggerDisplay.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ErrorDialog.resx">
<DependentUpon>ErrorDialog.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="NativeJobDetailDisplay.resx">
<DependentUpon>NativeJobDetailDisplay.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="ServerConnectForm.resx">
<DependentUpon>ServerConnectForm.cs</DependentUpon>
</EmbeddedResource>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<None Include="app.config" />
<None Include="log4net.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="QuartzScheduler.cs" />
<Compile Include="RegistryStore.cs" />
<Compile Include="SchedulerNode.cs" />
<Compile Include="ServerConnectForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ServerConnectForm.Designer.cs">
<DependentUpon>ServerConnectForm.cs</DependentUpon>
</Compile>
<Compile Include="CronTriggerDisplay.cs">
<SubType>UserControl</SubType>
</Compile>
<Compile Include="CronTriggerDisplay.Designer.cs">
<DependentUpon>CronTriggerDisplay.cs</DependentUpon>
</Compile>
<Compile Include="TriggerNode.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="JobAssemblies.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

+ 32
- 72
ClickForensics.Quartz.Manager/MainForm.Designer.cs View File

@@ -34,11 +34,9 @@
this.connectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.jobsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addJobToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.listenersStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.globalListenersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addGlobalJobListenerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addTriggerListenerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addJobListenerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.jobAssembliesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addAssemblyMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteAssemblyMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.serverConnectStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
this.StripStatusLabel_Job_Groups = new System.Windows.Forms.ToolStripStatusLabel();
@@ -60,9 +58,7 @@
this.listView_RunningJobs = new System.Windows.Forms.ListView();
this.JobName = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.JobDuration = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
this.jobAssembliesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.addAssemblyMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteAssemblyMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.deleteToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.mainMenuStrip.SuspendLayout();
this.statusStrip1.SuspendLayout();
this.ctxScheduler.SuspendLayout();
@@ -73,7 +69,6 @@
this.mainMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.schedulerToolStripMenuItem,
this.jobsToolStripMenuItem,
this.listenersStripMenuItem,
this.jobAssembliesToolStripMenuItem});
this.mainMenuStrip.Location = new System.Drawing.Point(0, 0);
this.mainMenuStrip.Name = "mainMenuStrip";
@@ -108,48 +103,32 @@
// addJobToolStripMenuItem
//
this.addJobToolStripMenuItem.Name = "addJobToolStripMenuItem";
this.addJobToolStripMenuItem.Size = new System.Drawing.Size(96, 22);
this.addJobToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.addJobToolStripMenuItem.Text = "Add";
this.addJobToolStripMenuItem.Click += new System.EventHandler(this.addJobToolStripMenuItem_Click);
//
// listenersStripMenuItem
//
this.listenersStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.globalListenersToolStripMenuItem,
this.addJobListenerToolStripMenuItem});
this.listenersStripMenuItem.Enabled = false;
this.listenersStripMenuItem.Name = "listenersStripMenuItem";
this.listenersStripMenuItem.Size = new System.Drawing.Size(65, 20);
this.listenersStripMenuItem.Text = "Listeners";
//
// globalListenersToolStripMenuItem
//
this.globalListenersToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addGlobalJobListenerToolStripMenuItem,
this.addTriggerListenerToolStripMenuItem});
this.globalListenersToolStripMenuItem.Name = "globalListenersToolStripMenuItem";
this.globalListenersToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
this.globalListenersToolStripMenuItem.Text = "Global";
//
// addGlobalJobListenerToolStripMenuItem
// jobAssembliesToolStripMenuItem
//
this.addGlobalJobListenerToolStripMenuItem.Name = "addGlobalJobListenerToolStripMenuItem";
this.addGlobalJobListenerToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
this.addGlobalJobListenerToolStripMenuItem.Text = "Add Job Listener";
this.addGlobalJobListenerToolStripMenuItem.Click += new System.EventHandler(this.addGlobalListenerToolStripMenuItem_Click);
this.jobAssembliesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addAssemblyMenuItem,
this.deleteAssemblyMenuItem});
this.jobAssembliesToolStripMenuItem.Name = "jobAssembliesToolStripMenuItem";
this.jobAssembliesToolStripMenuItem.Size = new System.Drawing.Size(99, 20);
this.jobAssembliesToolStripMenuItem.Text = "Job Assemblies";
//
// addTriggerListenerToolStripMenuItem
// addAssemblyMenuItem
//
this.addTriggerListenerToolStripMenuItem.Name = "addTriggerListenerToolStripMenuItem";
this.addTriggerListenerToolStripMenuItem.Size = new System.Drawing.Size(181, 22);
this.addTriggerListenerToolStripMenuItem.Text = "Add Trigger Listener";
this.addAssemblyMenuItem.Name = "addAssemblyMenuItem";
this.addAssemblyMenuItem.Size = new System.Drawing.Size(152, 22);
this.addAssemblyMenuItem.Text = "Add";
this.addAssemblyMenuItem.Click += new System.EventHandler(this.addAssemblyMenuItem_Click);
//
// addJobListenerToolStripMenuItem
// deleteAssemblyMenuItem
//
this.addJobListenerToolStripMenuItem.Name = "addJobListenerToolStripMenuItem";
this.addJobListenerToolStripMenuItem.Size = new System.Drawing.Size(161, 22);
this.addJobListenerToolStripMenuItem.Text = "Add Job Listener";
this.addJobListenerToolStripMenuItem.Click += new System.EventHandler(this.addJobListenerToolStripMenuItem_Click);
this.deleteAssemblyMenuItem.Name = "deleteAssemblyMenuItem";
this.deleteAssemblyMenuItem.Size = new System.Drawing.Size(152, 22);
this.deleteAssemblyMenuItem.Text = "Delete";
this.deleteAssemblyMenuItem.Click += new System.EventHandler(this.deleteAssemblyMenuItem_Click);
//
// statusStrip1
//
@@ -295,14 +274,15 @@
// ctxScheduler
//
this.ctxScheduler.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.backupToolStripMenuItem});
this.backupToolStripMenuItem,
this.deleteToolStripMenuItem});
this.ctxScheduler.Name = "ctxScheduler";
this.ctxScheduler.Size = new System.Drawing.Size(109, 26);
this.ctxScheduler.Size = new System.Drawing.Size(153, 70);
//
// backupToolStripMenuItem
//
this.backupToolStripMenuItem.Name = "backupToolStripMenuItem";
this.backupToolStripMenuItem.Size = new System.Drawing.Size(108, 22);
this.backupToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.backupToolStripMenuItem.Text = "Backup";
this.backupToolStripMenuItem.Click += new System.EventHandler(this.backupToolStripMenuItem_Click);
//
@@ -333,28 +313,12 @@
//
this.JobDuration.Text = "Duration";
//
// jobAssembliesToolStripMenuItem
//
this.jobAssembliesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.addAssemblyMenuItem,
this.deleteAssemblyMenuItem});
this.jobAssembliesToolStripMenuItem.Name = "jobAssembliesToolStripMenuItem";
this.jobAssembliesToolStripMenuItem.Size = new System.Drawing.Size(99, 20);
this.jobAssembliesToolStripMenuItem.Text = "Job Assemblies";
//
// addAssemblyMenuItem
//
this.addAssemblyMenuItem.Name = "addAssemblyMenuItem";
this.addAssemblyMenuItem.Size = new System.Drawing.Size(152, 22);
this.addAssemblyMenuItem.Text = "Add";
this.addAssemblyMenuItem.Click += new System.EventHandler(this.addAssemblyMenuItem_Click);
// deleteToolStripMenuItem
//
// deleteAssemblyMenuItem
//
this.deleteAssemblyMenuItem.Name = "deleteAssemblyMenuItem";
this.deleteAssemblyMenuItem.Size = new System.Drawing.Size(152, 22);
this.deleteAssemblyMenuItem.Text = "Delete";
this.deleteAssemblyMenuItem.Click += new System.EventHandler(this.deleteAssemblyMenuItem_Click);
this.deleteToolStripMenuItem.Name = "deleteToolStripMenuItem";
this.deleteToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.deleteToolStripMenuItem.Text = "Delete";
this.deleteToolStripMenuItem.Click += new System.EventHandler(this.deleteToolStripMenuItem_Click);
//
// MainForm
//
@@ -396,11 +360,6 @@
private System.Windows.Forms.StatusStrip statusStrip1;
private System.Windows.Forms.ToolStripStatusLabel serverConnectStatusLabel;
private System.Windows.Forms.TreeView jobGroupsTreeView;
private System.Windows.Forms.ToolStripMenuItem listenersStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem globalListenersToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem addGlobalJobListenerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem addTriggerListenerToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem addJobListenerToolStripMenuItem;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.ToolStripMenuItem jobsToolStripMenuItem;
@@ -424,6 +383,7 @@
private System.Windows.Forms.ToolStripMenuItem jobAssembliesToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem addAssemblyMenuItem;
private System.Windows.Forms.ToolStripMenuItem deleteAssemblyMenuItem;
private System.Windows.Forms.ToolStripMenuItem deleteToolStripMenuItem;
}
}

+ 146
- 84
ClickForensics.Quartz.Manager/MainForm.cs View File

@@ -12,6 +12,7 @@ using System.Net.Sockets;
//using ClickForensics.Quartz.Jobs;
using System.IO;
using System.Reflection;
using log4net;
namespace ClickForensics.Quartz.Manager
{
@@ -21,14 +22,7 @@ namespace ClickForensics.Quartz.Manager
{
InitializeComponent();
jobGroupsTreeView.AfterSelect += new TreeViewEventHandler(jobGroupsTreeView_AfterSelect);
ctxScheduler.Opening += new CancelEventHandler(ctxScheduler_Opening);
jobGroupsTreeView.MouseDown += new MouseEventHandler(jobGroupsTreeView_MouseDown);
}
void ctxScheduler_Opening(object sender, CancelEventArgs e)
{
}
void jobGroupsTreeView_AfterSelect(object sender, TreeViewEventArgs e)
@@ -80,9 +74,11 @@ namespace ClickForensics.Quartz.Manager
private void setPauseButtonText()
{
TriggerNode node = (TriggerNode)jobGroupsTreeView.SelectedNode;
QuartzScheduler scheduler = getScheduler(node);
string name = node.Trigger.Name;
string group = node.Trigger.Group;
if (Scheduler.GetScheduler().GetTriggerState(name, group) == TriggerState.Paused)
if (scheduler.GetScheduler().GetTriggerState(name, group) == TriggerState.Paused)
{
btnPause.Text = "Resume";
}
@@ -101,11 +97,10 @@ namespace ClickForensics.Quartz.Manager
{
try
{
Scheduler = new QuartzScheduler(form.Server, form.Port, form.Scheduler);
serverConnectStatusLabel.Text = string.Format("Connected to {0}", Scheduler.Address);
connectToolStripMenuItem.Enabled = false;
QuartzScheduler scheduler = new QuartzScheduler(form.Server, form.Port, form.Scheduler);
serverConnectStatusLabel.Text = string.Format("Connected to {0}", scheduler.Address);
jobsToolStripMenuItem.Enabled = true;
loadJobGroups();
loadJobGroups(scheduler);
updateRunningJobs();
}
catch (SocketException ex)
@@ -118,31 +113,26 @@ namespace ClickForensics.Quartz.Manager
}
form.Close();
}
//loadGlobalTriggers();
}
//private void loadGlobalTriggers()
//{
// foreach (IJobListener jobListener in Scheduler.GetScheduler().GetJobDetail(null,null)..GlobalJobListeners)
// {
// globalTriggersListView.Items.Add(jobListener.Name);
// }
//}
private void loadJobGroups()
private void loadJobGroups(QuartzScheduler scheduler)
{
try
{
this.Cursor = Cursors.WaitCursor;
jobDetailsToggle(false);
jobGroupsTreeView.Nodes.Clear();
SchedulerNode schedulerNode = new SchedulerNode(Scheduler);
SchedulerNode schedulerNode = new SchedulerNode(scheduler);
if (jobGroupsTreeView.Nodes.ContainsKey(schedulerNode.Name))
{
jobGroupsTreeView.Nodes.RemoveByKey(schedulerNode.Name);
}
schedulerNode.ContextMenuStrip = ctxScheduler;
jobGroupsTreeView.Nodes.Add(schedulerNode);
TreeNode jobGroupsNode = schedulerNode.Nodes.Add("Job Groups");
string[] jobGroups = Scheduler.GetScheduler().JobGroupNames;
string[] jobGroups = schedulerNode.Scheduler.GetScheduler().JobGroupNames;
foreach (string jobGroup in jobGroups)
{
TreeNode jobGroupNode = jobGroupsNode.Nodes.Add(jobGroup);
@@ -162,8 +152,6 @@ namespace ClickForensics.Quartz.Manager
{
this.Cursor = Cursors.Default;
}
}
private static void loadCalendars(SchedulerNode schedulerNode)
@@ -178,12 +166,49 @@ namespace ClickForensics.Quartz.Manager
private void loadStuckTriggers(SchedulerNode schedulerNode)
{
TreeNode jobGroupsNode = schedulerNode.Nodes.Add("Stuck Triggers");
TreeNode stuckTriggersNode = schedulerNode.Nodes.Add("Stuck Triggers");
var triggerGroupNames = schedulerNode.Scheduler.GetScheduler().TriggerGroupNames;
foreach (var triggerGroupName in triggerGroupNames)
{
var triggerNames = schedulerNode.Scheduler.GetScheduler().GetTriggerNames(triggerGroupName);
foreach (var triggerName in triggerNames)
{
var state = schedulerNode.Scheduler.GetScheduler().GetTriggerState(triggerName, triggerGroupName);
var trigger = schedulerNode.Scheduler.GetScheduler().GetTrigger(triggerName, triggerGroupName);
if (state == TriggerState.Complete)
{
stuckTriggersNode.Nodes.Add(new TriggerNode(trigger));
}
}
}
}
private void loadOrphanJobs(SchedulerNode schedulerNode)
{
TreeNode jobGroupsNode = schedulerNode.Nodes.Add("Orphan Jobs");
TreeNode orphanJobsNode = schedulerNode.Nodes.Add("Orphan Jobs");
var groupNames = schedulerNode.Scheduler.GetScheduler().JobGroupNames;
foreach (var jobGroupName in groupNames)
{
var jobNames = schedulerNode.Scheduler.GetScheduler().GetJobNames(jobGroupName);
foreach (var jobName in jobNames)
{
try
{
var triggers = schedulerNode.Scheduler.GetScheduler().GetTriggersOfJob(jobName, jobGroupName);
if (triggers.Length == 0)
{
orphanJobsNode.Nodes.Add(
new JobNode(schedulerNode.Scheduler.GetScheduler().GetJobDetail(jobName, jobGroupName)));
}
}
catch (Exception ex)
{
_Log.Error("Error loading orphan jobs.", ex);
}
}
}
}
private void jobDetailsToggle(bool isVisible)
@@ -202,27 +227,30 @@ namespace ClickForensics.Quartz.Manager
if (node != null)
{
jobGroupsTreeView.SelectedNode = node;
if (node.Text == "Orphan Jobs")
{
ctxScheduler.Items["deleteToolStripMenuItem"].Enabled = true;
}
else
{
ctxScheduler.Items["deleteToolStripMenuItem"].Enabled = false;
}
ctxScheduler.Show(jobGroupsTreeView, e.Location);
}
}
}
//private void loadJobs()
//{
// foreach (TreeNode node in jobGroupsTreeView.Nodes)
// {
// addJobNodes(node);
// }
//}
private void addJobNodes(TreeNode node)
{
string group = node.Parent.Text;
string[] jobs = Scheduler.GetScheduler().GetJobNames(group);
QuartzScheduler scheduler = getScheduler(node);
string[] jobs = scheduler.GetScheduler().GetJobNames(group);
foreach (string jobName in jobs)
{
try
{
JobDetail detail = Scheduler.GetScheduler().GetJobDetail(jobName, group);
JobDetail detail = scheduler.GetScheduler().GetJobDetail(jobName, group);
JobNode jobNode = new JobNode(detail);
node.Nodes.Add(jobNode);
addTriggerNodes(jobNode);
@@ -232,10 +260,12 @@ namespace ClickForensics.Quartz.Manager
{
node.Nodes.Add(string.Format("Unknown Job Type ({0})", jobName));
//TODO: Do something useful with this exception. Most likely cause is the client does not have a copy of a given dll and can't load the type.
_Log.Error("Error loading jobs.", ex);
}
}
}
private void addListenerNodes(JobNode node)
{
string jobName = node.Text;
@@ -245,12 +275,13 @@ namespace ClickForensics.Quartz.Manager
{
node.Text = string.Format("JL {0}", listenerNames);
}
//ISet set = Scheduler.GetScheduler().JobListenerNames;
}
private void addTriggerNodes(TreeNode treeNode)
{
Trigger[] triggers = Scheduler.GetScheduler().GetTriggersOfJob(treeNode.Text, treeNode.Parent.Parent.Text);
QuartzScheduler scheduler = getScheduler(treeNode);
Trigger[] triggers = scheduler.GetScheduler().GetTriggersOfJob(treeNode.Text, treeNode.Parent.Parent.Text);
TreeNode triggersNode = treeNode.Nodes.Add("Triggers");
foreach (Trigger trigger in triggers)
{
@@ -258,7 +289,6 @@ namespace ClickForensics.Quartz.Manager
triggersNode.Nodes.Add(node);
addCalendarNode(node);
}
}
private void addCalendarNode(TriggerNode node)
@@ -283,54 +313,43 @@ namespace ClickForensics.Quartz.Manager
timer_Refresh_Running_Jobs.Stop();
listView_RunningJobs.Items.Clear();
DataTable table = Scheduler.GetRunningJobs();
foreach (DataRow row in table.Rows)
List<QuartzScheduler> schedulers = getAllSchedulers();
foreach (var quartzScheduler in schedulers)
{
//JobName JobDuration
ListViewItem item = new ListViewItem(new string[] { Convert.ToString(row["JobName"]), Convert.ToString(row["Runtime"]) });
listView_RunningJobs.Items.Add(item);
DataTable table = quartzScheduler.GetRunningJobs();
foreach (DataRow row in table.Rows)
{
ListViewItem item = new ListViewItem(new string[] { Convert.ToString(row["JobName"]), Convert.ToString(row["Runtime"]) });
listView_RunningJobs.Items.Add(item);
}
}
StripStatusLabel_Jobs_Refresh_date.Text = DateTime.Now.ToString("yyyy.MM.dd HH:mm.ss");
StripStatusLabel_Jobs_Refresh_date.Text = DateTime.Now.ToString("yyyy.MM.dd HH:mm.ss");
//reset the timer ( documentation not clear if .stop = restart @ 0 in timing, but changing the interval sure should do that. )
int timer_was = timer_Refresh_Running_Jobs.Interval;
timer_Refresh_Running_Jobs.Interval = timer_was + 1;
timer_Refresh_Running_Jobs.Interval = timer_was;
timer_Refresh_Running_Jobs.Start();
}
catch (Exception ex)
{
_Log.Error("Unable to load running jobs", ex);
}
finally
{
this.Cursor = Cursors.Default;
}
}
public QuartzScheduler Scheduler { get; set; }
private void addGlobalListenerToolStripMenuItem_Click(object sender, EventArgs e)
private List<QuartzScheduler> getAllSchedulers()
{
AddListenerForm form = new AddListenerForm();
form.ListenerInterface = typeof(IJobListener);
form.ShowDialog();
JobDataMap map = new JobDataMap();
map.Add("type", form.ListenerType);
//Scheduler.ScheduleOneTimeJob(typeof(AddJobListenerJob), map, 0);
loadJobGroups();
}
private void addJobListenerToolStripMenuItem_Click(object sender, EventArgs e)
{
TreeNode selectedNode = jobGroupsTreeView.SelectedNode;
if (selectedNode != null && selectedNode is JobNode)
List<QuartzScheduler> schedulers = new List<QuartzScheduler>();
foreach (var node in jobGroupsTreeView.Nodes)
{
AddListenerForm form = new AddListenerForm();
form.ListenerInterface = typeof(IJobListener);
form.ShowDialog();
//JobHistoryListener listener = new JobHistoryListener();
//listener.Name = null;
//((JobNode)selectedNode).Detail.AddJobListener();
schedulers.Add(((SchedulerNode)node).Scheduler);
}
return schedulers;
}
private void addJobToolStripMenuItem_Click(object sender, EventArgs e)
@@ -339,11 +358,18 @@ namespace ClickForensics.Quartz.Manager
form.ShowDialog();
if (form.JobDetail != null && form.Trigger != null)
{
Scheduler.GetScheduler().ScheduleJob(form.JobDetail, form.Trigger);
loadJobGroups();
QuartzScheduler scheduler = getSelectedScheduler();
scheduler.GetScheduler().ScheduleJob(form.JobDetail, form.Trigger);
loadJobGroups(scheduler);
}
}
private QuartzScheduler getSelectedScheduler()
{
TreeNode node = jobGroupsTreeView.SelectedNode;
return getScheduler(node);
}
private void btnRefreshRunningJobs_Click(object sender, EventArgs e)
{
updateRunningJobs();
@@ -351,15 +377,21 @@ namespace ClickForensics.Quartz.Manager
private void btnRefreshJobGroups_Click(object sender, EventArgs e)
{
loadJobGroups();
List<QuartzScheduler> schedulers = getAllSchedulers();
foreach (var quartzScheduler in schedulers)
{
loadJobGroups(quartzScheduler);
}
}
private void btnRunJobNow_Click(object sender, EventArgs e)
{
JobNode node = (JobNode)jobGroupsTreeView.SelectedNode;
QuartzScheduler scheduler = getScheduler(node);
string job = node.Detail.Name;
string group = node.Detail.Group;
Scheduler.GetScheduler().TriggerJobWithVolatileTrigger(job, group);
scheduler.GetScheduler().TriggerJobWithVolatileTrigger(job, group);
}
private void btnDeleteJob_Click(object sender, EventArgs e)
@@ -368,45 +400,59 @@ namespace ClickForensics.Quartz.Manager
if (selectedNode is JobNode)
{
JobNode node = (JobNode)jobGroupsTreeView.SelectedNode;
QuartzScheduler scheduler = getScheduler(node);
string job = node.Detail.Name;
string group = node.Detail.Group;
Scheduler.GetScheduler().DeleteJob(job, group);
scheduler.GetScheduler().DeleteJob(job, group);
jobGroupsTreeView.SelectedNode.Remove();
}
if (selectedNode is TriggerNode)
{
Scheduler.GetScheduler().UnscheduleJob(((TriggerNode)selectedNode).Trigger.Name, ((TriggerNode)selectedNode).Trigger.Group);
}
TriggerNode node = (TriggerNode)selectedNode;
QuartzScheduler scheduler = getScheduler(node);
//loadJobGroups();
scheduler.GetScheduler().UnscheduleJob(node.Trigger.Name, ((TriggerNode)selectedNode).Trigger.Group);
selectedNode.Remove();
}
}
private void btnPause_Click(object sender, EventArgs e)
{
TriggerNode node = (TriggerNode)jobGroupsTreeView.SelectedNode;
QuartzScheduler scheduler = getScheduler(node);
string name = node.Trigger.Name;
string group = node.Trigger.Group;
if (Scheduler.GetScheduler().GetTriggerState(name, group) == TriggerState.Paused)
if (scheduler.GetScheduler().GetTriggerState(name, group) == TriggerState.Paused)
{
Scheduler.GetScheduler().ResumeTrigger(name, group);
scheduler.GetScheduler().ResumeTrigger(name, group);
}
else
{
Scheduler.GetScheduler().PauseTrigger(name, group);
scheduler.GetScheduler().PauseTrigger(name, group);
}
setPauseButtonText();
}
private QuartzScheduler getScheduler(TreeNode node)
{
if (node is SchedulerNode)
{
return ((SchedulerNode)node).Scheduler;
}
return getScheduler(node.Parent);
}
private void btnEdit_Click(object sender, EventArgs e)
{
TriggerNode node = (TriggerNode)jobGroupsTreeView.SelectedNode;
QuartzScheduler scheduler = getScheduler(node);
AddJobForm form = new AddJobForm(node);
form.ShowDialog();
if (form.JobDetail != null && form.Trigger != null)
{
Scheduler.GetScheduler().RescheduleJob(node.Trigger.Name, node.Trigger.Group, form.Trigger);
loadJobGroups();
scheduler.GetScheduler().RescheduleJob(node.Trigger.Name, node.Trigger.Group, form.Trigger);
loadJobGroups(scheduler);
}
}
@@ -442,5 +488,21 @@ namespace ClickForensics.Quartz.Manager
form.Close();
}
}
private static readonly ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
private void deleteToolStripMenuItem_Click(object sender, EventArgs e)
{
QuartzScheduler scheduler = ((SchedulerNode)((TreeView)((ContextMenuStrip)((ToolStripMenuItem)sender).Owner).SourceControl).SelectedNode.Parent).Scheduler;
var node = ((TreeView)((ContextMenuStrip)((ToolStripMenuItem)sender).Owner).SourceControl).SelectedNode;
foreach (var item in node.Nodes)
{
if (item is JobNode)
{
scheduler.GetScheduler().DeleteJob(((JobNode)item).Detail.Name, ((JobNode)item).Detail.Group);
node.Nodes.Remove((JobNode)item);
}
}
}
}
}

+ 24
- 21
ClickForensics.Quartz.Manager/Program.cs View File

@@ -1,21 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace ClickForensics.Quartz.Manager
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using log4net.Config;
namespace ClickForensics.Quartz.Manager
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
XmlConfigurator.Configure(new FileInfo("log4net.config"));
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MainForm());
}
}
}

+ 7
- 2
ClickForensics.Quartz.Manager/QuartzScheduler.cs View File

@@ -11,6 +11,8 @@ using System.Collections;
using System.Windows.Forms;
using System.IO;
using System.Xml.Linq;
using log4net;
using System.Reflection;
namespace ClickForensics.Quartz.Manager
{
@@ -25,8 +27,9 @@ namespace ClickForensics.Quartz.Manager
{
_scheduler = _schedulerFactory.GetScheduler();
}
catch (SchedulerException)
catch (SchedulerException ex)
{
_Log.Error(string.Format("Unable to connect to scheduler {0}", Address), ex);
MessageBox.Show("Unable to connect to the specified server", "Connection Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
@@ -34,7 +37,7 @@ namespace ClickForensics.Quartz.Manager
private NameValueCollection getProperties(string address)
{
NameValueCollection properties = new NameValueCollection();
properties["quartz.scheduler.instanceName"] = "RemoteClient";
properties["quartz.scheduler.instanceName"] = "RemoteClient"+DateTime.Now.ToString("yyyyMMddHHmmss");
properties["quartz.scheduler.proxy"] = "true";
properties["quartz.threadPool.threadCount"] = "0";
properties["quartz.scheduler.proxy.address"] = address;
@@ -137,6 +140,7 @@ namespace ClickForensics.Quartz.Manager
catch (Exception ex)
{
//TODO: Let the user know we couldn't load the running jobs.
_Log.Error("Error loading running jobs.", ex);
}
return table;
@@ -307,5 +311,6 @@ namespace ClickForensics.Quartz.Manager
);
return simpleTrigger;
}
private static readonly ILog _Log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
}
}

+ 1
- 1
ClickForensics.Quartz.Manager/RegistryStore.cs View File

@@ -27,7 +27,7 @@ namespace ClickForensics.Quartz.Manager
return lastConnections;
}
for (int i = 0; i < 5; i++)
for (int i = 0; i < 1; i++)
{
ConnectionInfo info = ConnectionInfo.Parse((key.GetValue(string.Format("connection{0}", i), null) as string));
if (info != null)


+ 21
- 20
ClickForensics.Quartz.Manager/SchedulerNode.cs View File

@@ -1,20 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace ClickForensics.Quartz.Manager
{
public class SchedulerNode : TreeNode
{
public SchedulerNode(QuartzScheduler scheduler)
: base()
{
this.Text = scheduler.Address;
Scheduler = scheduler;
}
public QuartzScheduler Scheduler { get; private set; }

}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ClickForensics.Quartz.Manager
{
public class SchedulerNode : TreeNode
{
public SchedulerNode(QuartzScheduler scheduler)
: base()
{
this.Text = scheduler.Address;
Scheduler = scheduler;
Name = this.Scheduler.Address;
}
public QuartzScheduler Scheduler { get; private set; }
}
}

+ 25
- 0
ClickForensics.Quartz.Manager/log4net.config View File

@@ -0,0 +1,25 @@
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %5level %logger - %message%newline" />
</layout>
</appender>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="Manager.log" />
<appendToFile value="true" />
<maximumFileSize value="10000KB" />
<maxSizeRollBackups value="-1" />
<countDirection value="1"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %property{pid} %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="Console" />
<appender-ref ref="RollingFile" />
</root>
</log4net>

+ 4
- 0
ClickForensics.Quartz.Manager/packages.config View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="log4net" version="1.2.10" />
</packages>

+ 2
- 2
README View File

@@ -1,8 +1,8 @@
GETTING STARTED
We don't have an installer or binary release yet, so for now you will have to download the source code, build it and run it.
Visit the downloads section to obtain the latest version of Quartz.Net Manager. You can now download a zipped version as well as an MSI installer.

CUSTOM JOBS
You must let the program know which assemblies contain your jobs. You do so by editing the JobAssemblies.txt file and adding your assemblies there. Only jobs from the assemblies listed in that file will get loaded.
You must let the program know which assemblies contain your jobs. You do so by editing the JobAssemblies.txt file and adding your assemblies there. Only jobs from the assemblies listed in that file will get loaded. Alternatively, select the Assemblies menu option from the Quartz.Net Manager menu and add the assemblies there.

LICENSE
This code is released under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0.html).

BIN
packages/log4net.1.2.10/lib/1.0/log4net.dll View File


+ 28655
- 0
packages/log4net.1.2.10/lib/1.0/log4net.xml
File diff suppressed because it is too large
View File


BIN
packages/log4net.1.2.10/lib/1.1/log4net.dll View File


+ 28655
- 0
packages/log4net.1.2.10/lib/1.1/log4net.xml
File diff suppressed because it is too large
View File


BIN
packages/log4net.1.2.10/lib/2.0/log4net.dll View File


+ 28655
- 0
packages/log4net.1.2.10/lib/2.0/log4net.xml
File diff suppressed because it is too large
View File


BIN
packages/log4net.1.2.10/log4net.1.2.10.nupkg View File


+ 4
- 0
packages/repositories.config View File

@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<repositories>
<repository path="..\ClickForensics.Quartz.Manager\packages.config" />
</repositories>

Loading…
Cancel
Save