source: trunk/eraser/Eraser.BlackBox/Eraser.BlackBox.csproj @ 2509

Revision 2509, 7.5 KB checked in by lowjoel, 2 years ago (diff)

Redesign the Eraser Plugin framework.

  • Split the plugin-dependent interfaces and related support classes out to Eraser.Plugins assembly
    • The extension interfaces are in the Eraser.Plugins.ExtensionPoints? namespace.
      • New IClientTool interface for plugins to create Eraser-hosted tools (e.g. #147)
    • The Registrars are in the Eraser.Plugins.Registrars namespace
    • Base types are now interfaces, no longer abstract base classes
    • Version the Eraser.plugins assembly differently from the rest of the project so that other plugins can target different versions of Eraser with the same assembly. Change the Eraser.Plugins assembly version only if there is an API change.
  • Plugin loading behaviour:
    • Core plugins will be loaded before the rest of the plugins, but they will be loaded only by assembly name and not by path
    • Non-core plugin loading is handled by the Manager Library and not the Plugin code
    • The PluginInstance? class is now the PluginInfo? class
    • There is no longer a need to indicate the default file and unused space erasure methods, PRNGs etc; they are now hardcoded to prevent plugins from changing defaults.
  • The separate command line for the Eraser shell extension has been removed.
    • The Erase on Restart menu item has been removed (since it is a scheduling option and should be set in the Task Properties Dialog)
  • Task Progress information is now pulled from the Eraser core instead of pushed via events.
  • New persistent store class to generalise the use of the old Settings class
  • IDragAndDropConfigurerFactory for transforming drag-and-drop operations to erasure targets. This removes the Eraser.exe assembly's dependency on Eraser.DefaultPlugins?.

Closes #363.

Line 
1<?xml version="1.0" encoding="utf-8"?>
2<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3  <PropertyGroup>
4    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
5    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
6    <ProductVersion>9.0.30729</ProductVersion>
7    <SchemaVersion>2.0</SchemaVersion>
8    <ProjectGuid>{F8C3524E-B846-454B-BA41-5E2AA64BD56B}</ProjectGuid>
9    <OutputType>Library</OutputType>
10    <AppDesignerFolder>Properties</AppDesignerFolder>
11    <RootNamespace>Eraser.BlackBox</RootNamespace>
12    <AssemblyName>Eraser.BlackBox</AssemblyName>
13    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
14    <FileAlignment>512</FileAlignment>
15    <SignAssembly>true</SignAssembly>
16    <AssemblyOriginatorKeyFile>..\Strong Name.snk</AssemblyOriginatorKeyFile>
17    <FileUpgradeFlags>
18    </FileUpgradeFlags>
19    <OldToolsVersion>3.5</OldToolsVersion>
20    <UpgradeBackupLocation />
21    <PublishUrl>publish\</PublishUrl>
22    <Install>true</Install>
23    <InstallFrom>Disk</InstallFrom>
24    <UpdateEnabled>false</UpdateEnabled>
25    <UpdateMode>Foreground</UpdateMode>
26    <UpdateInterval>7</UpdateInterval>
27    <UpdateIntervalUnits>Days</UpdateIntervalUnits>
28    <UpdatePeriodically>false</UpdatePeriodically>
29    <UpdateRequired>false</UpdateRequired>
30    <MapFileExtensions>true</MapFileExtensions>
31    <ApplicationRevision>0</ApplicationRevision>
32    <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
33    <IsWebBootstrapper>false</IsWebBootstrapper>
34    <UseApplicationTrust>false</UseApplicationTrust>
35    <BootstrapperEnabled>true</BootstrapperEnabled>
36    <TargetFrameworkProfile />
37  </PropertyGroup>
38  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
39    <DebugSymbols>true</DebugSymbols>
40    <DebugType>full</DebugType>
41    <Optimize>false</Optimize>
42    <OutputPath>..\bin\Debug\Plugins\</OutputPath>
43    <DefineConstants>DEBUG;TRACE</DefineConstants>
44    <ErrorReport>prompt</ErrorReport>
45    <WarningLevel>4</WarningLevel>
46    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
47  </PropertyGroup>
48  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
49    <DebugType>pdbonly</DebugType>
50    <Optimize>true</Optimize>
51    <OutputPath>..\bin\Release\Plugins\</OutputPath>
52    <DefineConstants>TRACE</DefineConstants>
53    <ErrorReport>prompt</ErrorReport>
54    <WarningLevel>4</WarningLevel>
55    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
56  </PropertyGroup>
57  <ItemGroup>
58    <Reference Include="BevelLine, Version=1.0.3589.29437, Culture=neutral, PublicKeyToken=77979e16578a2d88, processorArchitecture=MSIL">
59      <SpecificVersion>False</SpecificVersion>
60      <HintPath>..\Dependencies\BevelLine.dll</HintPath>
61      <Private>False</Private>
62    </Reference>
63    <Reference Include="ICSharpCode.SharpZipLib, Version=0.85.4.369, Culture=neutral, PublicKeyToken=3ac89a0351e689b6, processorArchitecture=MSIL">
64      <SpecificVersion>False</SpecificVersion>
65      <HintPath>..\Dependencies\ICSharpCode.SharpZipLib.dll</HintPath>
66      <Private>True</Private>
67    </Reference>
68    <Reference Include="Microsoft.VisualBasic" />
69    <Reference Include="System" />
70    <Reference Include="System.Core">
71      <RequiredTargetFramework>3.5</RequiredTargetFramework>
72    </Reference>
73    <Reference Include="System.Data" />
74    <Reference Include="System.Drawing" />
75    <Reference Include="System.Windows.Forms" />
76    <Reference Include="System.Xml" />
77  </ItemGroup>
78  <ItemGroup>
79    <Compile Include="..\Version.cs">
80      <Link>Version.cs</Link>
81    </Compile>
82    <Compile Include="BlackBox.cs" />
83    <Compile Include="BlackBoxMainForm.cs">
84      <SubType>Form</SubType>
85    </Compile>
86    <Compile Include="BlackBoxMainForm.Designer.cs">
87      <DependentUpon>BlackBoxMainForm.cs</DependentUpon>
88    </Compile>
89    <Compile Include="BlackBoxUploadForm.cs">
90      <SubType>Form</SubType>
91    </Compile>
92    <Compile Include="BlackBoxUploadForm.Designer.cs">
93      <DependentUpon>BlackBoxUploadForm.cs</DependentUpon>
94    </Compile>
95    <Compile Include="Plugin.cs" />
96    <Compile Include="Properties\Resources.Designer.cs">
97      <AutoGen>True</AutoGen>
98      <DependentUpon>Resources.resx</DependentUpon>
99      <DesignTime>True</DesignTime>
100    </Compile>
101    <Compile Include="Properties\AssemblyInfo.cs" />
102  </ItemGroup>
103  <ItemGroup>
104    <EmbeddedResource Include="Properties\Resources.resx">
105      <Generator>ResXFileCodeGenerator</Generator>
106      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
107      <SubType>Designer</SubType>
108    </EmbeddedResource>
109    <EmbeddedResource Include="BlackBoxMainForm.it.resx">
110      <DependentUpon>BlackBoxMainForm.cs</DependentUpon>
111    </EmbeddedResource>
112    <EmbeddedResource Include="BlackBoxMainForm.pl.resx">
113      <DependentUpon>BlackBoxMainForm.cs</DependentUpon>
114    </EmbeddedResource>
115    <EmbeddedResource Include="BlackBoxMainForm.resx">
116      <DependentUpon>BlackBoxMainForm.cs</DependentUpon>
117    </EmbeddedResource>
118    <EmbeddedResource Include="BlackBoxUploadForm.it.resx">
119      <DependentUpon>BlackBoxUploadForm.cs</DependentUpon>
120    </EmbeddedResource>
121    <EmbeddedResource Include="BlackBoxUploadForm.pl.resx">
122      <DependentUpon>BlackBoxUploadForm.cs</DependentUpon>
123    </EmbeddedResource>
124    <EmbeddedResource Include="BlackBoxUploadForm.resx">
125      <DependentUpon>BlackBoxUploadForm.cs</DependentUpon>
126    </EmbeddedResource>
127    <EmbeddedResource Include="Strings.en.resx" />
128    <EmbeddedResource Include="Strings.it.resx" />
129    <EmbeddedResource Include="Strings.nl.resx" />
130    <EmbeddedResource Include="Strings.pl.resx" />
131    <EmbeddedResource Include="Strings.resx" />
132  </ItemGroup>
133  <ItemGroup>
134    <ProjectReference Include="..\Eraser.Plugins\Eraser.Plugins.csproj">
135      <Project>{59F7ED0F-3589-4112-B612-4A9A6588F4A0}</Project>
136      <Name>Eraser.Plugins</Name>
137      <Private>False</Private>
138    </ProjectReference>
139    <ProjectReference Include="..\Eraser.Util\Eraser.Util.csproj">
140      <Project>{D083E1A8-3A4C-4683-9B3F-D5FEDE61B9C9}</Project>
141      <Name>Eraser.Util</Name>
142      <Private>False</Private>
143    </ProjectReference>
144  </ItemGroup>
145  <ItemGroup>
146    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
147      <Visible>False</Visible>
148      <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
149      <Install>false</Install>
150    </BootstrapperPackage>
151    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
152      <Visible>False</Visible>
153      <ProductName>.NET Framework 3.5 SP1</ProductName>
154      <Install>true</Install>
155    </BootstrapperPackage>
156    <BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
157      <Visible>False</Visible>
158      <ProductName>Windows Installer 3.1</ProductName>
159      <Install>true</Install>
160    </BootstrapperPackage>
161  </ItemGroup>
162  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
163  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
164       Other similar extension points exist, see Microsoft.Common.targets.
165  <Target Name="BeforeBuild">
166  </Target>
167  <Target Name="AfterBuild">
168  </Target>
169  -->
170  <PropertyGroup>
171    <PreBuildEvent>call "$(SolutionDir)UpdateVersions.bat" "$(SolutionDir)\." "$(SolutionDir)Version.cs.in" "$(SolutionDir)Version.cs"
172csgettext --merge --recursive EN,NL,IT,PL "$(ProjectDir)\." Strings
173if ERRORLEVEL 0 exit 0</PreBuildEvent>
174  </PropertyGroup>
175</Project>
Note: See TracBrowser for help on using the repository browser.