diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 16a5570c..e28d0de3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -29,7 +29,20 @@ jobs: assemblyVersion: ${{ github.event.release.tag_name }} fileVersion: ${{ github.event.release.tag_name }} informationalVersion: ${{ github.event.release.tag_name }}-${{ github.sha }} - + - name: Build run: | dotnet build -c Release Migrator.slnx + + - name: Upload to release + uses: AButler/upload-release-assets@v3.0 + with: + files: 'src/Migrator/bin/Release/net9.0/DotNetProjects.Migrator.${{ github.event.release.tag_name }}.nupkg' + repo-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Publish to nuget + run: | + find . -type f -name *.nupkg -print0 | xargs -0 -I pkg dotnet nuget push pkg -k $nuget_api_key -s "https://api.nuget.org/v3/index.json" --skip-duplicate + env: + nuget_api_key: ${{ secrets.NUGET_API_KEY }} + working-directory: ./src/Migrator/bin/Release/net9.0/ diff --git a/HOWTOBUILD.md b/HOWTOBUILD.md deleted file mode 100644 index 71dbfd56..00000000 --- a/HOWTOBUILD.md +++ /dev/null @@ -1,19 +0,0 @@ -# Build - -To build the project simply run the build.bat file in this folder like so: - -`c:\> build` - -This will run the nant build in default configuration. You can pass a target to the build.bat to run a specific -target in the default.build file. - -To zip the project into a zip file run build passing a zip argument like so: - -`c:\> build zip` - -To override any of the build properties copy local.properties-exmple to local.properties and override any of the -property values in the default.build. - -If you have any questions please go to the migrator google group located at: - -http://groups.google.com/group/migratordotnet-devel \ No newline at end of file diff --git a/Migrator.sln b/Migrator.sln deleted file mode 100644 index dd6078f9..00000000 --- a/Migrator.sln +++ /dev/null @@ -1,51 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31606.5 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{9844714F-717A-4C16-97A9-9995BB1B4A8B}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{8FF5F3DF-DF83-470C-ADFE-C0FF2B858F0F}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Extras", "Extras", "{02B014BC-CC35-466F-A2F4-C5B5AC830653}" - ProjectSection(SolutionItems) = preProject - src\MigratorDotNet.snk = src\MigratorDotNet.snk - doc\README.txt = doc\README.txt - doc\TODO.txt = doc\TODO.txt - EndProjectSection -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Migrator.Tests", "src\Migrator.Tests\Migrator.Tests.csproj", "{882B6A93-67B8-45BF-8636-5796B1B1CBF8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DotNetProjects.Migrator", "src\Migrator\DotNetProjects.Migrator.csproj", "{C6DB41A3-8613-4B9D-8B54-ED3BA6111A7D}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{ADBAE940-3246-4D16-A123-3C6D311CDA48}" - ProjectSection(SolutionItems) = preProject - .editorconfig = .editorconfig - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {882B6A93-67B8-45BF-8636-5796B1B1CBF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {882B6A93-67B8-45BF-8636-5796B1B1CBF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {882B6A93-67B8-45BF-8636-5796B1B1CBF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {882B6A93-67B8-45BF-8636-5796B1B1CBF8}.Release|Any CPU.Build.0 = Release|Any CPU - {C6DB41A3-8613-4B9D-8B54-ED3BA6111A7D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {C6DB41A3-8613-4B9D-8B54-ED3BA6111A7D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {C6DB41A3-8613-4B9D-8B54-ED3BA6111A7D}.Release|Any CPU.ActiveCfg = Release|Any CPU - {C6DB41A3-8613-4B9D-8B54-ED3BA6111A7D}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {882B6A93-67B8-45BF-8636-5796B1B1CBF8} = {8FF5F3DF-DF83-470C-ADFE-C0FF2B858F0F} - {C6DB41A3-8613-4B9D-8B54-ED3BA6111A7D} = {9844714F-717A-4C16-97A9-9995BB1B4A8B} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {FCBFBB4D-FF78-4044-A35F-0DB216B846CE} - EndGlobalSection -EndGlobal diff --git a/Migrator.slnx b/Migrator.slnx index 19138594..4cddff02 100644 --- a/Migrator.slnx +++ b/Migrator.slnx @@ -3,13 +3,10 @@ - - - + - diff --git a/README.markdown b/README.md similarity index 100% rename from README.markdown rename to README.md diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index e09e0dad..00000000 --- a/appveyor.yml +++ /dev/null @@ -1,36 +0,0 @@ -version: 7.0.{build} - -branches: - only: - - master - -image: Visual Studio 2022 - -dotnet_csproj: - patch: true - file: '**\*.csproj' - version: "{version}" - package_version: "{version}" - assembly_version: "{version}" - file_version: "{version}" - informational_version: "{version}" - -configuration: Release - -before_build: - - nuget restore - -build: - project: Migrator.sln - -test: off - -artifacts: - - path: '**\DotNetProjects.Migrator*.*nupkg' - -#uncomment to publish to NuGet -deploy: - provider: NuGet - api_key: - secure: 0Qv2/98lIbQR+I0wbscvZfg6pVvT6E+JHtcqjtg04sSJdFg5dJ/6/QQkJEYV3NKB - artifact: /.*DotNetProjects\.Migrator.*nupkg/ diff --git a/build.bat b/build.bat deleted file mode 100644 index b45d5826..00000000 --- a/build.bat +++ /dev/null @@ -1,2 +0,0 @@ -@lib\nant\nant.exe -buildfile:default.build %* -pause \ No newline at end of file diff --git a/contrib/Migrator.Web/Default.aspx b/contrib/Migrator.Web/Default.aspx deleted file mode 100644 index 551d64ea..00000000 --- a/contrib/Migrator.Web/Default.aspx +++ /dev/null @@ -1,61 +0,0 @@ -<%@ Page - Language = "C#" - AutoEventWireup = "false" - Inherits = "Migrator.Web.Default" - ValidateRequest = "false" - EnableSessionState = "false" -%> - - - - - - Migrator.Web - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - -
- Run Migration -
- Current Database Latest Version: - - -
- Migrate To: - - -
- -
- -
- - diff --git a/contrib/Migrator.Web/Default.aspx.cs b/contrib/Migrator.Web/Default.aspx.cs deleted file mode 100644 index aeb846e2..00000000 --- a/contrib/Migrator.Web/Default.aspx.cs +++ /dev/null @@ -1,133 +0,0 @@ -using System; -using System.Configuration; -using System.Collections; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Reflection; -using System.Web; -using System.Web.SessionState; -using System.Web.UI; -using System.Web.UI.WebControls; -using System.Web.UI.HtmlControls; -using Migrator.Framework; - -namespace Migrator.Web -{ - /// - /// Web form that can be used to run migrations in a web project. - /// It's recommended that you have some security in place. - /// - public class Default : Page - { - - protected Label _LatestVersion; - protected DropDownList _availableVersions; - protected Button _runMigration; - - protected void PageInit(object sender, EventArgs e) - { - } - - protected void PageExit(object sender, EventArgs e) - { - } - - - private void Page_Load(object sender, EventArgs e) - { - if(!IsPostBack) - { - this.BindForm(); - } - } - - private void RunMigration(object sender, EventArgs e) - { - Migrator mig = GetMigrator(); - mig.MigrateTo(int.Parse(this._availableVersions.SelectedValue)); - this.BindForm(); - } - - - protected override void OnInit(EventArgs e) - { - InitializeComponent(); - base.OnInit(e); - } - - private void InitializeComponent() - { - this.Load += new System.EventHandler(Page_Load); - this.Init += new System.EventHandler(PageInit); - this.Unload += new System.EventHandler(PageExit); - - this._runMigration.Click += new EventHandler(RunMigration); - } - - private void BindForm(){ - Migrator mig = GetMigrator(); - List appliedMigrations = mig.AppliedMigrations; - long latestMigration = 0; - if(appliedMigrations.Count > 0) { - latestMigration = appliedMigrations[appliedMigrations.Count - 1]; - } - this._LatestVersion.Text = latestMigration.ToString(); - - List availableMigrations = GetMigrationsList(mig); - this._availableVersions.DataSource = availableMigrations; - this._availableVersions.DataValueField = "ID"; - this._availableVersions.DataTextField = "ClassName"; - this._availableVersions.DataBind(); - } - - private Migrator GetMigrator() - { - Assembly asm = Assembly.LoadFrom(ConfigurationManager.AppSettings["MigrationAsembly"]); - string provider = ConfigurationManager.AppSettings["MigrationProvider"]; - string connectString = ConfigurationManager.AppSettings["ConnectionString"]; - - Migrator migrator = new Migrator(provider, connectString, asm, false); - return migrator; - } - - private List GetMigrationsList(Migrator mig) - { - List migrations = mig.MigrationsTypes; - migrations.Reverse(); - List list = new List(); - List.Enumerator en = migrations.GetEnumerator(); - while(en.MoveNext()){ - MigrationInfo info = new MigrationInfo(en.Current); - list.Add(info); - } - return list; - } - - public class MigrationInfo - { - private Type _type; - - public MigrationInfo(Type type) - { - this._type = type; - } - - public Type MigrationType - { - get{ return _type; } - } - - public long ID - { - get{ return MigrationLoader.GetMigrationVersion(_type); } - } - - public string ClassName - { - get{ return _type.ToString() + " (" + ID + ")"; } - } - } - } -} diff --git a/contrib/Migrator.Web/Global.asax b/contrib/Migrator.Web/Global.asax deleted file mode 100644 index 921e97a5..00000000 --- a/contrib/Migrator.Web/Global.asax +++ /dev/null @@ -1,3 +0,0 @@ -<%@ Application Codebehind="Global.cs" - Inherits="Migrator.Web.Global" -%> diff --git a/contrib/Migrator.Web/Global.asax.cs b/contrib/Migrator.Web/Global.asax.cs deleted file mode 100644 index 8dad9f2f..00000000 --- a/contrib/Migrator.Web/Global.asax.cs +++ /dev/null @@ -1,79 +0,0 @@ - -using System; -using System.Collections; -using System.ComponentModel; -using System.Web; -using System.Web.SessionState; - -namespace Migrator.Web -{ - /// - /// Summary description for Global. - /// - public class Global : HttpApplication - { - #region global - /// - /// Required designer variable. - /// - //private System.ComponentModel.IContainer components = null; - - public Global() - { - InitializeComponent(); - } - - #endregion - - protected void Application_Start(Object sender, EventArgs e) - { - - } - - protected void Session_Start(Object sender, EventArgs e) - { - - } - - protected void Application_BeginRequest(Object sender, EventArgs e) - { - - } - - protected void Application_EndRequest(Object sender, EventArgs e) - { - - } - - protected void Application_AuthenticateRequest(Object sender, EventArgs e) - { - - } - - protected void Application_Error(Object sender, EventArgs e) - { - - } - - protected void Session_End(Object sender, EventArgs e) - { - - } - - protected void Application_End(Object sender, EventArgs e) - { - - } - - #region Web Form Designer generated code - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - - } - #endregion - } -} diff --git a/contrib/Migrator.Web/Migrator.Web.csproj b/contrib/Migrator.Web/Migrator.Web.csproj deleted file mode 100644 index 7920c1a5..00000000 --- a/contrib/Migrator.Web/Migrator.Web.csproj +++ /dev/null @@ -1,56 +0,0 @@ - - - {25EE0010-081D-423F-AEE5-5B83ED235609} - Debug - AnyCPU - Library - Migrator.Web - Migrator.Web - bin\ - - - True - Full - False - True - DEBUG;TRACE - - - False - None - True - False - TRACE - - - - - - - - - - - - - - Default.aspx - - - Global.asax - - - - - - - - {5270F048-E580-486C-B14C-E5B9F6E539D4} - Migrator.Framework - - - {1FEE70A4-AAD7-4C60-BE60-3F7DC03A8C4D} - Migrator - - - diff --git a/contrib/Migrator.Web/Web.config b/contrib/Migrator.Web/Web.config deleted file mode 100644 index 58fa70bc..00000000 --- a/contrib/Migrator.Web/Web.config +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/contrib/README.txt b/contrib/README.txt deleted file mode 100644 index 73104b14..00000000 --- a/contrib/README.txt +++ /dev/null @@ -1,6 +0,0 @@ -= Migrator DotNet Contrib -Projects and pieces contributed to Migrator DotNet that are outside of the core concepts or usecases. -Still interesting and might be useful. - -If they're useful enough, tell us to roll them into the core! - diff --git a/contrib/build.bat b/contrib/build.bat deleted file mode 100644 index a1eb951e..00000000 --- a/contrib/build.bat +++ /dev/null @@ -1,2 +0,0 @@ -@..\lib\nant\nant.exe -buildfile:default.build %* -pause diff --git a/contrib/default.build b/contrib/default.build deleted file mode 100644 index 8873a8c4..00000000 --- a/contrib/default.build +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/default.build b/default.build deleted file mode 100644 index 9bb91825..00000000 --- a/default.build +++ /dev/null @@ -1,263 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/CHANGES.md b/doc/CHANGES.md deleted file mode 100644 index 8715ff5e..00000000 --- a/doc/CHANGES.md +++ /dev/null @@ -1,88 +0,0 @@ -# Change history - -## 7.0.159 - 7.0.209 (Nuget Version) -### Breaking Changes -+ Minimum SQLite Version: 3.8.2 (2013-12-06) - -#### ColumnProperty -+ Removed `ForeignKey` use method `AddForeignKey(...)` instead. -+ `Unique` is now obsolete because you cannot add a constraint name using it. Removing it by name is therefore impossible without investigation. - -### Other changes -Several fixes see PRs - -## Version 0.8.0 -- Implemented specific support for SQL Server 2005 (MAX parameter basically) -- Implemented specific support for SQL Server CE (Thanks Gustavo Ringel) - -- Changed the parameter names of AddForeignKey to try and make them easier to understand -- Made Version for MigrationAttribute non-optional -- Changed the Migration number to a long value so datestamps could be used. -- Added a SqlScriptFileLogger to log all of the SQL changes to a file (Thanks carl.lotz) - - Supported in MSBuild and NAnt tasks -- Implemented Fluent interface using SchemaBuilder - -- Breaking Change!: Changed the storage of versions applied to one that keeps all the versions. This - will help deal with branches during development. (Thanks evonzee) - You will need to update your SchemaInfo table by inserting a row for all previously applied versions. - -- Added contribs for extra interesting code - - Added Migration.Web to show how to run migrations from a Web App directly. - -## Version 0.7.0 -- Geoff's major refactorings fork re-merged back into the trunk -- Improved the build process allowing developers to override things in local.properties -- Added a packaging task to generate a zip file for a build -- SQL Server Default value now supports non-quoted functions and NULL -- Compound Primary Key bug was unsetting NotNull from all the columns has been fixed -- Added a Visual Studio Template that can be installed to help create new Migrations -- Various Small bug fixes - - Logger set after Migrations loaded in NAnt/MSBuild tasks - - Patch for wrong string format in SQLTransformationProvider - - One of the TranformationProvider.GenerateForeignKey methods ignores constraint - - No warning is issued if there are no migrations found - - Migration.InitializeOnce outputs to console - -## Version 0.6.0 -- Better API documentation -- Support declaring compound primary keys in the AddTable methods. -- Add support for Renaming Tables and Columns -- Add support for adding and removing Unique Constraints and Check Constraints -- Add support for changing a column definition -- Support compiling the migrations on the fly - -- Breaking Change!: Change the Insert and Update methods to separate the column names from the column values. -- Breaking Change!: Reversed the columns to have the table name first on ConstraintExists, PrimaryKeyExists and - RemovePrimaryKey - -## Version 0.5.0 -Forked the project to fix a bunch of issues. -- Major refactoring - - Breaking Change!: Changing to DBTypes instead of .NET Types for specifying column types - - Separated out Framework and Providers DLLs - - Made the Providers more of a Template model so they have to do less work and are more - declarative in nature. -- Fixed SQL Server Provider -- Added support for SQLite -- Added "Multi-DB" support for DB Specific SQL code - - Database["ProviderName"].ExecuteSQL() will only run if you are running against "ProviderName" -- Much more Unit Testing - -See http://code.macournoyer.com/migrator for further info - -## Version 0.2.0 -- Added support for char type on SQL Server by Luke Melia & Daniel Berlinger -- Fix some issues with SQL Server 2005 pointed out by Luke Melia & Daniel Berlinger -- Added migrate NAnt task -- Added basic schema dumper functionnality for MySql. -- Restructured project tree -- Applied patch from Tanner Burson to fix first run problem with SchemaInfo table creation - -## Version 0.1.0 -- Renamed "RemoveConstraint" to "RemoveForeignKey". We need to add Unique constraint support, but it's not in here yet. -- Merged most of the provider unit test code to a base class. -- Changed the hard dependencies on the ADO.NET providers to be a reflection-based load, just like NHibernate. -- Changed the MySQL provider "RemoveForeignKey" method to call two SQL calls to the DB before the constraint would actually be deleted. This is the wierd piece, and I am not sure if it's just my OS or version of MySQL that needs this. -- Added a few more assertions to the provider unit tests just to be sure the expectations are being met. -- Changed the build file to handle different platforms, since the Npgsql driver is so platform-specific. - diff --git a/doc/README.md b/doc/README.md deleted file mode 100644 index 61b6d7b1..00000000 --- a/doc/README.md +++ /dev/null @@ -1,103 +0,0 @@ -# Migrator DotNet -Database Migrations implemented in .NET. -Supports rolling up and rolling back of migrations. - -A way to integrate database change management into your regular development and automation processes. -The migrations themselves are implemented in code and can be mostly done in a database independent way. - -Licensed under MPL 1.1 : http://www.mozilla.org/MPL/ - -## Supported Database -* MySQL (5.0, 5.1) -* PostgreSQL -* SQLite (tested on Mono) -* SQL Server (2000, 2005) -* SQL Server CE (3.5) - -## Untested Databases but in there -* Oracle -* Firebird -* Informix -* DB2 -* Ingres - -## Supported Modes -* MSBuild Task -* NAnt Task -* Console Application - - -# Development - -== Compiling -To build from source: - nant build - -== Testing -To run tests: - nant test - -You should have a database installed and setup: -* MySql -* SQL Server -* Oracle -* PostgreSQL -* or you can use SQLite with no setup -You can Test on each engine or change those by changing the 'exclude' properties in a nant build -file called 'local.properties'. To change the database connection strings see config\app.config. You -can make your own local version called 'local.config' to override these - -## SQL Server CE -To use SQL Server CE, you will need the proper tools installed. The current DLL that we are testing -against is the 3.5 version. -As of this writing you can download the installer for the SQL CE Runtime at: -http://www.microsoft.com/downloads/details.aspx?&FamilyID=7849b34f-67ab-481f-a5a5-4990597b0297&DisplayLang=en - -We have not confirmed if this will build on Mono yet. But it almost definitely won't run because SQL CE uses PInvoke -internally. - -# Usage - -1. Add bin/Migrator.Framework.dll to your project references - - All of the other DLLs are only needed for actually running the migrations. -2. Create a class for your migration like: - using Migrator.Framework; - [Migration(1)] - public class MyMigration : Migration - { - public override void Up() - { - // Create stuff - } - public override void Down() - { - // Remove the same stuff - } - } - -3. Compile your migrations and run the console (Migrator.Console.exe) or use the migrator - NAnt or MSBuild tasks: - - NAnt: - - - - - - - MSBuild: - - $(MSBuildProjectDirectory)\migrator - - - - - - - diff --git a/doc/TODO.txt b/doc/TODO.txt deleted file mode 100644 index 0926d759..00000000 --- a/doc/TODO.txt +++ /dev/null @@ -1,13 +0,0 @@ -Near Term: - -* Think about modeling a Table object as well as the Column object -* Think of a DSL to configure what the SQL syntax for a specific implementation looks like? -* Separate out Providers into separate DLLs and load them like plugins? - -Future: -* Look into using something like NHibernate to create our schema changes -* Look into directly supporting other kinds of SQL objects - * Stored Procedures - * User Defined Functions - * Would modeling these things as objects help? - diff --git a/doc/example/example-msbuild.proj b/doc/example/example-msbuild.proj deleted file mode 100644 index 34908ae5..00000000 --- a/doc/example/example-msbuild.proj +++ /dev/null @@ -1,57 +0,0 @@ - - - - $(MSBuildProjectDirectory)\..\..\build - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/doc/example/example-nant.build b/doc/example/example-nant.build deleted file mode 100644 index 04d8ba80..00000000 --- a/doc/example/example-nant.build +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/doc/example/migrations/001_AddAddressTable.cs b/doc/example/migrations/001_AddAddressTable.cs deleted file mode 100644 index 9cbe18f0..00000000 --- a/doc/example/migrations/001_AddAddressTable.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Migrator.Framework; -using System.Data; - -[Migration(1)] -public class AddAddressTable : Migration -{ - override public void Up() - { - Database.AddTable("Address", - new Column("id", DbType.Int32, ColumnProperty.PrimaryKey), - new Column("street", DbType.String, 50), - new Column("city", DbType.String, 50), - new Column("state", DbType.StringFixedLength, 2), - new Column("postal_code", DbType.String, 10) - ); - } - override public void Down() - { - Database.RemoveTable("Address"); - } -} diff --git a/doc/example/migrations/002_AddAddressColumns.cs b/doc/example/migrations/002_AddAddressColumns.cs deleted file mode 100644 index d5cca3b1..00000000 --- a/doc/example/migrations/002_AddAddressColumns.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Migrator.Framework; -using System.Data; - -[Migration(2)] -public class AddAddressColumns : Migration -{ - override public void Up() - { - Database.AddColumn("Address", new Column("street2", DbType.String, 50)); - Database.AddColumn("Address", new Column("street3", DbType.String, 50)); - } - - override public void Down() - { - Database.RemoveColumn("Address", "street2"); - Database.RemoveColumn("Address", "street3"); - } -} \ No newline at end of file diff --git a/doc/example/migrations/003_AddPersonTable.cs b/doc/example/migrations/003_AddPersonTable.cs deleted file mode 100644 index 1b35b2e0..00000000 --- a/doc/example/migrations/003_AddPersonTable.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Migrator.Framework; -using System.Data; - -[Migration(3)] -public class AddPersonTable : Migration -{ - override public void Up() - { - Database.AddTable("Person", - new Column("id", DbType.Int32, ColumnProperty.PrimaryKey), - new Column("first_name", DbType.String, 50), - new Column("last_name", DbType.String, 50), - new Column("address_id", DbType.Int32, ColumnProperty.Unsigned) - ); - Database.AddForeignKey("FK_PERSON_ADDRESS", "Person", "address_id", "Address", "id"); - } - override public void Down() - { - Database.RemoveTable("Person"); - } -} diff --git a/doc/extras/VS.NET Template/Migration.zip b/doc/extras/VS.NET Template/Migration.zip deleted file mode 100644 index 231acabf..00000000 Binary files a/doc/extras/VS.NET Template/Migration.zip and /dev/null differ diff --git a/doc/extras/VS.NET Template/README.txt b/doc/extras/VS.NET Template/README.txt deleted file mode 100644 index 92dad2e3..00000000 --- a/doc/extras/VS.NET Template/README.txt +++ /dev/null @@ -1,2 +0,0 @@ -To install this, put the zip file in: -C:\Documents and Settings\\My Documents\Visual Studio 2008\Templates\ItemTemplates diff --git a/lib/NAnt.Core.dll b/lib/NAnt.Core.dll deleted file mode 100644 index 1083a424..00000000 Binary files a/lib/NAnt.Core.dll and /dev/null differ diff --git a/lib/NCover/CoverLib.dll b/lib/NCover/CoverLib.dll deleted file mode 100644 index e038b330..00000000 Binary files a/lib/NCover/CoverLib.dll and /dev/null differ diff --git a/lib/NCover/Coverage.xsl b/lib/NCover/Coverage.xsl deleted file mode 100644 index 164ff148..00000000 --- a/lib/NCover/Coverage.xsl +++ /dev/null @@ -1,339 +0,0 @@ - - - - - - - NCover Code Coverage Report - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- javascript:toggle( - ) - - - - - - - - -
- - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
VisitsLineEndColumnEndDocument
- - - exdatacell - hldatacell - datacell - - - - --- - - - - - - - - - - - - -
-
- - - - - - - - - - - - - - -
- javascript:toggle( - ) - - - - - - - - -
- - - -
- - - - - - - -
- - -
-
- - - - - - -
- - - -
- - - - - - - - -
- - -

Modules summary

- - - - - - - - -
-
-
-
- - - - - - -
- - - -
- - - - - - - - -
- - -

- NCover Code Coverage Report -

- - - - - - -
- Expand - | - Collapse -
-
-
- -
- Top -
- - - - - - - - - - - - - - - - - -
Excluded - - - - - - - - - -
-
-
\ No newline at end of file diff --git a/lib/NCover/Explorer/ActiproEULA.html b/lib/NCover/Explorer/ActiproEULA.html deleted file mode 100644 index 1f05a9df..00000000 --- a/lib/NCover/Explorer/ActiproEULA.html +++ /dev/null @@ -1,287 +0,0 @@ - - - End-User License Agreement (EULA) - - - - - -

END-USER LICENSE AGREEMENT FOR ACTIPRO SOFTWARE LLC SOFTWARE

- -
-IMPORTANT - READ CAREFULLY: This Actipro Software LLC ("Actipro") End-User License Agreement ("EULA") -is a legal agreement between you (“Licensee”), a developer of software applications, and Actipro for the Actipro software product -accompanying this EULA, which includes computer software and may include associated source code, media, printed materials, -and "on-line" or electronic documentation ("SOFTWARE PRODUCT"). By installing, copying, or otherwise using the SOFTWARE PRODUCT, -you agree to be bound by the terms of this EULA. If you do not agree to the terms of this EULA, do not install, use, distribute -in any manner, or replicate in any manner, any part, file or portion of the SOFTWARE PRODUCT. -
- -

-The SOFTWARE PRODUCT is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. The SOFTWARE PRODUCT is licensed, not sold. -

- -

-The Licensee is considered to be an authorized licensee (“Authorized”) if the Licensee has legitimately obtained a registered license for the SOFTWARE PRODUCT from Actipro or an authorized Actipro reseller. -

- -

-RIGOROUS ENFORCEMENT OF INTELLECTUAL PROPERTY RIGHTS. -If the licensed right of use for this SOFTWARE PRODUCT is purchased by the Licensee with any intent to reverse engineer, -decompile, create derivative works, and the exploitation or unauthorized transfer of, any Actipro intellectual property and -trade secrets, to include any exposed methods or source code where provided, no licensed right of use shall exist, and any products -created as a result shall be judged illegal by definition of all applicable law. Any sale or resale of intellectual property or -created derivatives so obtained will be prosecuted to the fullest extent of all local, federal and international law. -

- -

-GRANT OF LICENSE. This EULA, if legally executed as defined herein, licenses and so grants the Licensee the following rights: -

- -

-Evaluation. If the downloaded SOFTWARE PRODUCT is designated as an Evaluation Release (“Evaluation Release”), -the Licensee is granted a license for a period of only fifteen (15) days after installation of the Evaluation Release -of the SOFTWARE PRODUCT ("Evaluation Period"). After the Evaluation Period, the Licensee must either: -

    -
  1. Delete the SOFTWARE PRODUCT and all related files from ALL computers onto which it was installed or copied, or
  2. -
  3. Contact Actipro or one of its authorized resellers to purchase the SOFTWARE PRODUCT.
  4. -
-

- -

-The Licensee may use the Evaluation Release of the SOFTWARE PRODUCT for evaluation purposes only. -The Licensee may not distribute ANY of the files, in any form or manner, provided with the Evaluation Release of the -SOFTWARE PRODUCT to ANY PARTIES. -

- -

-Development. Actipro grants the Licensee the non-exclusive license to install and use multiple copies of the -SOFTWARE PRODUCT or any prior version for the sole purpose of developing any number of end user applications that -operate in conjunction with the SOFTWARE PRODUCT. If the Licensee is not Authorized, the Licensee may not use the -SOFTWARE PRODUCT beyond the Evaluation Period. -

- -

-If the Licensee has purchased a single developer license (“Single Developer License”), the Licensee is Authorized -to use the SOFTWARE PRODUCT indefinitely beyond the Evaluation Period. A Single Developer License for the SOFTWARE PRODUCT -may not be shared or used concurrently by more than one individual developer. In a project that uses the SOFTWARE PRODUCT, -each individual developer on the project requires a separate Single Developer License, regardless of whether they directly -use the component or not. Single Developer Licenses may also be obtained in team discount packs. -

- -

-If the Licensee has purchased a site license (“Site License”), each of the developers at a single physical location is -considered Authorized according to the terms and conditions of the Single Developer License. Each additional physical -location requires an additional Site License to be considered Authorized. -

- -

-If the Licensee has purchased an enterprise license (“Enterprise License”), all developers in the Licensee's organization, -regardless of location, are considered Authorized according to the terms and conditions of the Single Developer License. -

- -

-If the Licensee has purchased a blueprint license (“Blueprint License”), each of the Authorized developers for the SOFTWARE PRODUCT is -considered Authorized to access source code for the SOFTWARE PRODUCT ("Source Code"). -The Blueprint License must be purchased at the same time as a Site License or Enterprise License. -Source Code may exclude Actipro proprietary licensing code. -The sale of Blueprint Licenses is considered final and neither the SOFTWARE PRODUCT nor Source Code may be returned under any circumstances. -

- -

-Duplication and Distribution. The SOFTWARE PRODUCT may include certain files ("Redistributables") intended for distribution -by the Licensee to the users of programs the Licensee creates. Redistributables include, for example, those files identified in -printed or electronic documentation as redistributable files, or those files pre-selected for deployment by an install utility -provided with the SOFTWARE PRODUCT (if any). In any event, the Redistributables for the SOFTWARE PRODUCT are only those files -specifically designated as such by Actipro. -

- -

-Subject to all of the terms and conditions in this EULA, if the Licensee is Authorized, Actipro grants the Licensee the non-exclusive, -royalty-free license to duplicate the Redistributables and to distribute them solely in conjunction with software products -developed by the Licensee that use them. The Licensee may not supply any means by which end users could incorporate the -SOFTWARE PRODUCT or portions thereof into their own products. -

- -

-Source Code. If the Licensee has purchased a Blueprint License and is Authorized, the Licensee is provided Source Code -for the SOFTWARE PRODUCT. The following stipulations and restrictions apply to Source Code: -

    -
  1. Source Code shall be considered as part the SOFTWARE PRODUCT and all requirements stated above still apply, - meaning that developers at a separate site from the one which purchased the Blueprint License are NOT able to work on - any project created that uses the Source Code, unless that site has also purchased a Blueprint License. - The only exception is when an Enterprise License has been purchased along with the Blueprint License, - in which case the Source Code may be used by developers at any site.
  2. -
  3. Actipro grants the Licensee the non-exclusive license to view and modify the Source Code for the sole purposes of education and troubleshooting. - If the Licensee troubleshoots the Source Code, the Licensee may compile the corrected source code and use and distribute the - resulting object code solely as a replacement for the corresponding Redistributables the Source Code compiles into.
  4. -
  5. The Licensee may NOT distribute or sell the Source Code, or portions or modifications or derivative works thereof, to any third party - not Authorized by the Licensee’s Blueprint License(s), without explicit permission by Actipro.
  6. -
  7. The Licensee may not compete against Actipro by repackaging, recompiling, or renaming the SOFTWARE PRODUCT for which the - Licensee purchased Source Code. Any derivative works based on the Source Code are illegal to be created or sold if they compete - in any way with the SOFTWARE PRODUCT or other Actipro products.
  8. -
  9. Any object code that is created by using the Source Code or derivative code based on the Source Code must be obfuscated.
  10. -
  11. Any object code that is created by using the Source Code or derivative code based on the Source Code may NOT bear "ActiproSoftware" - or the name of the SOFTWARE PRODUCT in the object code assembly name.
  12. -
  13. All Source Code must be kept in its proper "ActiproSoftware" namespace.
  14. -
  15. Actipro shall retain all rights, title and interest in and to all corrections, modifications and derivative works of the Source Code - created by the Licensee, including all copyrights subsisting therein, to the extent such corrections, modifications or - derivative works contain copyrightable code or expression derived from the Source Code.
  16. -
  17. The Licensee acknowledges that the Source Code contains valuable and proprietary trade secrets of Actipro, and agrees to expend - every effort to insure its confidentiality.
  18. -
  19. Source Code may be obtained by coordinating with Actipro during the support period for the Blueprint License, typically one year - in duration, starting on the date of purchase of the Blueprint License.
  20. -
-

- -

-Storage/Network Use. The Licensee may also store or install a copy of the SOFTWARE PRODUCT on a storage device, -such as a network server, used only to install or run the SOFTWARE PRODUCT on the the Licensee’s other computers over an internal network; -however, the Licensee must acquire and dedicate a Single Developer License for each separate individual developer who wishes to use -the SOFTWARE PRODUCT. -

- -

-DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS. -

- -

-Not for Resale Software. If the SOFTWARE PRODUCT is labeled and provided as "Not for Resale" or "NFR", then, notwithstanding -other sections of this EULA, the Licensee may not resell, distribute, or otherwise transfer for value or benefit in any manner, -the SOFTWARE PRODUCT or any derivative work using the SOFTWARE PRODUCT. The Licensee may not transfer, rent, lease, lend, copy, -modify, translate, sublicense, time-share or electronically transmit the SOFTWARE PRODUCT, media or documentation. -This also applies to any and all intermediate files, source code, and compiled executables. -

- -

-Limitations on Reverse Engineering, Decompilation, and Disassembly. The Licensee may not reverse engineer, decompile, -create derivative works, modify, translate, or disassemble the SOFTWARE PRODUCT, and only to the extent that such activity is -expressly permitted by applicable law notwithstanding this limitation. The Licensee agrees to take all reasonable, legal and -appropriate measures to prohibit the illegal dissemination of the SOFTWARE PRODUCT or any of its constituent parts and redistributables -to the fullest extent of all applicable local, US Codes and International Laws and Treaties regarding anti-circumvention, including -but not limited to, the Geneva and Berne World Intellectual Property Organization (WIPO) Diplomatic Conferences. -

- -

-Rental. The Licensee may not rent, lease, or lend the SOFTWARE PRODUCT. -

- -

-Separation of Components, Their Constituent Parts and Redistributables. The SOFTWARE PRODUCT is licensed as a single product. -The SOFTWARE PRODUCT and its constituent parts and any provided redistributables may not be reverse engineered, decompiled, disassembled, -nor placed for distribution, sale, or resale as individual creations by the Licensee or any individual not expressly given -such permission by Actipro. The provision of Source Code, if included with the SOFTWARE PRODUCT, does not constitute transfer of any -legal rights to such code, and resale or distribution of all or any portion of all Source Code and intellectual property will be prosecuted -to the fullest extent of all applicable local, federal and international laws. All Actipro libraries, Source Code, Redistributables and -other files remain Actipro's exclusive property. The Licensee may not distribute any files, except those that Actipro has expressly -designated as Redistributable. -

- -

-Installation and Use. The license granted in this EULA for the Licensee to create his/her own compiled programs and distribute -the Licensee’s programs and the Redistributables (if any), is subject to all of the following conditions: -

    -
  1. All copies of the programs the Licensee creates must bear a valid copyright notice, either their own or the Actipro copyright - notice that appears on the SOFTWARE PRODUCT.
  2. -
  3. The Licensee may not remove or alter any Actipro copyright, trademark or other proprietary rights notice contained in any portion - of Actipro libraries, source code, Redistributables or other files that bear such a notice.
  4. -
  5. Actipro provides no warranty at all to any person, and the Licensee will remain solely responsible to anyone receiving the - Licensee’s programs for support, service, upgrades, or technical or other assistance, and such recipients will have no right - to contact Actipro for such services or assistance.
  6. -
  7. The Licensee will indemnify and hold Actipro, its related companies and its suppliers, harmless from and against any claims or - liabilities arising out of the use, reproduction or distribution of the Licensee’s programs.
  8. -
  9. The Licensee’s programs containing the SOFTWARE PRODUCT must be written using a licensed, registered copy of the SOFTWARE PRODUCT.
  10. -
  11. The Licensee’s programs must add primary and substantial functionality, and may not be merely a set or subset of any of the libraries, - Source Code, Redistributables or other files of the SOFTWARE PRODUCT.
  12. -
  13. The Licensee may not use Actipro's or any of its suppliers' names, logos, or trademarks to market the Licensee’s programs, - unless expressly given such permission by Actipro.
  14. -
-

- -

-Support Services. Actipro may provide the Licensee with support services related to the SOFTWARE PRODUCT ("Support Services"). -Use of Support Services is governed by Actipro policies and programs described in the user manual, in on-line documentation and/or other -Actipro provided materials. Any supplemental software code provided to the Licensee as part of the Support Services shall be considered -part of the SOFTWARE PRODUCT and subject to the terms and conditions of this EULA. With respect to technical information the Licensee -provides to Actipro as part of the Support Services, Actipro may use such information for its business purposes, including for product -support and development. -

- -

-Software Transfer. The Licensee may NOT permanently or temporarily transfer ANY of the Licensee’s rights under this EULA to any -individual or entity. Regardless of any modifications which the Licensee makes and regardless of how the Licensee might compile, link, -and/or package the Licensee’s programs, under no circumstances may the libraries, redistributables, and/or other files of the -SOFTWARE PRODUCT (including any portions thereof) be used for developing programs by anyone other than the Licensee. Only the Licensee -as the licensed end user has the right to use the libraries, redistributables, or other files of the SOFTWARE PRODUCT (or any portions thereof) -for developing programs created with the SOFTWARE PRODUCT. In particular, the Licensee may not share copies of the Source Code or -Redistributables with other co-developers. -

- -

-Termination. Without prejudice to any other rights or remedies, Actipro will terminate this EULA upon the Licensee’s failure to -comply with all the terms and conditions of this EULA. In such event, the Licensee must destroy all copies of the SOFTWARE PRODUCT and -all of its component parts including any related documentation, and must remove ANY and ALL use of such technology immediately from any -applications using technology contained in the SOFTWARE PRODUCT developed by the Licensee, whether in native, altered or compiled state. -

- -

-UPGRADES. If the SOFTWARE PRODUCT is labeled as an upgrade, the Licensee must be properly licensed to use the SOFTWARE PRODUCT -identified by Actipro as being eligible for the upgrade in order to use the SOFTWARE PRODUCT. A SOFTWARE PRODUCT labeled as an upgrade -replaces and/or supplements the SOFTWARE PRODUCT that formed the basis for the Licensee’s eligibility for the upgrade, and together -constitute a single SOFTWARE PRODUCT. The Licensee may use the resulting upgraded SOFTWARE PRODUCT only in accordance with all the -terms of this EULA. -

- -

-COPYRIGHT. All title and copyrights in and to the SOFTWARE PRODUCT (including but not limited to any images, demos, source code, -intermediate files, packages, photographs, animations, video, audio, music, text, and "applets" incorporated into the SOFTWARE PRODUCT), -the accompanying printed materials, and any copies of the SOFTWARE PRODUCT are owned by Actipro or its subsidiaries. -The SOFTWARE PRODUCT is protected by copyright laws and international treaty provisions. Therefore, the Licensee must treat the -SOFTWARE PRODUCT like any other copyrighted material except that the Licensee may install the SOFTWARE PRODUCT for use by the Licensee. -The Licensee may not copy any printed materials accompanying the SOFTWARE PRODUCT. -

- -

-GENERAL PROVISIONS. This EULA may only be modified in writing signed by the Licensee and an authorized officer of Actipro. -If any provision of this EULA is found void or unenforceable, the remainder will remain valid and enforceable according to its terms. -

- -

-MISCELLANEOUS. If the Licensee acquired this product in the United States, this EULA is governed by the laws of the State of Ohio. -

- -

-If this SOFTWARE PRODUCT was acquired outside the United States, then the Licensee, agrees and ascends to the adherence to all -applicable international treaties regarding copyright and intellectual property rights which shall also apply. -In addition, the Licensee agrees that any local law(s) to the benefit and protection of Actipro ownership of, and interest in, -its intellectual property and right of recovery for damages thereto will also apply. -

- -

-Should you have any questions concerning this EULA, or if you desire to contact Actipro for any reason, please contact us via our -support web pages at http://www.actiprosoftware.com. -

- -

-NO WARRANTIES. ACTIPRO EXPRESSLY DISCLAIMS ANY WARRANTY FOR THE SOFTWARE PRODUCT. THE PRODUCT AND ANY RELATED DOCUMENTATION IS PROVIDED -"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, OR NONINFRINGEMENT. THE ENTIRE RISK ARISING OUT OF USE OR PERFORMANCE OF THE PRODUCT REMAINS WITH THE LICENSEE. -

- -

-LIMITATION OF LIABILITY. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL ACTIPRO OR ITS SUPPLIERS BE LIABLE -FOR ANY SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF -BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR ANY OTHER PECUNIARY LOSS) ARISING OUT OF THE USE OF OR -INABILITY TO USE THE SOFTWARE PRODUCT OR THE PROVISION OF OR FAILURE TO PROVIDE SUPPORT SERVICES, EVEN IF ACTIPRO HAS BEEN ADVISED OF -THE POSSIBILITY OF SUCH DAMAGES. -

- -

-Copyright (c) 2002-2007 Actipro Software LLC. All rights reserved. -

- - - diff --git a/lib/NCover/Explorer/ActiproSoftware.Shared.Net11.dll b/lib/NCover/Explorer/ActiproSoftware.Shared.Net11.dll deleted file mode 100644 index 93f32bac..00000000 Binary files a/lib/NCover/Explorer/ActiproSoftware.Shared.Net11.dll and /dev/null differ diff --git a/lib/NCover/Explorer/ActiproSoftware.SyntaxEditor.Net11.dll b/lib/NCover/Explorer/ActiproSoftware.SyntaxEditor.Net11.dll deleted file mode 100644 index eafbdae3..00000000 Binary files a/lib/NCover/Explorer/ActiproSoftware.SyntaxEditor.Net11.dll and /dev/null differ diff --git a/lib/NCover/Explorer/ActiproSoftware.WinUICore.Net11.dll b/lib/NCover/Explorer/ActiproSoftware.WinUICore.Net11.dll deleted file mode 100644 index 85ae9ee3..00000000 Binary files a/lib/NCover/Explorer/ActiproSoftware.WinUICore.Net11.dll and /dev/null differ diff --git a/lib/NCover/Explorer/CommandBars.dll b/lib/NCover/Explorer/CommandBars.dll deleted file mode 100644 index 0c31bd50..00000000 Binary files a/lib/NCover/Explorer/CommandBars.dll and /dev/null differ diff --git a/lib/NCover/Explorer/ConsoleConfig.xsd b/lib/NCover/Explorer/ConsoleConfig.xsd deleted file mode 100644 index 533f659b..00000000 --- a/lib/NCover/Explorer/ConsoleConfig.xsd +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/lib/NCover/Explorer/ConsoleExample.config b/lib/NCover/Explorer/ConsoleExample.config deleted file mode 100644 index efd7f911..00000000 --- a/lib/NCover/Explorer/ConsoleExample.config +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Example.Project - - - - *.Coverage.xml - - - - ModuleClassSummary - - C:\MyCoverageReport.html - - C:\MyCoverageReport.xml - - - - - - - - - - - - - - - - - - - - - - - - None - - - Name - - - - - Assembly - - *.Tests - false - - - - Namespace - *.My* - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/lib/NCover/Explorer/CoverageReport.xsl b/lib/NCover/Explorer/CoverageReport.xsl deleted file mode 100644 index e8b4fc90..00000000 --- a/lib/NCover/Explorer/CoverageReport.xsl +++ /dev/null @@ -1,468 +0,0 @@ - - - - - - - - Generated by NCoverExplorer (see http://www.kiwidude.com/blog/) - NCoverExplorer - Merged Report - - - - - - - -
- - -
- - - - - - - - - - - - - Unvisited Functions - Unvisited SeqPts - - - - - Function Coverage - Coverage - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

NCoverExplorer Coverage Report -   

- - - - - - - - - - - - - - - -
Report generated on: at 
NCoverExplorer version:
Filtering / Sorting: / 
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Project Statistics:Files: NCLOC:
Classes:  
Functions:Unvisited:
Seq Pts:Unvisited:
-
- - -
- - - - - - - - -   - - - Project - Acceptable - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - True - - - - - - - - - -   - - - Modules - Acceptable - - - - - - - - - - - True - - - - - - - - - -   - - - Module - Acceptable - Unvisited SeqPts - Coverage - - - - - - - - - - Namespaces - - - - - - - - - - - - - - - - - - - - -   - - - Module - Acceptable - - - - - - - - - - - - Namespace / Classes - - - - - - - - - padding-left:20px;font-weight:bold - - - - - - - - - padding-left:30px - 160 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - padding-left:20px - 180 - - - - - - - - - - - - - - - - - - -   - - - Excluded From Coverage Results - All Code Within - - - - - - - - - - - - -   - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - . - - - . - - graphBarSatisfactory - graphBarNotVisited - - - - .
-
-
\ No newline at end of file diff --git a/lib/NCover/Explorer/LicencePersonal.rtf b/lib/NCover/Explorer/LicencePersonal.rtf deleted file mode 100644 index ebf26543..00000000 --- a/lib/NCover/Explorer/LicencePersonal.rtf +++ /dev/null @@ -1,334 +0,0 @@ -{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang2057\deflangfe2057{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} -{\f36\fswiss\fcharset0\fprq2{\*\panose 020b0604030504040204}Tahoma;}{\f37\fswiss\fcharset0\fprq2{\*\panose 00000000000000000000}Verdana;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;}{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;} -{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} -{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f48\fswiss\fcharset238\fprq2 Arial CE;}{\f49\fswiss\fcharset204\fprq2 Arial Cyr;}{\f51\fswiss\fcharset161\fprq2 Arial Greek;} -{\f52\fswiss\fcharset162\fprq2 Arial Tur;}{\f53\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f54\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f55\fswiss\fcharset186\fprq2 Arial Baltic;}{\f56\fswiss\fcharset163\fprq2 Arial (Vietnamese);} -{\f398\fswiss\fcharset238\fprq2 Tahoma CE;}{\f399\fswiss\fcharset204\fprq2 Tahoma Cyr;}{\f401\fswiss\fcharset161\fprq2 Tahoma Greek;}{\f402\fswiss\fcharset162\fprq2 Tahoma Tur;}{\f403\fbidi \fswiss\fcharset177\fprq2 Tahoma (Hebrew);} -{\f404\fbidi \fswiss\fcharset178\fprq2 Tahoma (Arabic);}{\f405\fswiss\fcharset186\fprq2 Tahoma Baltic;}{\f406\fswiss\fcharset163\fprq2 Tahoma (Vietnamese);}{\f407\fswiss\fcharset222\fprq2 Tahoma (Thai);}{\f408\fswiss\fcharset238\fprq2 Verdana CE;} -{\f409\fswiss\fcharset204\fprq2 Verdana Cyr;}{\f411\fswiss\fcharset161\fprq2 Verdana Greek;}{\f412\fswiss\fcharset162\fprq2 Verdana Tur;}{\f415\fswiss\fcharset186\fprq2 Verdana Baltic;}{\f416\fswiss\fcharset163\fprq2 Verdana (Vietnamese);}} -{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; -\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 -\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\qc \li0\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025 -\ltrch\fcs0 \b\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 1;}{\s2\qj \li0\ri0\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af0\afs20\alang1025 -\ltrch\fcs0 \b\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext0 heading 2;}{\s7\ql \fi-720\li720\ri0\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel6\adjustright\rin0\lin720\itap0 \rtlch\fcs1 -\ab\af1\afs24\alang1025 \ltrch\fcs0 \b\f1\fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext0 heading 7;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv -\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{ -\s15\qj \li0\ri0\sa220\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 \ssemihidden footnote text;}{\*\cs16 -\additive \rtlch\fcs1 \af0 \ltrch\fcs0 \super \sbasedon10 \ssemihidden footnote reference;}{ -\s17\qj \li2880\ri0\widctlpar\phpg\posxc\posyb\absh-1980\absw7920\dxfrtext180\dfrmtxtx180\dfrmtxty0\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin2880\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext17 envelope address;}{\s18\qj \li720\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \rtlch\fcs1 \af0\afs16\alang1025 \ltrch\fcs0 -\scaps\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext18 envelope return;}{\s19\qj \li0\ri0\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 -\ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext19 header;}{\s20\qj \li0\ri0\widctlpar\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext20 footer;}{\*\cs21 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \sbasedon10 page number;}{\s22\qj \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 -\rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon23 \snext22 Num Continue;}{\s23\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 -\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext23 Body Text;}{\s24\qj \li0\ri0\sa120\widctlpar\jclisttab\tx360\wrapdefault\aspalpha\aspnum\faauto\ls3\outlinelevel0\adjustright\rin0\lin0\itap0 -\rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext22 Legal2_L1;}{\s25\qj \fi720\li0\ri0\sa120\widctlpar -\jclisttab\tx1080\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl1\outlinelevel1\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon24 \snext22 Legal2_L2;}{ -\s26\qj \fi1440\li0\ri0\sa120\widctlpar\jclisttab\tx1800\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl2\outlinelevel2\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon25 \snext22 Legal2_L3;}{\s27\qj \fi2160\li0\ri0\sa120\widctlpar\jclisttab\tx2880\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl3\outlinelevel3\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon26 \snext22 Legal2_L4;}{\s28\qj \fi2880\li0\ri0\sa120\widctlpar\jclisttab\tx3600\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl4\outlinelevel4\adjustright\rin0\lin0\itap0 \rtlch\fcs1 -\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon27 \snext22 Legal2_L5;}{\s29\qj \fi3600\li0\ri0\sa120\widctlpar -\jclisttab\tx4320\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl5\outlinelevel5\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon28 \snext22 Legal2_L6;}{ -\s30\qj \fi4320\li0\ri0\sa120\widctlpar\jclisttab\tx5040\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl6\outlinelevel6\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon29 \snext22 Legal2_L7;}{\s31\qj \fi720\li0\ri0\sa120\widctlpar\jclisttab\tx1440\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl7\outlinelevel7\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon30 \snext22 Legal2_L8;}{\s32\qj \fi1440\li0\ri0\sa120\widctlpar\jclisttab\tx2160\wrapdefault\aspalpha\aspnum\faauto\ls3\ilvl8\outlinelevel8\adjustright\rin0\lin0\itap0 \rtlch\fcs1 -\af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon31 \snext22 Legal2_L9;}{\*\cs33 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\caps\cf2 \sbasedon10 zzmpTCEntryL1;}{\*\cs34 \additive \rtlch\fcs1 \ab\af0 -\ltrch\fcs0 \b\cf2 \sbasedon10 zzmpTCEntryL2;}{\*\cs35 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\cf2 \sbasedon10 zzmpTCEntryL3;}{\*\cs36 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\cf2 \sbasedon10 zzmpTCEntryL4;}{\*\cs37 \additive \rtlch\fcs1 \af0 -\ltrch\fcs0 \cf2 \sbasedon10 zzmpTCEntryL5;}{\*\cs38 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf2 \sbasedon10 zzmpTCEntryL6;}{\*\cs39 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf2 \sbasedon10 zzmpTCEntryL7;}{\*\cs40 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 -\cf2 \sbasedon10 zzmpTCEntryL8;}{\*\cs41 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \cf2 \sbasedon10 zzmpTCEntryL9;}{\s42\ql \li0\ri0\sb100\sa100\sbauto1\saauto1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 -\af0\afs24\alang1025 \ltrch\fcs0 \fs24\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 \sbasedon0 \snext42 Normal (Web);}{\*\cs43 \additive \rtlch\fcs1 \af37\afs17 \ltrch\fcs0 \f37\fs17 \sbasedon10 bodytext1;}{\*\cs44 \additive \rtlch\fcs1 \af0 -\ltrch\fcs0 \ul\cf2 \sbasedon10 Hyperlink;}{\s45\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon0 \snext45 Body Text 2;}{\*\cs46 \additive \rtlch\fcs1 \af0 \ltrch\fcs0 \ul\cf12 \sbasedon10 FollowedHyperlink;}{\*\cs47 \additive \rtlch\fcs1 \af1 \ltrch\fcs0 \f1\cf0 \sbasedon10 text1;}{\*\cs48 \additive \rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b -\sbasedon10 \styrsid684987 Strong;}{\s49\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af36\afs16\alang1025 \ltrch\fcs0 \f36\fs16\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 -\sbasedon0 \snext49 \slink50 \ssemihidden \styrsid4745031 Balloon Text;}{\*\cs50 \additive \rtlch\fcs1 \af36\afs16 \ltrch\fcs0 \f36\fs16\lang1033\langfe1033\langnp1033\langfenp1033 \sbasedon10 \slink49 \slocked \styrsid4745031 Balloon Text Char;}} -{\*\latentstyles\lsdstimax156\lsdlockeddef0{\lsdlockedexcept Normal;heading 1;heading 2;heading 3;heading 4;heading 5;heading 6;heading 7;heading 8;heading 9;toc 1;toc 2;toc 3;toc 4;toc 5;toc 6;toc 7;toc 8;toc 9;caption;Title;Subtitle;Strong;Emphasis;}} -{\*\listtable{\list\listtemplateid1586421402{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li360 -\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li1260\jclisttab\tx1260\lin1260 -}{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li2520\jclisttab\tx2520\lin2520 }{\listlevel -\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li3420\jclisttab\tx3420\lin3420 }{\listlevel -\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \af0 \ltrch\fcs0 \loch\af1\hich\af1\dbch\af0\fbias0 \fi-1080\li4680\jclisttab\tx4680\lin4680 }{\listlevel -\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li5580 -\jclisttab\tx5580\lin5580 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 -\fbias0 \fi-1440\li6840\jclisttab\tx6840\lin6840 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers -\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li7740\jclisttab\tx7740\lin7740 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1800\li9000\jclisttab\tx9000\lin9000 }{\listname Legal22;}\listid187183174}{\list\listtemplateid-1494708814 -{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'00.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\ai0\af1\afs22 \ltrch\fcs0 -\b\i0\strike0\outl0\shad0\embo0\impr0\caps\v0\f1\fs22\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s24\jclisttab\tx360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \ab0\ai0\af1\afs22 \ltrch\fcs0 \b0\i0\strike0\outl0\shad0\embo0\impr0\caps0\v0\f1\fs22\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s25\fi720\jclisttab\tx1080 }{\listlevel\levelnfc4\levelnfcn4 -\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'02);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs20 \ltrch\fcs0 -\b0\i0\strike0\outl0\shad0\embo0\impr0\caps0\v0\f0\fs20\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s26\fi1440\jclisttab\tx1800 }{\listlevel\levelnfc2\levelnfcn2\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'03(\'03);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs20 \ltrch\fcs0 \b0\i0\strike0\outl0\shad0\embo0\impr0\caps0\v0\f0\fs20\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s27\fi2160\jclisttab\tx2880 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 -\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'04);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0 -\b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s28\fi2880\jclisttab\tx3600 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'02\'05.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0 \b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s29\fi3600\jclisttab\tx4320 }{\listlevel\levelnfc2\levelnfcn2 -\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'02\'06.;}{\levelnumbers\'01;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0 -\b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s30\fi4320\jclisttab\tx5040 }{\listlevel\levelnfc4\levelnfcn4\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'03(\'07);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0 \b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s31\fi720\jclisttab\tx1440 }{\listlevel\levelnfc2\levelnfcn2 -\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03(\'08);}{\levelnumbers\'02;}\rtlch\fcs1 \ab0\ai0\af0\afs24 \ltrch\fcs0 -\b0\i0\strike0\outl0\shad0\embo0\impr0\scaps0\caps0\v0\f0\fs24\ulnone\cf0\nosupersub\animtext0\striked0\fbias0 \s32\fi1440\jclisttab\tx2160 }{\listname Legal2;}\listid589778925}{\list\listtemplateid1095382408{\listlevel\levelnfc0\levelnfcn0\leveljc0 -\leveljcn0\levelfollow0\levelstartat3\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-405\li405\jclisttab\tx405\lin405 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 -\levelstartat2\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-405\li688\jclisttab\tx688\lin688 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 -\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li1286\jclisttab\tx1286\lin1286 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 -{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li1569\jclisttab\tx1569\lin1569 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0 -{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li1852\jclisttab\tx1852\lin1852 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0 -\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li2495\jclisttab\tx2495\lin2495 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0 -\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li2778\jclisttab\tx2778\lin2778 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 -\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li3421\jclisttab\tx3421\lin3421 } -{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 -\fi-1440\li3704\jclisttab\tx3704\lin3704 }{\listname ;}\listid899175523}{\list\listtemplateid-53593918{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat4\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;} -\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 -\ltrch\fcs0 \fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 -\fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 -\fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 -\fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 -\ltrch\fcs0 \fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers -\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext -\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1 -\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listname ;}\listid1303119334} -{\list\listtemplateid-1282876056{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat6\levelspace0\levelindent0{\leveltext\'01\'00;}{\levelnumbers\'01;}\rtlch\fcs1 \ab\af0 \ltrch\fcs0 \b\fbias0 \fi-360\li360\jclisttab\tx360\lin360 -}{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'03\'00.\'01;}{\levelnumbers\'01\'03;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-360\li360\jclisttab\tx360\lin360 }{\listlevel\levelnfc0 -\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'05\'00.\'01.\'02;}{\levelnumbers\'01\'03\'05;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0 -\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'07\'00.\'01.\'02.\'03;}{\levelnumbers\'01\'03\'05\'07;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 -\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'09\'00.\'01.\'02.\'03.\'04;}{\levelnumbers\'01\'03\'05\'07\'09;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-720\li720\jclisttab\tx720\lin720 }{\listlevel\levelnfc0\levelnfcn0\leveljc0 -\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0b\'00.\'01.\'02.\'03.\'04.\'05;}{\levelnumbers\'01\'03\'05\'07\'09\'0b;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 }{\listlevel\levelnfc0 -\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0d\'00.\'01.\'02.\'03.\'04.\'05.\'06;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1080\li1080\jclisttab\tx1080\lin1080 -}{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'0f\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07;}{\levelnumbers\'01\'03\'05\'07\'09\'0b\'0d\'0f;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 -\fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace0\levelindent0{\leveltext\'11\'00.\'01.\'02.\'03.\'04.\'05.\'06.\'07.\'08;}{\levelnumbers -\'01\'03\'05\'07\'09\'0b\'0d\'0f\'11;}\rtlch\fcs1 \af0 \ltrch\fcs0 \fbias0 \fi-1440\li1440\jclisttab\tx1440\lin1440 }{\listname ;}\listid1717701764}}{\*\listoverridetable{\listoverride\listid589778925\listoverridecount0\ls1}{\listoverride\listid899175523 -\listoverridecount0\ls2}{\listoverride\listid589778925\listoverridecount0\ls3}{\listoverride\listid1303119334\listoverridecount0\ls4}{\listoverride\listid1717701764\listoverridecount0\ls5}}{\*\rsidtbl \rsid11936\rsid88914\rsid265398\rsid684987\rsid1250516 -\rsid1846192\rsid2128574\rsid2506696\rsid3227523\rsid3348545\rsid3741615\rsid3868789\rsid3882300\rsid4082071\rsid4201573\rsid4354079\rsid4739009\rsid4745031\rsid5123650\rsid5189883\rsid5206122\rsid5249949\rsid5272592\rsid5397688\rsid5708036\rsid5796271 -\rsid5834546\rsid5907843\rsid5924216\rsid6182972\rsid6253249\rsid6776828\rsid6902420\rsid7296646\rsid7562558\rsid7621291\rsid7692188\rsid7735196\rsid7879489\rsid8065525\rsid8198028\rsid8260678\rsid8284163\rsid8537681\rsid8550639\rsid8985796\rsid9054116 -\rsid9119910\rsid9445259\rsid9722996\rsid9767071\rsid9795825\rsid9837062\rsid9900246\rsid9908984\rsid9969717\rsid10094441\rsid10252196\rsid10296700\rsid10425897\rsid10430804\rsid10703085\rsid10712577\rsid10769984\rsid10892103\rsid11489578\rsid11875457 -\rsid11883158\rsid12134897\rsid12517589\rsid12536041\rsid12598188\rsid12654351\rsid13001579\rsid13334799\rsid13654851\rsid13966861\rsid13969160\rsid14229932\rsid14902293\rsid14902778\rsid15223633\rsid15497150\rsid16004039\rsid16137090\rsid16201318 -\rsid16217207\rsid16322833\rsid16322878\rsid16406037}{\*\generator Microsoft Word 11.0.8134;}{\info{\title iKNOWLEDGE, INC}{\author Palmer & Dodge LLP}{\operator Grant Drake}{\creatim\yr2007\mo1\dy28\hr18\min29}{\revtim\yr2007\mo7\dy22\hr20} -{\printim\yr2006\mo5\dy31\hr11\min1}{\version5}{\edmins35}{\nofpages4}{\nofwords1407}{\nofchars8024}{\*\company Palmer & Dodge LLP}{\nofcharsws9413}{\vern24611}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/word -ml}{\xmlns2 urn:schemas-microsoft-com:office:smarttags}}\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect -\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin -\dghspace100\dgvspace180\dghorigin1440\dgvorigin1440\dghshow0\dgvshow0\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\nolnhtadjtbl\nojkernpunct\rsidroot3741615 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0{\*\docvar {Document}{DOCUMENT}} -{\*\docvar {zzmpFixedCurrentTOCScheme}{Legal2}}{\*\docvar {zzmpFixedCurScheme}{Legal2}}{\*\ftnsep \ltrpar \pard\plain \ltrpar\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 -\ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid16322878 \chftnsep -\par }}{\*\ftnsepc \ltrpar \pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 -\ltrch\fcs0 \insrsid16322878 \chftnsep -\par (continued...) -\par }}{\*\ftncn \ltrpar \pard\plain \ltrpar\qr \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 -\ltrch\fcs0 \insrsid16322878 (continued...) -\par }}{\*\aftnsep \ltrpar \pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 -\ltrch\fcs0 \insrsid16322878 \chftnsep -\par }}{\*\aftnsepc \ltrpar \pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 -\ltrch\fcs0 \insrsid16322878 \chftnsepc -\par }}\ltrpar \sectd \ltrsect\binfsxn261\binsxn261\psz1\sbknone\linex0\footery432\endnhere\sectlinegrid272\sectdefaultcl\sectrsid3868789\sftnbj {\footerr \ltrpar \pard\plain \ltrpar\s20\qc \li0\ri0\widctlpar -\tqc\tx4680\tqr\tx9360\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid3868789 -}{\field{\*\fldinst { -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \cs21\f1\fs22\insrsid3868789\charrsid16004039 PAGE }}{\fldrslt {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \cs21\f1\fs22\lang1024\langfe1024\noproof\insrsid1846192 1}}}\sectd \linex0\endnhere\sectdefaultcl\sftnbj {\rtlch\fcs1 -\af0 \ltrch\fcs0 \insrsid3868789 - -\par }}{\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}} -{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 -\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar -\s2\qc \li0\ri0\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0\pararsid684987 \rtlch\fcs1 \ab\af0\afs20\alang1025 \ltrch\fcs0 \b\fs20\lang2057\langfe1033\cgrid\langnp2057\langfenp1033 {\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid15497150 KIWI}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid1846192 NOVA }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid9767071\charrsid9767071 LTD -\par }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid5272592 PERSONAL}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid13001579 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid9767071 LICENCE}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\ul\insrsid9767071\charrsid9767071 AND SUPPORT AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\ul\insrsid13966861\charrsid9767071 -\par }\pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9767071 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\lang2057\langfe1033\langnp2057\insrsid9767071\charrsid9767071 -\par }\pard\plain \ltrpar\s45\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14229932 \rtlch\fcs1 \ab\af1\afs20\alang1025 \ltrch\fcs0 \b\f1\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 NOTICE TO USER: PLEASE READ THIS }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid4739009 AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 CAREFULLY. }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188 BY CLICKING \'93I ACCEPT\'94 AND/OR }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 BY DOWNLOADING AND/OR USING ALL OR ANY PORTION OF THE SOFTWARE }{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \fs22\insrsid12598188 YOU }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717\charrsid9767071 (\'93LICEN}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717 S}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717\charrsid9767071 -EE\'94)}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188 ACCEPT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 THE FOLLOWING TERMS FROM }{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 KIWINOVA }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 LTD OF }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 24 AEGEAN APARTMENTS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\fs22\insrsid9767071\charrsid9767071 ,}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 19 WESTERN GATEWAY,}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 LONDON }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\fs22\insrsid15497150 E16 1}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 AR}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 (\'93}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid1846192 KIWINOVA}{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188 \'94). }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid11489578 YOU}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188 AGREE TO BE BOUND}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\fs22\insrsid9767071\charrsid9767071 BY ALL THE TERMS AND CONDITIONS OF THIS }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid4739009 AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 -. YOU AGREE THAT IT IS ENFORCEABLE AS IF IT WERE A WRITTEN NEGOTIATED }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid4739009 AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717 SIGNED BY}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\fs22\insrsid16406037 YOU}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 . IF }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9969717 YOU}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 - DO NOT AGREE TO THE TERMS OF THIS }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid4739009 AGREEMENT}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 DO NOT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid11489578 CLICK \'93 -I ACCEPT\'94 AND DO NOT DOWNLOAD OR }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid9767071\charrsid9767071 USE THE SOFTWARE. }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid14229932\charrsid9767071 -\par }\pard \ltrpar\s45\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \fs22\insrsid12598188\charrsid9767071 -\par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\caps\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.\tab}}\pard\plain \ltrpar -\s24\qj \fi-567\li567\ri0\sa120\keepn\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls3\outlinelevel0\adjustright\rin0\lin567\itap0\pararsid6776828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid9767071 DEFINITIONS}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid14902293 \hich\af1\dbch\af0\loch\f1 1.1\tab}}\pard\plain \ltrpar\s25\qj \fi-567\li567\ri0\sa120\widctlpar -\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin567\itap0\pararsid5189883 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid14902293 \'93Agreement\'94 means this Licence and Support Agreement. -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.2\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861\charrsid9767071 \'93Documentation\'94 means the electronic user information }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902778\charrsid9767071 supplied }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861\charrsid9767071 with the Software}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10252196 . -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid10252196\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.3\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid10252196\charrsid9767071 \'93Effective Date\'94 means the date }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16406037 on which the Licensee accepts this Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7562558 . -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid10252196\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.4\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid10252196\charrsid9767071 \'93Minimum Requirements\'94 means a min}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 imum technical specification of}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10252196\charrsid9767071 - the PC or laptop on which the Software is used which is required to enable the Software to function}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 , as set out in the Documentation}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid10252196\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10252196 -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid12598188\charrsid9767071 \hich\af1\dbch\af0\loch\f1 1.5\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid12598188\charrsid9767071 \'93Software\'94 means the }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 object code form }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188\charrsid9767071 of }{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid12598188 the }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 personal}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 version of the software product entitled Testdriven.net}{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid12598188\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 -\par }\pard\plain \ltrpar\s22\qj \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid5907843 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 -\ltrch\fcs0 \insrsid5907843\charrsid5907843 -\par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\caps\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 2.\tab}}\pard\plain \ltrpar -\s24\qj \li0\ri0\sa120\keepn\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls3\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid6776828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid9767071 GRANT OF RIGHTS; RESTRICTIONS -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 2.1\tab}}\pard\plain \ltrpar\s25\qj \fi-567\li567\ri0\sa120\widctlpar -\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls1\ilvl1\outlinelevel1\adjustright\rin0\lin567\itap0\pararsid5189883 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 Subject to all the terms and conditions of this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 , }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 hereby grants Licensee a}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid12598188 perpetual}{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 , worldwide, none}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid9767071 xclusive, nontransferable licenc}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861\charrsid9767071 e to install and use the Software on }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid265398 one}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 PC or laptop for}{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid265398 Licensee\rquote s}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 own use only. This licen}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid9767071 c}{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 e is in respect of use of the Software by the Licensee only and no subsidiaries or holding company of the Licensee may use the Software. -\par {\*\bkmkstart OEMS_OBLIGATIONS}{\*\bkmkstart OEM_SYSTEM_SUPPORT}{\*\bkmkstart TECHNICAL_SUPPORT_SERVICES}{\*\bkmkend OEMS_OBLIGATIONS}{\*\bkmkend OEM_SYSTEM_SUPPORT}{\*\bkmkend TECHNICAL_SUPPORT_SERVICES}{\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 2.2\tab}Except as expressly permitted in this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 , Licensee shall not, and shall not permit others to: (i)\~ -modify, translate, create derivative copies of or copy the Software (other than one backup copy which reproduces all proprietary notices), in whole or in part; (ii)\~ -reverse engineer, decompile, disassemble or otherwise reduce the Software to source code form; (iii)\~distribute, sublicense, assign, share, timeshare, sell, rent, lease, grant a security interest in, use for service bureau purposes, or othe -rwise transfer the Software or Licensee\rquote s right to use the Software; (iv)\~remove or modify any copyright, trademark, or other proprietary notices of }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid15497150\charrsid9767071 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 affixed to the media containing the Software or contained within the Software; or (v) use - the Software in any manner not expressly authorised by this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 . }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861 -\par }\pard\plain \ltrpar\s22\qj \li0\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid265398 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 -\ltrch\fcs0 \insrsid265398\charrsid265398 -\par {\*\bkmkstart TERM_AND_TERMINATION}{\*\bkmkend TERM_AND_TERMINATION}{\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid10425897\charrsid9767071 \hich\af1\dbch\af0\loch\f1 3 -\tab}}\pard\plain \ltrpar\s24\qj \fi-567\li567\ri0\sa120\keepn\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls2\outlinelevel0\adjustright\rin0\lin567\itap0\pararsid10425897 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid10425897\charrsid9767071 PROPRIETARY RIGHTS{\*\bkmkstart _REF426272673}{\*\bkmkend _REF426272673} -\par }\pard\plain \ltrpar\s23\qj \fi-567\li567\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0\pararsid10425897 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 4.1\tab }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid15497150\charrsid9767071 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid10425897\charrsid9767071 has sole and exclusive ownership of all right, title, and interest in and to the Software, including all copyright and any other intellectual property rights therein. This }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid10425897 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897\charrsid9767071 conveys a limited }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 licence}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid10425897\charrsid9767071 to use the Software and shall not be construed to convey title to or ownership of the Software to Licensee. All rights in and to the Software not expressly granted to Licensee are reserved by }{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 -\par }\pard\plain \ltrpar\s25\qj \fi-567\li567\ri0\sa120\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin567\itap0\pararsid10425897 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 4.2\tab For the avoidance of doubt, the Software does not include: -\par }\pard \ltrpar\s25\qj \fi-1276\li1276\ri0\sa120\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin1276\itap0\pararsid10425897 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 \tab 4.2.1\tab }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16137090 Actipro Software}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid15497150 which }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16137090 is}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid15497150 provided }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 by }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196\charrsid7735196 http://}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16137090 -actiprosoftware.com}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196\charrsid7735196 /}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 -on the terms and conditions set out at: }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16137090 ActiproEULA}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16137090 html}{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 -\par }\pard\plain \ltrpar\s22\qj \fi-1276\li1276\ri0\sa240\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin1276\itap0\pararsid10425897 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af0 \ltrch\fcs0 \insrsid10425897 \tab }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 4.2.4}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897\charrsid16322833 -\tab }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid15497150 CommandBars}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 which is distributed with permission from }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid15497150 -Lutz Roeder }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897\charrsid13969160 <}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid15497150 roeder}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897\charrsid13969160 @}{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid15497150 aisto}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7692188\charrsid7692188 .com}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897\charrsid13969160 >}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid10425897 -\par }\pard\plain \ltrpar\s23\qj \fi-567\li567\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0\pararsid11489578 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid10425897 -\par {\*\bkmkstart TRADEMARK}{\*\bkmkstart CALCULATION_OF_FEES}{\*\bkmkend TRADEMARK}{\*\bkmkend CALCULATION_OF_FEES}{\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 -\b\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid4082071 \hich\af1\dbch\af0\loch\f1 4\tab}}\pard\plain \ltrpar\s24\qj \fi-567\li567\ri0\sa120\keepn\widctlpar -\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls2\outlinelevel0\adjustright\rin0\lin567\itap0\pararsid5189883 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs22 -\ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid4082071 TERM AND TERMINATION{\*\bkmkstart _REF426272235}{\*\bkmkend _REF426272235} -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid4082071 \hich\af1\dbch\af0\loch\f1 4.1\tab}}\pard\plain \ltrpar\s25\qj \fi-600\li600\ri0\sa120\widctlpar -\jclisttab\tx600\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl1\outlinelevel1\adjustright\rin0\lin600\itap0\pararsid5907843 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid4082071 This }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293\charrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid4082071 - shall commence on the Effective Date and continue in effect for consecutive annual periods, unless and until terminated in accordance with clause }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 4}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861\charrsid4082071 .2}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid9969717 , or unless terminated by Mutant on the provision of not less than thirty (30) days notice to the Licensee}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid9908984 , such notice to be provided to the Licensee via }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid9908984 \rquote s website}{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid4082071 . -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 4.2\tab}}\pard \ltrpar\s25\qj \fi-567\li567\ri0\sa120\widctlpar -\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl1\outlinelevel1\adjustright\rin0\lin567\itap0\pararsid5189883 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 If either party breaches this }{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 in any material respect, the other party may give written notice to the breaching party of its intent to terminate, - and if such breach is not cured within thirty (30) days after the breaching party\rquote s receipt of such notice, this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861\charrsid9767071 shall terminate without any further notice required (but no cure period is required for any breach that cannot be cured). -\par {\*\bkmkstart OBLIGATIONS_ON_TERMINATION}{\*\bkmkend OBLIGATIONS_ON_TERMINATION}{\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 -\hich\af1\dbch\af0\loch\f1 4.3\tab}Upon any termination of this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 , (a)\~the rights and }{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid9767071 licence}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 s granted to Licensee herein shall terminate; (b)\~Licensee shall cease all use of the Software; (c)\~Licensee shall }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16322833 delete }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 all copies of the Software and Documentation in Licensee\rquote s possession or under its control; and (d)\~ -Licensee shall certify in writing to }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 its compliance with the foregoing.{\*\bkmkstart _REF426272371} -{\*\bkmkend _REF426272371} Clauses\~1, }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16406037 2.2, }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 3}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 , }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 4}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 .3, }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 5}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861\charrsid9767071 , }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 6 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 and }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 7}{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 shall survive any termination of this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861 -\par }\pard\plain \ltrpar\s24\qj \li0\ri0\sa120\keepn\widctlpar\wrapdefault\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0\pararsid5907843 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid5907843 {\*\bkmkstart OWNERSHIP_OF_RIGHTS}{\*\bkmkstart _REF426271959}{\*\bkmkstart CONFIDENTIALITY}{\*\bkmkend OWNERSHIP_OF_RIGHTS}{\*\bkmkend _REF426271959}{\*\bkmkend CONFIDENTIALITY} -\par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 5\tab}}\pard \ltrpar\s24\qj \fi-360\li360\ri0\sa120\keepn\widctlpar -\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls4\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid5189883 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid9767071 REPRESENTATIONS AND WARRANTIES -\par }\pard\plain \ltrpar\s25\qj \fi-567\li567\ri0\sa120\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin567\itap0\pararsid6776828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 5.1}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 \tab }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid5907843 LICENSEE ACKNOWLEDGES AND}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843\charrsid5907843 AGREES THAT }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196 KIWI}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid1846192 NOVA}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843\charrsid5907843 HAS PROVIDED NO EXPRESS OR IMPLIED WARRANTIES, ORAL OR WRITTEN, TO }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 LICENSEE }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843\charrsid5907843 REGARDING THE SOFTWARE OR DOCUMENTATION AND THAT THEY ARE PROVIDED \'93AS IS\'94 WITHOUT WARRANTY OF ANY KIND. }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 -TO THE MAXIMUM EXTENT PERMITTED BY LAW }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196 KIWI}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 NOVA}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843\charrsid5907843 HEREBY } -{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 EXCLUDES AND }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843\charrsid5907843 -DISCLAIMS ALL WARRANTIES WITH REGARD TO THE SOFTWARE AND DOCUMENTATION, EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843\charrsid9767071 THE IMPLIED}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid5907843\charrsid5907843 WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843\charrsid9767071 AND ANY WARRANTIES ARISING BY STATUTE OR OTHERWISE IN LAW -OR FROM COURSE OF DEALING, COURSE }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16406037 OF PERFORMANCE, OR USE OF TRADE}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843\charrsid5907843 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid5907843 -\par }\pard\plain \ltrpar\s22\qj \fi-567\li567\ri0\sa240\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0\pararsid6776828 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid5907843 5.2}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 \tab -The Licensee hereby represents that it shall (i) comply with all applicable local and foreign laws and regulations which may govern the use of the Software, and (ii) use the Software only for lawful purposes and in accordance with the terms of this }{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 . -\par {\*\bkmkstart INDEMNIFICATION}{\*\bkmkstart NO_CONSEQUENTIAL_DAMAGES}{\*\bkmkend INDEMNIFICATION}{\*\bkmkend NO_CONSEQUENTIAL_DAMAGES}{\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 -\b\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid9767071 \hich\af1\dbch\af0\loch\f1 6\tab}}\pard\plain \ltrpar\s24\qj \fi-360\li360\ri0\sa120\keepn\widctlpar -\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls4\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid5189883 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs22 -\ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid9767071 LIMITATION OF LIABILITY}{\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid16004039 /INDEMNITY}{\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid9767071 -\par {\*\bkmkstart LIMITATION_ON_LIABILITY}{\*\bkmkstart EQUITABLE_REMEDIES}{\*\bkmkend LIMITATION_ON_LIABILITY}{\*\bkmkend EQUITABLE_REMEDIES}{\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid7296646 \hich\af1\dbch\af0\loch\f1 6.1\tab}}\pard\plain \ltrpar\s25\qj \fi-567\li567\ri0\sa120\widctlpar -\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl1\outlinelevel1\adjustright\rin0\lin567\itap0\pararsid5189883 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid7296646 SAVE IN RESPECT OF DEATH OR PERSONAL INJURY, FOR WHICH THE LIABILITY OF THE PARTIES SHALL BE UNLIMITED, }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16322833\charrsid9767071 IN NO EVENT SHALL }{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KIWINOVA}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16322833\charrsid9767071 BE LIABLE FOR ANY SPECIAL, }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7296646 DIRECT, }{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid16322833\charrsid9767071 INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOS -S OF PROFITS AND GOODWILL, BUSINESS OR BUSINESS BENEFIT, OR THE COST OF PROCUREMENT OF SUBSTITUTE PRODUCTS BY LICENSEE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO CIRCUMSTANCES SHALL }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid1846192 KIWINOVA}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16322833\charrsid9767071 BE LIABLE FOR ANY FAILURE OF THE SOFTWARE - TO PERFORM IN ACCORDANCE WITH THE DOCUMENTATION, OR AT ALL, RESULTING FROM A FAILURE BY THE LICENSEE TO COMPLY WITH THE MINIMUM REQUIREMENTS. ADDITIONALLY, LICENSEE ACKNOWLEDGES TH}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid16322833\charrsid16004039 AT WHILST THE SOFTWARE MAY BE USED IN COMBINATION WITH THIRD PARTY SOFTWARE, }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KIWINOVA}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid16322833\charrsid16004039 BEARS NO LIABILITY, HOWSOEVER ARISING, FOR ANY LOSS, DAMAGE OR COST THAT ARISES FROM A FAILURE OF THE SOFTWARE TO INTEGRATE WITH LICENSEE OR THIRD PARTY SOFTWARE.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid13966861\charrsid16004039 -\par }\pard\plain \ltrpar\s22\qj \fi-567\li567\ri0\sa240\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin567\itap0\pararsid16004039 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16004039\charrsid16004039 8.3\tab }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16004039 LICENSEE HEREBY INDEMNIFIES }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KIWINOVA}{ -\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid16004039 IN FULL AND ON DEMAND IN RESPECT OF ALL COSTS, DAMAGES AND LIABILITIES ARISING FROM ANY BREACH BY THE LICENSEE OF ANY TERM OF THIS AGREEMENT.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid16004039\charrsid16004039 -\par {\listtext\pard\plain\ltrpar \s24 \rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid16004039 \hich\af1\dbch\af0\loch\f1 7\tab}}\pard\plain \ltrpar -\s24\qj \fi-360\li360\ri0\sa120\keepn\widctlpar\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls4\outlinelevel0\adjustright\rin0\lin360\itap0\pararsid5189883 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 -\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid16004039 GENERAL}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid16004039 -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid13966861\charrsid16004039 \hich\af1\dbch\af0\loch\f1 7.1\tab}}\pard\plain \ltrpar\s25\qj \fi-567\li567\ri0\sa120\widctlpar -\jclisttab\tx567\wrapdefault\aspalpha\aspnum\faauto\ls4\ilvl1\outlinelevel1\adjustright\rin0\lin567\itap0\pararsid5189883 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid16004039 Licensee shall not assign}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid14902293 Agreement}{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 , in whole or in part, without the written consent of }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 . - -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid4082071\charrsid9767071 \hich\af1\dbch\af0\loch\f1 7.2\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071\charrsid9767071 Licensee consents to the use by }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 of Licensee\rquote -s name in customer lists and other publicity, including interviews, case studies, and conference discussions, provided that such publicity accurately describes the nature of the relationship between Licensee and }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid4082071\charrsid9767071 \hich\af1\dbch\af0\loch\f1 7.3\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071\charrsid9767071 This }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 - and its performance shall be governed by and construed in accordance with and the parties hereby submit to the exclusive jurisdiction of the laws of {\*\xmlopen\xmlns2{\factoidname country-region}}England{\*\xmlclose} and {\*\xmlopen\xmlns2{\factoidname -place}}{\*\xmlopen\xmlns2{\factoidname country-region}}Wales{\*\xmlclose}{\*\xmlclose}.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid4082071\charrsid9767071 \hich\af1\dbch\af0\loch\f1 7.4\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071\charrsid9767071 Licensee agrees that because of the unique nature of the Software and }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071\charrsid9767071 \rquote s proprietary rights therein, a demonstrated breach of this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 - by Licensee would irreparably harm }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 and monetary damages would be inadequate compensation. - Therefore, Licensee agrees that }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 - shall be entitled to preliminary and permanent injunctive relief, as determined by any court of competent jurisdiction to enforce the provisions of this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid4082071\charrsid9767071 \hich\af1\dbch\af0\loch\f1 7.5\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071\charrsid9767071 If any provision of this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 - or the Software thereof is declared void, illegal, or unenforceable, the remainder of this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 - will be valid and enforceable to the extent permitted by applicable law. In such event, the parties agree to use their best efforts to replace the invali -d or unenforceable provision by a provision that, to the extent permitted by the applicable law, achieves the purposes intended under the invalid or unenforceable provision}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 . -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid4082071\charrsid9767071 \hich\af1\dbch\af0\loch\f1 7.6\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071\charrsid9767071 Any failure by any party to this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 - to enforce at any time any term or condition under this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 will not be considered a waiver of that party -\rquote s right thereafter to enforce each and every term and condition of this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement. -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid4082071\charrsid9767071 \hich\af1\dbch\af0\loch\f1 7.7\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071\charrsid9767071 Neither party will be responsible for delays resulting from circumstances beyond the reasona -ble control of such party, provided that the nonperforming party uses reasonable efforts to avoid or remove such causes of nonperformance and continues performance hereunder with reasonable dispatch whenever such causes are removed}{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 . -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\lang1033\langfe1033\langnp1033\langfenp1033\insrsid11883158 \hich\af1\dbch\af0\loch\f1 7.8\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid11883158 T}{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 his }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid11883158 }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071\charrsid9767071 (i)\~ -constitutes the entire agreement and understanding between the parties with respect to the subject matter hereof and supersedes all prior agreements, oral and written, made with respect to the subject matter hereof, and (ii)\~ -cannot be altered except by agreement in writing executed by an authorised representative of each party. No purchase order and/or standard terms of purchase provided by Licensee shall supersede this }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid4082071 Agreement}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid4082071 -\par {\listtext\pard\plain\ltrpar \s25 \rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\expnd0\expndtw-2\lang1033\langfe1033\langnp1033\langfenp1033\insrsid4082071\charrsid9767071 \hich\af1\dbch\af0\loch\f1 7.9\tab}}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\expnd0\expndtw-2\insrsid4082071\charrsid9767071 Nothing in this Agreement shall give, directly or indirectly, any third party any enforceable benefit or any right of action against }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\expnd0\expndtw-2\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\expnd0\expndtw-2\insrsid4082071\charrsid9767071 and such third parties shall not be entitled to enforce any term of this Agreement against }{\rtlch\fcs1 -\af1\afs22 \ltrch\fcs0 \f1\fs22\expnd0\expndtw-2\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\expnd0\expndtw-2\insrsid4082071\charrsid9767071 .}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid13966861\charrsid9767071 . -\par }\pard\plain \ltrpar\qj \li0\ri0\sa120\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9767071 \rtlch\fcs1 \af0\afs20\alang1025 \ltrch\fcs0 \fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid8065525\charrsid9767071 If you have any questions regarding this Licence and Support Agreement or if you wish to discuss the terms and conditions contained herein please contact }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid1846192 KiwiNova}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid9767071\charrsid9767071 Ltd}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid8065525\charrsid9767071 using the contact details at}{\rtlch\fcs1 \af1\afs22 -\ltrch\fcs0 \f1\fs22\insrsid9445259 http://www.}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196 kiwidude.com}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid8065525\charrsid9767071 or at }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 -\f1\fs22\insrsid1846192 24 Aegean Apartments}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196 , }{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 19 Western Gateway}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid7735196 -, London E16 1}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid1846192 AR}{\rtlch\fcs1 \af1\afs22 \ltrch\fcs0 \f1\fs22\insrsid8065525\charrsid9767071 . -\par }\pard \ltrpar\qj \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\rtlch\fcs1 \ab\af1\afs22 \ltrch\fcs0 \b\f1\fs22\insrsid13966861\charrsid9767071 -\par }} \ No newline at end of file diff --git a/lib/NCover/Explorer/NCoverExplorer.Console.exe b/lib/NCover/Explorer/NCoverExplorer.Console.exe deleted file mode 100644 index 7dee5442..00000000 Binary files a/lib/NCover/Explorer/NCoverExplorer.Console.exe and /dev/null differ diff --git a/lib/NCover/Explorer/NCoverExplorer.Core.dll b/lib/NCover/Explorer/NCoverExplorer.Core.dll deleted file mode 100644 index 91dfff5c..00000000 Binary files a/lib/NCover/Explorer/NCoverExplorer.Core.dll and /dev/null differ diff --git a/lib/NCover/Explorer/NCoverExplorer.NAntTasks.dll b/lib/NCover/Explorer/NCoverExplorer.NAntTasks.dll deleted file mode 100644 index 552e4525..00000000 Binary files a/lib/NCover/Explorer/NCoverExplorer.NAntTasks.dll and /dev/null differ diff --git a/lib/NCover/Explorer/NCoverExplorer.NCoverRunner.dll b/lib/NCover/Explorer/NCoverExplorer.NCoverRunner.dll deleted file mode 100644 index fe686c99..00000000 Binary files a/lib/NCover/Explorer/NCoverExplorer.NCoverRunner.dll and /dev/null differ diff --git a/lib/NCover/Explorer/NCoverExplorer.WinForms.dll b/lib/NCover/Explorer/NCoverExplorer.WinForms.dll deleted file mode 100644 index 173d63f9..00000000 Binary files a/lib/NCover/Explorer/NCoverExplorer.WinForms.dll and /dev/null differ diff --git a/lib/NCover/Explorer/NCoverExplorer.exe b/lib/NCover/Explorer/NCoverExplorer.exe deleted file mode 100644 index 24fb51a4..00000000 Binary files a/lib/NCover/Explorer/NCoverExplorer.exe and /dev/null differ diff --git a/lib/NCover/Explorer/NCoverExplorer.exe.config b/lib/NCover/Explorer/NCoverExplorer.exe.config deleted file mode 100644 index 4bb5eb0d..00000000 --- a/lib/NCover/Explorer/NCoverExplorer.exe.config +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/lib/NCover/Explorer/NCoverExplorerFAQ.html b/lib/NCover/Explorer/NCoverExplorerFAQ.html deleted file mode 100644 index 1ee34b9c..00000000 --- a/lib/NCover/Explorer/NCoverExplorerFAQ.html +++ /dev/null @@ -1,303 +0,0 @@ - - - - - NCoverExplorer FAQ - - - - - -

NCoverExplorer FAQ

-

The latest version of this document is located here. -
For the latest NCoverExplorer news and updates, visit my blog.

-

Expand All | Collapse All

- 1. What is NCoverExplorer?
- - 2. What versions of the .NET Framework does it work with?
- - 2. What versions of NCover does it work with?
- - 3. Can I integrate it with my Visual Studio.Net version XXX IDE?
- - 4. Can I integrate it without TestDriven.Net?
- - 5. How does it compare to Visual Studio Team System?
- - 6. Why didn't you integrate NCoverExplorer directly into the IDE like VSTS or SharpDevelop?
- - 7. What do the tree node colours mean?
- - 8. What do the source code highlighting colours mean?
- -
9. What is that "Satisfaction Threshold" all about?
- - 10. I have a killer idea for XYZ feature - can you add it for me?
- - 11. Where can I download the latest version?
- - 12. What are the keyboard shortcuts?
- - 13. Where are my personal settings stored?
- - 14. Where can I download the custom NAnt/MSBuild tasks from?
- - 15. I get an "Illegal characters in path" exception - why?
- - 16. I get a "System.Format" exception - why?
- - 17. My module thresholds are not working - why?
- -

---------------------------------
FAQ last updated Jul 21st 2007.

- - diff --git a/lib/NCover/Explorer/NCoverExplorerReleaseNotes.html b/lib/NCover/Explorer/NCoverExplorerReleaseNotes.html deleted file mode 100644 index e9fc6d29..00000000 --- a/lib/NCover/Explorer/NCoverExplorerReleaseNotes.html +++ /dev/null @@ -1,874 +0,0 @@ - - - - NCoverExplorer Release Notes - - - - - -

NCoverExplorer Release Notes

-

The latest version of this document is located here. -
For the latest NCoverExplorer news and updates, visit my blog.

-
- -

v1.4.0 - Sep 16th 2007

-

The following new features were introduced:

-
    -
  • - Major rewrite of the underlying object design for future maintainability. Should improve treeview - performance for .NET 2.0 users (and load performance for all users) as well as make it easier to - add new features. -
  • -
  • - Changes to the project setting file format and location, both as used by the NCoverExplorer gui - and the NCoverExplorer.Console.exe application. If you use the /c argument supplying a configuration - file to NCoverExplorer then you must modify your project file format. See ConsoleExample.config - for details (replace the outer tag to be called ConsoleSetting). -
  • -
  • - Replaced ICSharpCode text editor with Actipro which offers far superior features, more attractive - appearance and provides a more flexible licensing model for the future of NCoverExplorer. -
  • -
  • - A new attribute added into the coverage report xml of "totalSeqPoints" which includes the - total of any excluded sequence points at that level. In response to a feature request in - this NCover forum thread to allow - people to report how much code was excluded from coverage. -
  • -
  • - Add a copy command to the right-click menu for the source code area. -
  • -
  • - Add a print preview command to the File menu. -
  • -
  • - Add support for profiling a specific process module to the Run NCover dialog. -
  • -
  • - Add a /fc (failCombinedMinimum) option to NCoverExplorer.Console.exe for emulating the - original behaviour of failing based on total coverage to supplement the /f option which - fails if an individual module is below the coverage threshold. -
  • -
-

The following minor changes were made:

-
    -
  • - Rewrite the options dialog to use a VS.Net style property pages approach. -
  • -
  • - Exclusions tab in Options dialog - delete key is now a shortcut to removing an exclusion. -
  • -
  • - Reorder the file menu slightly so Run NCover is separated. -
  • -
  • - Source code window now has a splitter bar. -
  • -
  • - Command line generated for NCover 1.5.7+ in NCover Runner dialog includes the //reg - option if choosing to register coverlib.dll. -
  • -
  • - Statistics pane auto-sizes the last column to fill the width of the listview. -
  • -
  • - Coverage exclusions now support '?' and more complex wildcard expressions such - as Test.*.Something*. -
  • -
-

The following bug fixes were made:

-
    -
  • - Line number foreground colour not displayed correctly in options dialog tab. -
  • -
  • - Directory not created if not existing when writing output report. -
  • -
  • - Corrected typo in full name of parameter when using /quiet option with NCoverExplorer.Console. -
  • -
  • - Reduce GDI usage by editor control. - Rnsure Actipro renderer is correctly utilised. - Turn off text margins in NCover run dialog for editor. - Ensure C++ code has whole line highlighted even though no sequence point values. - (Build 1.4.0.6) -
  • -
-
- -

v1.3.6 - Apr 5th 2007

-

Bundled with TestDriven.Net from build 2.5.2078.

-

The following new features were introduced:

-
    -
  • - Added a Find dialog (ctrl+F) to quickly navigate to a class. Wildcards are supported. -
  • -
  • - Added a /q or /quiet option to NCoverExplorer.Console.exe to minimise the output. -
  • -
-

The following minor changes were made:

-
    -
  • - Failing if less than a threshold now applies to any assembly not meeting the threshold - rather than comparing against the total coverage across all assemblies. -
  • -
  • - Add some examples to the NCoverExplorer.Console.exe output for the /help or /? (or no arguments). -
  • -
  • - Pressing ESC on the NCover Runner dialog will now close it. -
  • -
  • - Implement a workaround for poor treeview performance under .NET 2.0. -
  • -
  • - Rather than displaying validation errors automatically "fix" paths with matching trailing - slashes in the Change Source Path dialog. -
  • -
  • - Writing of coverage files should now match the schema for the relevant NCover version. - Later NCover versions like 1.5.7 have enhanced the schema, so the results of a merge or - save from NCoverExplorer should offer a comparative schema in the result. -
  • -
  • - Add a message indicating the return code to the output. -
  • -
-

The following bug fixes were made:

-
    -
  • - NCover 1.5.5/6 produce duplicate sequence points. To workaround this fix Jamie Cansdale implemented - a change for me to the way the methods are identified uniquely. The longer term fix is NCover version 1.5.7 - - this should keep things usable until that is released. -
  • -
  • - Another issue up to at least NCover 1.5.7 is that non-instrumented code does not have the sequence - points optimised. When merging multiple coverage files NCoverExplorer was incorrectly merging the noops with - valid instrumented sequence points, resulting in lower coverage information. -
  • -
  • - If CoverageReport.xsl stylesheet already exists in destination output folder for an xml report - and is marked as read-only then the replace would fail. -
  • -
  • - Drag/drop of coverage.xml files would add to the wrong end of the MRU menu once the maximum - number of items is reached. -
  • -
  • - If multiple classes in the same file then selecting a class node was not navigating to that - class in the source code tab. It will now jump to the first unvisited sequence point, or if - there are none of those the first sequence point in the class. -
  • -
  • - Wildcards for coverage exclusions were only working if placed at the ends, not in the middle - e.g. *.Tests or Testing.* would work, but xxx.*.yyy would not. -
  • -
  • - Prevent some of the nasty GDI errors in CommandBars code from disrupting the GUI. Longer - term will utilise another framework. -
  • -
  • - Replacing paths by typing them in had MaxLength set to 50 so impossible to edit long paths - in the Change Source Path dialog. -
  • -
  • - Merging property nodes under a parent in the tree has a dependency on the ordering of the coverage output - to ensure they appear properly. -
  • -
  • - When restoring form position from persisted values, ensure it appears on a visible screen, - catering for the user changing their display settings between sessions. -
  • -
  • - Ensure stylesheet cannot be copied over the top of itself. -
  • -
  • - Supplying a file pattern with no matches to NCoverExplorer.Console.exe was throwing an "Index was - outside the bounds of the array" exception. -
  • -
  • - Multiple coverage exclusion attributes not supplied correctly to NCover (build 26). -
  • -
  • - Check to make sure node is assigned to a TreeView before getting handle to set text (build 32). -
  • -
  • - Sort sequence point nodes when loading and handle merge case of multiple non-instrumented - sequence points becoming a single sequence point. (build 36). -
  • -
-
- -

v1.3.5 - Oct 23rd 2006

-

Bundled with TestDriven.Net from build 2.0.1921.

-

The following new features were introduced:

-
    -
  • - Added ability to run NCover from within NCoverExplorer (all versions). User Ctrl+N or - entries on File menu/toolbar to bring up configuration dialog. After successful - execution, the resultant coverage file is displayed in NCoverExplorer. -
  • -
  • - Added ability to generate MSBuild, NAnt and command-line scripts for running NCover - from within NCoverExplorer. See the NCover dialog above. -
  • -
  • - Added new function coverage viewing options and module/class coverage report. - Indicates the percentage of functions covered rather than the sequence points within each. - Supported by a new "satisfactory function threshold" and function % sorting options. -
  • -
  • - Background colours can now be customised for coverage nodes in the tree. -
  • -
  • - Reports will now have the current filtering applied, not just the sorting settings. -
  • -
  • - Reports using NCoverExplorer.Console can now have filtering and sorting applied. Use the - /sort: and /filter: command line arguments, or specify in a .config file (see example.config), - or use the sort/filter arguments to the NAnt/MSBuild tasks. -
  • -
  • - Sorting and filtering options applied are now persisted and reapplied to the next coverage - xml file loaded, both in this and future sessions. -
  • -
  • - Added ability to filter out all nodes exceeding coverage threshold. -
  • -
  • - Revamp to the NAnt/MSBuild tasks. Renamed assemblies and namespaces. Included new attribute of - "AssembliesList" as an alternative to the "Assemblies" group element to allow direct - specification of a list as you would on the command line. The "Version" attribute is now optional - - the task determines it from the NCover assembly instead if not specified. Tasks will automatically - register NCover coverlib.dll using the HKCU entry in the registry - no need for regsvr32 any more! - NCoverExplorer task now writes it's config file to temp folder for passing to the executable. -
  • -
  • - Added documentation for the NAnt and MSBuild tasks. This is included both in the NCoverExplorer.Extras.zip - file, as well as being available online for the custom MSBuild Task Help - and NAnt Task Help. - Links also available off the Help menu for NCoverExplorer. -
  • -
  • - Added a schema file ConsoleConfig.xsd to the distribution for people wanting to know the exact syntax - options for creating .config files to pass to NCoverExplorer.Console using the /config switch. -
  • -
  • - Added regular expression support to the coverage exclusions dialog for people wanting more complex queries. -
  • -
-

The following minor changes were made:

-
    -
  • - Configuration file change - the ModuleThresholds section in .config files passed to NCoverExplorer.Console now - uses propercase attribute names to be consistent with the rest of the configuration file. - i.e. "ModuleName" instead of "moduleName", and "SatisfactoryCoverage" instead of "satisfactoryCoverage". You must update - your NAnt/MSBuild tasks for NCoverExplorer if you use these. If you instead use the <exec> task with a .config - file then you should update the case of the entries in this file. This only affects people who have setup coverage exclusions - at the module level for reporting purposes. -
  • -
  • - If source code is out of date compared to the coverage results, the user is prompted with - the change source path dialog. -
  • -
  • - If the user chooses a new source code location, the tab is now automatically opened for - that location rather than requiring the user to click on the tree node again. -
  • -
  • - Added Help->NCoverExplorer Forum menu option to link to the NCover website. Also included - forum link information on the exception dialog. -
  • -
  • - Added a toolbar button for turning off filtering. -
  • -
  • - Keyboard shortcut change - Changed the keyboard shortcuts for next/previous unvisited class (ALT+UP/DOWN) and - next/previous unvisited line in class (ALT+LEFT/RIGHT). -
  • -
  • - Remember which tab was last opened in the NCoverExplorer options dialog during an NCoverExplorer session. -
  • -
  • - Replaced references to "transparent.gif" with "shim.gif" in the NCoverExplorerSummary.xsl. The "shim.gif" - file is a transparent 1x1 gif already distributed with CC.Net. -
  • -
  • - Coverage exclusions for assemblies are now case insensitive. -
  • -
  • - There are no longer two default coverage exclusions added of "*.Tests" and "*.My*" for first time users. - Intended for demo purposes only but stayed in until now. New users can manually add them if they desire them. -
  • -
-

The following bug fixes were made:

-
    -
  • - Overloaded constructors with class level variable declarations were being merged into a single - constructor in the coverage results as they had the same "start line" of the variable. Now uses - end line as part of the identifying key for each method. -
  • -
  • - Memory leak from opening and closing tabs displaying source code. -
  • -
  • - .Net 2.0 performance is pretty dire due to crap Microsoft changes to the TreeView control. - Change to default to .Net 1.1 in NCoverExplorer.exe.config and wrap updates to the tree - in BeginUpdate/EndUpdate. -
  • -
  • - Parsing Java code would blow up if an accessor had the same name as a nested class (illegal in C#). -
  • -
  • - Bugfix in NCover task where multiple assemblies were specified for NCover 1.5.4, which requires - separate <assembly> nodes. -
  • -
  • - Bugfix in trying to restore selected node text after refreshing file could raise - null reference exception. -
  • -
  • - Bugfix so that module names specified in module thresholds when using NCoverExplorer.Console - are no longer case sensitive for matching. -
  • -
  • - Added support for NCover 1.5.5 - the //q bug is fixed in NCover. Also changed parsing code so that modules - with a blank assembly name (through using TestDriven.Net) are ignored from the coverage. -
  • -
  • - Bugfix for merge functionality for NCover.Console when wildcards were used with relative paths. -
  • -
  • - Bugfix for naming of xml/html arguments for NCover.Console with relative file paths. -
  • -
  • - Bugfix for drag/drop broken while making the memory usage optimisations during the 1.3.5 beta release. -
  • -
  • - Print button was enabled when no source code displayed resulting in exception. -
  • -
-
- -

v1.3.4 - Jul 10th 2006

-

Bundled with TestDriven.Net from build 2.0.1702.

-

The following new features were introduced:

-
    -
  • - Added toolbar buttons which support moving to the next and previous unvisited code - within a class or namespace. Shortcut keys of N and P for next/previous unvisited line in the - current class (or mouse forward/back buttons). Use Ctrl+N and Ctrl+P to navigate to the - next/previous partially or unvisited class within the namespace (or Ctrl+forward/back mouse buttons). -
  • -
  • - NCoverExplorer.Console.exe now supports saving the merged results of the coverage xml file(s) with - a /s[ave] option. The NCoverExplorer NAnt and MSBuild tasks have also been enhanced to support this - with an optional "mergeFileName" attribute. -
  • -
  • - NCoverExplorer.Console.exe now supports wildcards for coverage xml filename(s). -
  • -
  • - NCoverExplorer.Console.exe now supports module level coverage thresholds, rather than just a project - coverage threshold. This feature allows finer tolerance for both output on the reports and to fail - a build. Specifying the module thresholds is done either through a .config file (see ConsoleExample.config) - or through parameters in the NAnt/MSBuild tasks. -
  • -
  • - Added a new summary report showing class coverage per namespace per module. -
  • -
  • - Enhanced the NCoverExplorerSummary.xsl to display summaries of each module. -
  • -
  • - Clicking on a class with non-existent source code displays a dialog allowing the user to specify an alternate - folder. For use when the source code location indicated within the coverage.xml file(s) loaded differs from - that on the local machine now (e.g. a different drive letter or folder path). -
  • -
-

The following minor changes were made:

-
    -
  • - NCoverExplorer release is compiled against .Net 1.1 rather than .Net 1.0 due to a dependency on the - FolderBrowserDialog not available in .Net 1.0. -
  • -
  • - Coverage file stylesheet modified to show coverage column and NCoverExplorer version information with - numerous other cosmetic enhancements. -
  • -
  • - Enrich error environment information to include .Net framework version and operating system. -
  • -
  • - Classes without a namespace are now shown under a namespace node of "-" like in Reflector. -
  • -
-

The following bug fixes were made:

-
    -
  • - Warnings about mismatches when merging xml files are no longer issued. NCover seems to inconsistently - produce xml file coverage of methods which caused some users problems when merging. -
  • -
  • - Nested classes without a namespace specified would cause the coverage.xml file to fail to load. -
  • -
  • - Parsing overloaded properties (overloads of this[]) would not show the separate overloads in the tree - and have incorrect coverage stats. -
  • -
  • - Fix memory leaks for when source code tabs are closed. -
  • -
  • - Minimum coverage threshold for NCoverExplorer.Console would sometimes be incorrect due to rounding. -
  • -
  • - Changed NCoverExplorerSummary.xsl to format to 1dp rather than rounding to 0. -
  • -
  • - Sorting by filename for a method then clicking on class node threw exception. -
  • -
  • - VB.Net source code keywords not highlighted with the correct ICSharpCode template. -
  • -
-
- -

v1.3.3 - Apr 4th 2006

-

Bundled with TestDriven.Net from build 2.0.1578.

-

The following new features were introduced:

-
    -
  • - Added NCoverExplorer.Console.exe for utilising NCoverExplorer features with automated - coverage builds and NAnt tasks. By default will load up all the specified coverage file(s), apply - any coverage exclusion(s) specified in the NCoverExplorer configuration and display total - coverage statistics in the console output. If all items processed successfully returns an exit code of 0, - if an exception occurs returns an exit code of 2. -
  • -
  • - Added /m:xx (or /minCoverage:xx) argument to NCoverExplorer.Console.exe. When used in conjunction with - /f (or /failMinimum) an exit code of 3 is returned if the min coverage is not reached. Can act - as a trigger for failing an automated build such as with CruiseControl.Net. -
  • -
  • - Added module & namespace summary xml report generation to NCoverExplorer (both the GUI and Console versions). - In the GUI, this is available via the "View->Reports" menu. The three reports that are offered currently are: -
     - Module Summary (Coverage totals for the project and per module); -
     - Namespace Summary (Coverage totals for the project and per namespace); -
     - Module Namespace Summary (Coverage totals for the project, per module and per namespace); -
  • -
  • - Reports can be generated in xml or html format. Native html may be useful for directly attaching to e-mails. - If xml format is chosen a "CoverageReport.xsl" stylesheet is copied from the NCoverExplorer installation - folder to the report directory and linked to the xml file similar to coverage.xml/coverage.xsl by NCover. -
  • -
  • - Reports can contain an "excluded nodes" footer section. This lists at the topmost level all of the items - excluded from coverage at the time the report was run. -
  • -
  • - Added "View->Filter" main menu and context menus, offering the ability to filter out nodes. Filtered - nodes are simply moved under a new "Filtered" tree node and do not alter the coverage statistics - (unlike excluded nodes which are effectively removed from the tree). Filters offered are either to - hide all 100% covered nodes, or hide all unvisited (0%) nodes. -
  • -
  • - Added "Include in Results" context menu option for when clicking on either the "Excluded" bin or one - of it's immediate child nodes. Offers a way to "undo" an exclusion without reloading the file. -
  • -
  • - Added "View->Summary Statistics" menu option (shortcut F3) to show dialog of totals of files, classes, members, - NCLOC (non-commented lines of code) and sequence points. Statistics do not include excluded nodes - (but will include filtered nodes). -
  • -
  • - Created NAnt and MSBuild tasks for execution of NCoverExplorer.Console as an alternative to the <exec> task. - These tasks offer a more developer friendly alternative such as <fileset> for coverage files and creating a - .config file on the fly based on specified parameters such as <exclusions> within the .build/.proj file. -
  • -
  • - Replaced menus with a lightly tweaked variant of Lutz Roeder's excellent CommandBar code to give a more modern - look and assign icons on the menus. -
  • -
  • - Added a toolbar. If not wanted the toolbar can be hidden using the "View->Show Toolbar" menu option. -
  • -
-

The following minor changes were made:

-
    -
  • - Options dialog shortcut changed to F2. -
  • -
  • - Excluding a node will now select the node after by default rather than the one previous. -
  • -
-

The following bug fixes were made:

-
    -
  • - Fix bug where delete key shortcut was active on the root coverage file node, causing an exception to be thrown. -
  • -
  • - Path was being truncated from the module name when saved. -
  • -
  • - Fix bug where changing theme without coverage file loaded caused error. -
  • -
-
- -

v1.3.2 - Mar 14th 2006

-

Bundled with TestDriven.Net from build 2.0.1545.

-

The following new features were introduced:

-
    -
  • - Added support for merging multiple coverage files. This can be triggered through a variety of ways: -
     - Selecting multiple test classes/fixtures/projects in TestDriven.Net; -
     - Passing multiple files in the command line arguments; -
     - Selecting multiple files in the Open dialog; -
     - Using a new "File->Merge..." menu option; -
     - Drag/dropping onto the NCoverExplorer application. -
  • -
  • - Added tabs for each source code file you open to explore coverage on. If you click on a partial class - then tabs will be opened for each of the source code files making up the class. -
  • -
  • - Added the ability to exclude assemblies, namespaces or classes from the coverage results by a wildcard capable - case-sensitive match on the name. By default NCoverExplorer includes two exclusions: -
     - Exclude all assemblies with the name ending in ".Tests". -
     - Exclude all namespaces with the name containing ".My" (for VB.Net exclusions). -
  • -
  • - Added support for the NCover 1.5.4 "excluded" attribute which can be found in the coverage.xml files when - the appropriate NCover command-line attributes are used. Note that TestDriven.Net still does not as yet - support this attribute so you need to use the NCover.Console command line for this feature - for more information see - here. NCoverExplorer - will not include nodes marked as 'excluded' by NCover in it's totals but will still display them in the tree. -
  • -
  • - Added an "Excluded" child bin node containing all nodes that have been excluded by the options dialog, by NCover - attributes or by the "Exclude From Results" context menu option (see next point). -
  • -
  • - Replaced the "Remove from Results" context menu feature with "Exclude from Results" (shortcut of the DEL key). - Achieves a similar result of removing nodes from coverage calculations, however the nodes are "moved" to the - Excluded bin rather than being deleted from the tree. -
  • -
  • - Added a custom "theme" capability along with further colour and font customisation options for the coverage tree, - statistics and source code panes. A number of predefined "themes" are supplied and users can add their own. - Users can switch between themes either in the Options dialog or via the "View->Themes" menu. -
  • -
  • - Added a new "View->Coverage" menu which has sub-options related to "Sequence Point Coverage" and - "Function Coverage", assigned shortcut keys ctrl+(1-4): -
     - Choosing one of the "Sequence Point" variants will display the tree nodes with differing naming - combinations of coverage percentage and # unvisited sequence points. -
     - Choosing "Function Coverage" will alter the coverage tree display so that only methods/classes that were - invoked are highlighted. Method nodes show the number of visits to that method. Class, namespace and module nodes - show the maximum visit count by any of their children. -
  • -
  • - Added a "View->Sort By" menu option and context menu on the tree, with sub-options for "Name" (default), - "Class name/line number", "Coverage %" (ascending/descending), "Uncovered Sequence Points" (ascending/descending) - and "Visit Counts" (ascending/descending). - Assigned shortcut keys of ctrl+shift+(1-8). Note that reloading the coverage file will remove the current sort - and default back to by "Name". -
  • -
  • - Added "Save" and "Save As" options to the File menu. These give you the option of overwriting/creating a - new coverage.xml file with the current values loaded in NCoverExplorer. Any coverage exclusions/removed - nodes will not appear in the saved coverage file. Note that the methods are written in the same order as - the sort order specified above. -
  • -
  • - Added an "Explore Coverage Folder" menu option to the file menu. -
  • -
  • - Added an "Expand All" context menu option on the tree (shortcut ctrl+L). -
  • -
  • - Enhanced the statistics pane. When a class node is selected you will now see additional columns of - coverage %, unvisited sequence points and sequence points. When clicking on a method node you will - now see the filename. -
  • -
  • - Implemented "smart expansion" in the tree. If when you expand a node there is only one child node - then that node will also be expanded and so on. Increases speed of tree navigation particularly - if using a style of "Nested" namespaces with deep hierarchies. -
  • -
  • - Display class file name in tab page header bar when a method node is clicked on. Tooltip shows the path. -
  • -
-

The following minor changes were made:

-
    -
  • - Optimised when reloads of the coverage file so it is now only required if you change a coverage exclusion - or the tree grouping/nesting styles in the options dialog. Makes for a snappier UI. -
  • -
  • - Added a "Close" menu option to remove any loaded coverage file(s) from display. -
  • -
  • - Moved all the "Recent Files" into a submenu to tidy up the File menu. -
  • -
  • - Pressing Tab/shift-tab while focus is in the TextEditor pane of source code will now - move focus out of the TextEditor. -
  • -
  • - If a source code file contains multiple classes (not nested), then only the highlighting relevant - to that particular class will be displayed in the editor window as each class tree node is clicked. -
  • -
  • - Excluding the My namespace is now done through the Exclusions feature. -
  • -
  • - Options dialog can be displayed using the F4 shortcut key. -
  • -
  • - Removed last remnants of "non VS.Net standard colors" from the C# ICSharpCode TextEditor template. -
  • -
  • - Make the GUI naming consistent to correctly reference "sequence points" rather than "lines" and "unvisited" - rather than "uncovered". -
  • -
  • - Removed "Edit in VS.Net" from the View menu. -
  • -
  • - Changed NCoverExplorer main form icon to one that includes 32x32 sizes so Alt-Tab switching looks - better than upscaled 16x16 icon. -
  • -
  • - User is now prompted to remove a non-existent coverage file from the "Recent" files list rather than - automatically being removed. -
  • -
-

The following bug fixes were made:

-
    -
  • - Serializing the configuration settings was not flushing the stream - resulting sometimes in a blank settings file - preventing people from loading NCoverExplorer. Will now revert to default settings if an error occurs. -
  • -
  • - Displaying a source code file that has been modified to have less lines of code than at the time of the coverage run - will now display a user friendly message box. -
  • -
  • - Compensation made for NCover not reporting column information when profiling C++ code. NCoverExplorer will now - highlight the entire line rather than throwing an error. -
  • -
  • - In some circumstances properties were not highlighted consistently due to a bug in the property node expansion. -
  • -
  • - Coverage greater than 99.5% will no longer be rounded up to 100% in the display. It is instead shown as ">99.5%". -
  • -
  • - Extremely high visit counts will no longer overflow the visit count. -
  • -
  • - Statistics pane for a class will now always consistently show the property nodes grouped, rather than only - after the class node has been expanded in the tree. -
  • -
  • - Recent file menu would display incorrectly for files numbered from 10 onwards truncating first character. -
  • -
  • - Release notes & FAQ were always directed to website rather than local versions when NCoverExplorer was started - from TestDriven.Net. -
  • -
-
- -

v1.3.1 - Feb 15th 2006

-

Bundled with TestDriven.Net from build 2.0.1435.

-

The following new features were introduced:

-
    -
  • - Namespaces are now "flattened" by default in the tree. This looks like the ClassView - browser in VS.Net 2005 (or Lutz Roeder's Reflector). You can retain the nested look by changing it in the View->Options dialog. -
  • -
  • - If you use the original "nested" namespace style (like the VS.Net 2003 class browser), then inner namespaces will now be - listed at the top of each branch with the classes listed underneath which is less confusing to navigate. -
  • -
  • - Option to exclude the "My" namespace for VB.Net projects (for use with with BCL 2.0 & NCover 1.5.x). -
  • -
  • - Right-click menu option on coverage tree (shortcut ctrl+R) to "Remove From Results" that selected node - and all it's children. Will force the coverage values to be recalculated. Intended for use where - you have undesired assemblies, namespaces, classes or methods included in the report that are skewing your - coverage results and you want them removed. -
  • -
  • - Option to specify a satisfactory coverage threshold as a number of lines instead/as well as a percentage. - If either of the conditions are met the node is coloured differently (provided the coverage is not zero). -
  • -
  • - Colours can now be customised for both the source code highlighting and the nodes in the tree. -
  • -
  • - Collapse all nodes context menu option on the coverage tree control (shortcut ctrl-A). Equivalent to reloading - the coverage file (but would preserve any changes you have made such as removing nodes). -
  • -
  • - By default the NCoverExplorer now attempts to restore your currently selected node/caret position after - reloading a coverage.xml file (either F5 or by execution of another "Test With Coverage" command in TestDriven.Net). - You can turn off this behaviour in the View->Options dialog. -
  • -
  • - Statistics pane is now sortable by method name (default), visit count and line number. -
  • -
  • - Statistics pane now summarises all the methods and their visit counts when a class node is clicked. - Can be used as a basic form of method invocation counting for a fairly rudimentary level of profiling. - The colouring used is the same as that of the tree to visually assist in identifying methods invoked. -
  • -
-

The following minor changes were made:

-
    -
  • - Restructured the Options dialog to have a tabbed interface. -
  • -
  • - Renamed the "Show Visit Pane" menu option to "Show Statistics". -
  • -
  • - The statistics pane now includes the method name. Widths of the columns are remembered each time you close NCoverExplorer. -
  • -
  • - Statistics pane now has icons and colouring to match those of the associated nodes in the coverage tree. -
  • -
  • - Inner nested classes now nested internally in the tree under the parent class, sorted to the top. -
  • -
  • - Added FAQ, Release Notes and Blog website to the Help menu. -
  • -
-

The following bug fixes were made:

-
    -
  • - Source code files now loading with "Encoding.Default" rather than previous default of UTF-8. -
  • -
  • - Coverage highlighting not working correctly on multiple line statements. -
  • -
  • - Now handles partial classes and yield statements correctly. -
  • -
-
- -

v1.3 - Feb 6th 2006

-

Bundled with TestDriven.Net from build 2.0.1373d.

-

The following new features were introduced:

-
    -
  • - Launching from VS.Net using TestDriven.Net will now re-use the NCoverExplorer instance - opened from a previous "Test with... Coverage" click. Each VS.Net instance has it's own - instance of NCoverExplorer. -
  • -
  • - Added "Edit in VS.Net" functionality (keyboard shortcut ctrl+ E) for classes and methods. - Will navigate to source code in your IDE at same point where your cursor resides in NCoverExplorer. - Replaces and enhances previous "Open File" right-click option which has been removed. -
  • -
  • - Added "Expand Covered" functionality (keyboard shortcut ctrl + Q) - recurses through the child - nodes of the current node and expands all those with partial or complete coverage. Useful when - using in conjunction with TestDriven.Net for isolated unit testing. -
  • -
  • - Added "coverage file" node at the top of the tree showing total coverage across all modules/namespaces. -
  • -
  • - Group by module option (default) to assist with navigating coverage for large solutions. -
  • -
  • - Configuration information for NCoverExplorer now written to Local Settings rather than registry. -
  • -
  • - Increase default number of "recent files" to 10, with ability to alter in the Options dialog. -
  • -
  • - Reload of the current coverage file now has a shortcut key of F5. -
  • -
  • - Display the path to the currently loaded coverage file in the title bar. -
  • -
-

The following minor changes were made:

-
    -
  • - Performance enhancements to improve loading times further for large files. -
  • -
  • - Static constructors now renamed from "cctor" to ".cctor" so as to be sorted at the top. -
  • -
  • - Running NCoverExplorer for first time ever will use a better starting form position. -
  • -
  • - Removed configuration option for "nesting properties" - default remains the same of "true". -
  • -
  • - Source code refactoring into separate assemblies to facilitate unit testing. -
  • -
-
- -

v1.2 - Feb 1st 2006

-

First public release, bundled with TestDriven.Net from build 2.0.1341d.

-

The following new features were introduced:

-
    -
  • - Block style highlighting option for both visited and unvisited code. -
  • -
  • - Satisfactory coverage threshold. -
  • -
  • - Nesting of properties as nodes are expanded. -
  • -
  • - Further speed improvements for initial file parsing. -
  • -
-
- -

v1.1 - Jan 1st 2006

-

Speed improvements.

-
- -

v1.0 - Dec 17th 2005

-

First version created.

- - diff --git a/lib/NCover/MSVCP80.dll b/lib/NCover/MSVCP80.dll deleted file mode 100644 index f0b52ebf..00000000 Binary files a/lib/NCover/MSVCP80.dll and /dev/null differ diff --git a/lib/NCover/MSVCR80.dll b/lib/NCover/MSVCR80.dll deleted file mode 100644 index 53c005ef..00000000 Binary files a/lib/NCover/MSVCR80.dll and /dev/null differ diff --git a/lib/NCover/Microsoft.VC80.CRT.manifest b/lib/NCover/Microsoft.VC80.CRT.manifest deleted file mode 100644 index 6a8a0e23..00000000 --- a/lib/NCover/Microsoft.VC80.CRT.manifest +++ /dev/null @@ -1,8 +0,0 @@ - - - - - n9On8FItNsK/DmT8UQxu6jYDtWQ= - 0KJ/VTwP4OUHx98HlIW2AdW1kuY= - YJuB+9Os2oxW4mY+2oC/r8lICZE= - \ No newline at end of file diff --git a/lib/NCover/NCover.Console.exe b/lib/NCover/NCover.Console.exe deleted file mode 100644 index 80330112..00000000 Binary files a/lib/NCover/NCover.Console.exe and /dev/null differ diff --git a/lib/NCover/NCover.Console.exe.config b/lib/NCover/NCover.Console.exe.config deleted file mode 100644 index eb0a31af..00000000 --- a/lib/NCover/NCover.Console.exe.config +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/lib/NCover/NCover.Framework.dll b/lib/NCover/NCover.Framework.dll deleted file mode 100644 index a9539e68..00000000 Binary files a/lib/NCover/NCover.Framework.dll and /dev/null differ diff --git a/lib/NCover/NCoverExplorer.MSBuildTasks.dll b/lib/NCover/NCoverExplorer.MSBuildTasks.dll deleted file mode 100644 index fa6e2bd4..00000000 Binary files a/lib/NCover/NCoverExplorer.MSBuildTasks.dll and /dev/null differ diff --git a/lib/NCover/NCoverExplorer.MSBuildTasks.xml b/lib/NCover/NCoverExplorer.MSBuildTasks.xml deleted file mode 100644 index dfa8c4fe..00000000 --- a/lib/NCover/NCoverExplorer.MSBuildTasks.xml +++ /dev/null @@ -1,1092 +0,0 @@ - - - - NCoverExplorer.MSBuildTasks - - - - - Logging levels to use within NCover task. - - - - No logging. - - - Writes standard log output (Default). - - - Writes verbose log output. - - - - New element option introduced in NCover 1.5.7 for use with //x2 argument. - - - - - Legacy xml format that is the default. - - - - - New xml format introduced in NCover 1.5.7 that nests method nodes with class nodes. - - - - - Sort order for displaying the coverage results in the tree. - - - - Sort by name (default). (0) - - - Sort by name( down to class level) then by line within the class. (1) - - - Sort by coverage percentage ascending. (2) - - - Sort by coverage percentage descending. (3) - - - Sort by unvisited lines ascending. (4) - - - Sort by unvisited lines descending. (5) - - - Sort by visit count ascending. (6) - - - Sort by visit count descending. (7) - - - Sort by function coverage ascending. (8) - - - Sort by function coverage descending. (9) - - - - Filter styles that can be applied to the results. Filtered nodes are not excluded from the coverage - statistics. - - - - No filter applied. (0) - - - Hide unvisited nodes. (1) - - - Hide 100% fully covered nodes. (2) - - - Hide nodes exceeding coverage threshold. (3) - - - - Potential report types. - - - - None. (0) - - - Modules summary only. (1) - - - Modules summary followed with a namespaces by module summary. (3) - - - Modules summary followed with a classes by namespace summary. (4) - - - Modules summary followed with a classes by namespace summary showing function coverage. (5) - - - - Common utility functions for working with NCover. - - - - - Registry key for registering NCover manually - this will all become unnecessary in future versions of NCover (post 1.5.5) hopefully. - - - - - Builds the temp settings XML file for NCover. - - The version. - The ncover path. - The settings file. - The command line exe. - The command line args. - The working directory. - The assembly list. - The assembly files. - The coverage file. - The log level. - The log file. - The exclude attributes. - If set to true profile IIS. - The profile service. - The XML format to write out (new feature in 1.5.7). - Name of the profiled process. - - Command line switch necessary for passing as an argument. - - - - - Creates the command line arguments. - - The version. - The ncover path. - The command line exe. - The command line args. - The working directory. - The assembly list. - The coverage file. - The log level. - The log file. - The exclude attributes. - if set to true [profile IIS]. - The profile service. - if set to true include formatting. - Whether to register CoverLib.dll. - The command line format token. - - - - - Registers the NCover coverlib.dll by writing directly into the registry under HKCU. - Keeps a reference count so only register if only NCover task currently running. - - - - - Unregisters the NCover coverlib.dll - Keeps a reference count so only unregister if last NCover task currently running. - - - - - Find path to NCover console and retrieve the version info. - - - - - Reads the file contents and returns as a string. - - - - - Build the Xml .ncoversettings file to pass to the NCover.Console executable using NCover 1.3.3 syntax. - - - - - Write assembly names as a semi-colon delimited unique assembly name list. - Assembly names do not have extensions (how NCover requires them) to match how the - CLR identifies them when being profiled. - - - - - Build the Xml .ncoversettings file to pass to the NCover.Console executable using NCover 1.5 syntax. - - - - - Writes assembly names as separate Assembly nodes in the settings file. Seems to be a - difference in how NCover 1.5.4 onwards handles from previous versions in the xml. - - - - - Build a command line using NCover 1.3.3 syntax. - - - - - Build a command line using NCover 1.5.x syntax. - - - - - Creates the necessary HKCU entries for the NCover coverlib.dll. - - The ncover path. - - - - Handles a control-C style event so we can cleanup our refcount. - - Type of control exit. - Whether to cancel the event. - - - - Utility class to scan for an executable in all available paths. - Based on CodeProject article at: http://www.codeproject.com/csharp/winwhich.asp - - - - - Initializes a new instance of the class. - - - - - Return the version information for the executable located at this path. If executable - not found at this location (e.g. not a fully qualified path) does a path search to see - if it can be found anywhere else. - - Path to executable to find. - Whether to throw exception if not found. - Version number in format Major.Minor.Build - - - - Searches for the specified executable name in all available paths. - - Name of the executable. - - - - - Form the regular expression string for the matching file. - - The name of the executable - string that is the regex pattern. - - - - MSBuild task for automating NCoverExplorer.Console. - Using this task you can merge coverage files from NCover, produce xml coverage reports for use - with CruiseControl.Net, produce html report files directly, fail automated builds if coverage - thresholds are not met and apply a range of detail to the reports produced such as sorting, - filtering and coverage exclusions. - - - This example shows producing an xml coverage report at Module/Namespace/Class detail level for - inclusion on a CC.Net build server. You would add a merge file task in the publishers section - of your CC.Net project file to merge in this "CoverageSummary.xml" file so that it can be - transformed by the NCoverExplorer xsl stylesheets you have copied into the CC.Net folder. Here - we have set a satisfactory coverage threshold at 80%. - - - - - - - ]]> - - - - This example shows producing an html function coverage report, excluding the test assemblies. The - assemblies excluded are being displayed at the bottom of the report. Note also that this time - the ReportType is specified by its enum name rather than numeric value - they are interchangable. - We have also "inlined" the "CoverageFiles" from the ItemGroup above to show this can be done. - - - - - Assembly - *.Tests - - - - - - ]]> - - - - This example shows producing an html module class summary coverage report with exclusions as above. - This time we have added applying specific sorting and filtering criteria. This report will show all - classes that do not have 100% coverage, sorted within their namespaces by descending coverage %. We - have also "inlined" the exclusions - - - ]]> - - - - This example shows the merging capability to produce a consolidated merge file from multiple - coverage test runs. The results are being stored in a single "MyApp.CoverageMerged.xml" file. - Note that you could additionally apply coverage exclusions at this point. Merging files can - be useful if your testing process requires multiple coverage runs and you want a single archive - which consolidates the results. - - - - - - - ]]> - - - - This example shows failing a build if the overall coverage % does not meet our threshold, without - producing a coverage report. - - - ]]> - - - - This example shows failing a build if either the overall coverage % does not meet our threshold, or - if one of the individual module thresholds is not met. Note that the ModuleThresholds - could have been "inlined" (just showing the MSBuild flexibility to place in a separate group). - - - - - - - - ]]> - - - - This example shows using virtually the whole range of attributes. Shown below is failing a build - if not reaching the overall or module level coverage thresholds. The results of merging multiple - NCover files together are stored as a separate file. We are producing xml and html Namespace per - module summary reports (with the exclusions show in the footer). Note that the module thresholds - will also be used in the reports. The reports are sorted by name with no filter applied. - We are excluding test assemblies and anything in a presentation layer namespace. - - - - - - - - - Class - MyApp.SomeNamespace.SomeClass - - - Namespace - MyApp\.(\w*\.)? - true - - - - - - ]]> - - - - - - Initializes a new instance of the class. - - - - - Validate the parameters supplied to this task. - - true if parameters are valid, false otherwise. - - - - Executes the task. - - if the task ran successfully; otherwise . - - - - Returns a string value containing the command line arguments to pass directly to the executable file. - - - A string value containing the command line arguments to pass directly to the executable file. - - - - - Logs the starting point of the run to all registered loggers. - - A descriptive message to provide loggers, usually the command line and switches. - - - - Returns the fully qualified path to the executable file. - - - The fully qualified path to the executable file. - - - - - Determine the path to NCoverExplorer. Either the user can specify it in the arguments to the task, - or we look in the registry, program files and finally just assume it is in the path. - - - - - Return a temporary filename for the config file for executing NCoverExplorer.Console. - - Configuration filename. - - - - Legacy NCoverExplorer.Console is considered prior to 1.4.0 (as 1.4.0 was when the settings - file format was changed). - - NCoverExplorer.Console.exe path. - true if version is prior to 1.4.0 - - - - Builds a temporary NCoverExplorer configuration file which we can pass in the command line. - We require this as the command line itself does not directly support all the argument combinations. - - Name of the settings file. - - - - Builds a temporary NCoverExplorer configuration file which we can pass in the command line. - We require this as the command line itself does not directly support all the argument combinations. - - Name of the settings file. - - - - The coverage exclusions have been inlined as type=pattern semi-colon delimited pairs. - Break apart and write to the temp config file. - - Current xml output stream. - - - - The coverage exclusions have been inlined as type=pattern semi-colon delimited pairs. - Break apart and write to the temp config file. - - Current xml output stream. - - - - Iterate through the module thresholds and write their values into the configuration file. - - Current xml output stream. - - - - Build command line for passing to legacy NCoverExplorer.Console versions. - - - - - Removes generated settings file after process has run. - - - - - Gets or sets the output directory for the reports. - - The output dir. - - - - Whether to fail the task if the minimumCoverage threshold is not reached on any module. - NCoverExplorer console application will return exit code 3. - - - - - Whether to fail the task if the minimumCoverage threshold is not reached on total coverage. - NCoverExplorer console application will return exit code 3. - - - - - The minimum coverage percentage to be used with the FailMinimum and FailCombinedMinimum options. - - - - - Gets or sets the name of the temporary XML config file being generated for coverage. - - The name of the XML config. - - - - The satisfactory coverage percentage for display in the reports. - - - - - The .config filename for containing any custom exclusions and parameters. - - - - - The type of report to produce (use numeric value or string name). - 0 / None, 1 / ModuleSummary, 3 / ModuleNamespaceSummary, - 4 / ModuleClassSummary, 5 / ModuleClassFunctionSummary - - - - - The sorting if any to apply (use numeric value or string name). - 0 / Name, 1 / ClassLine, - 2 / CoveragePercentageAscending, 3 / CoveragePercentageDescending, - 4 / UnvisitedSequencePointsAscending, 5 / UnvisitedSequencePointsDescending, - 6 / VisitCountAscending, 7 / VisitCountDescending, - 8 / FunctionCoverageAscending, 9 / FunctionCoverageDescending - - - - - The filtering if any to apply (use numeric value or string name). - 0 / None, 1 / HideUnvisited, 2 / HideFullyCovered, 3 / HideThresholdCovered - - The string or textual enum value. - - - - The filename for generating an xml report. - - - - - The filename for generating an html report. - - - - - The filename for the merge of the coverage xml files. - - - - - Determines whether to include the coverage exclusions in the report. The default is - . - - - - - Used to select the coverage xml files to merge into the report. - - - - - Coverage exclusions to apply, in one of two formats: - They can be semi-colon delimited "Type=Pattern" pairs, e.g. "Assembly=*.Tests;Class=My.*". - Alternatively they can be defined in a property group as a <CoverageExclusions> section. - See the examples for both formats. If you want to use regular expressions then you must - use the <PropertyGroup> approach. - - - This example shows a range of coverage exclusions using the <PropertyGroup> approach. - Note the optional use of wildcard characters in the pattern. You could set the exclusions - up within the gui and then paste the xml directly from the NCoverExplorer.config file located - in C:\Documents and Settings\user\Application Data\Gnoso\NCoverExplorer\ - - - - - Assembly - *.Tests - - - Namespace - MyNamespace.* - - - Class - MyNamespace.MyClass - - - Method - MyNamespace.MyClass.MyMethod - - - Namespace - MyApp\.(\w*\.)? - true - - - - - - ]]> - - - - This example shows inlining of three of the same exclusions above. Note with this approach - it is not possible to use regular expressions. - - - ]]> - - - - - - Module thresholds to apply, in format "AssemblyName=Percentage", e.g. "MyApp.Core=75" - - - - - Gets the name of the executable file to run. - - - The name of the executable file to run. - - - - Gets the with which to log errors. - - - The with which to log errors. - - - - MSBuild task for automating NCover.Console.exe, with NCover 1.5.x support. Note that this task - will self register CoverLib.dll by default using the registry (does not require local admin). - - - This example shows the standard profiling using NCover for standard nunit tests with minimal arguments. - Defaults are with logging to coverage.log, profiling all assemblies, output filename of coverage.xml and this - example specifies a path to where to find ncover.console.exe. - - - ]]> - - - - If you are using TypeMock, you may experience issues with the registration of coverlib.dll conflicting - due to overwriting the registered profiler. You should add the "registerProfiler" attribute below and set it to false. - - - ]]> - - - - This example for NCover 1.5.8 shows profiling a process which is launched by another process. - - - ]]> - - - - This example shows using an assembly list as ; delimited names rather than using the ability - of the NCover task to dynamically build from a list of files (shown in following example). - - - ]]> - - - - This example shows the standard profiling using NCover 1.5.x for a Windows application, specifying a coverage - exclusion, verbose logging to a named file, specifically named log and output xml files. It also shows - coverage exclusion attributes, overriding the NCover location to run from and a way of listing assemblies - to be included in the profiled NCover results. - - - - - - - ]]> - - - - - - Initializes a new instance of the class. - - - - - Executes the task. - - if the task ran successfully; otherwise . - - - - Returns a string value containing the command line arguments to pass directly to the executable file. - - - A string value containing the command line arguments to pass directly to the executable file. - - - - - Returns the fully qualified path to the executable file. - - - The fully qualified path to the executable file. - - - - - Logs the starting point of the run to all registered loggers. - - A descriptive message to provide loggers, usually the command line and switches. - - - - Check that we have a valid path to NCover. - - - - - Removes generated settings file after process has run. - - - - - Convert the MSBuild specific ITaskItem[] to a string array for use by NCoverUtilities. - - - - - - - The command line executable to be launched by NCover (such as nunit-console.exe). - - - - - The arguments to pass to the command line executable to be launched by NCover (such as nunit-console.exe). - - - - - The filename for the output coverage.xml file (default). - - - - - What level of NCover logging to provide. Values are "Normal" (default) and "Verbose". - Due to a bug in NCover 1.5.4 "Quiet" will result in NCover stopping abnormally - hence has been - defaulted to be "Normal" until the bug is fixed. - - - - - Gets or sets the logfile name to write to if logLevel is set to anything other than "Quiet". The default - is "coverage.log". - - - - - Gets or sets the working directory for the command line executable. - - - - - If coverage exclusion attributes have been applied (NCover 1.5.4 onwards) specify the full namespace - to the attribute including the "Attribute" suffix - e.g. "CoverageExcludeAttribute" if defined in no - namespace. Separate multiple attributes with semi-colons. - - - - - Determines whether to profile under IIS. Default value is . - - - - - The service name if profiling a windows service. - - - - - Alternative to specifying assembly names - you can instead list them as you would on the - command line as a semi-colon delimited list without any suffixes or paths. - - - - - Used to specify the assemblies to be profiled. Alternative to the AssemblyList property, - where instead you wat the list to be dynamically built using an itemgroup, for instance - to match all assemblies against a wildcard. The NCover task will take care of stripping - off the suffixes etc. - - - - - Determines whether to register NCover CoverLib.dll on each run. The default is true. You - would set this to false if using TypeMock due to a conflict in registered profilers. - If set to true, the NCover task uses a reference counting approach to minimise the chance - of issues when simultaneous builds. - - - - - Gets or sets a value indicating the xml output format to write (new in NCover 1.5.7). - Default value is "Xml1", alternat option is "Xml2" which nests method nodes within class - nodes. Note however that "Xml2" is for future use and is not yet supported by NCoverExplorer - as of version 1.3.6. - - - - - Gets or sets the profiled process module name. Use this argument when the executable being - launched is not the actual process you want to profile coverage for. - - - - - Gets the name of the executable file to run. - - - The name of the executable file to run. - - - - Gets the with which to log errors. - - - The with which to log errors. - - - - Create a .nunit project file for all the test assemblies matching the specified pattern. - This should be created in the bin folder where your test assemblies are located so that - the assemblies are within the AppDomain path. - The .nunit file can then be used by NUnit or NCover based tasks. - - - - Create a .nunit project file in output bin folder for a specified test assembly. - - - - - $(MSBuildProjectDirectory)\Build - - - - - - - - ]]> - - - - - Create a .nunit project file in output bin folder with an associated App.Config file for - all test assemblies matching a pattern. - - - - - - - - ]]> - - - - - - Default constructor. - - - - - Build the contents of the .nunit file using the test assemblies matching this pattern. - - - - - Create a .nunit project file listing the test assemblies. - - Full filename of the .nunit file. - Fileset containing the test assemblies. - Optional path to App.Config file to include in project. - Optional path to the nunit app base, when included full paths to each assembly (relative to the appbase) are included - - - - The nunit project file to create. - - - - - Optional path to an App.Config file to be specified in the .nunit project file. - - - - - Optional path to the nunit app base, when included full paths to each assembly - (relative to the appbase) are included. - - - - - Used to select the test assemblies to be included in the .nunit project. - - - - - A strongly-typed resource class, for looking up localized strings, etc. - - - - - Returns the cached ResourceManager instance used by this class. - - - - - Overrides the current thread's CurrentUICulture property for all - resource lookups using this strongly typed resource class. - - - - - Looks up a localized string similar to Contents of config file:\r\n{0}. - - - - - Looks up a localized string similar to Contents of config file:\r\n{0}. - - - - - Looks up a localized string similar to Deleting config file: {0}. - - - - - Looks up a localized string similar to This line cannot be parsed: '{0}'. Coverage exclusions should be in format: Type=Pattern (e.g. 'Assembly=*.Tests'). - - - - - Looks up a localized string similar to Could not find the registry key for NCoverExplorer indicating the program location (set by installing with TestDriven.Net). Please specify the full path to NCoverExplorer.Console.exe using the ToolPath attribute.. - - - - - Looks up a localized string similar to Could not find NCover.Console.exe in C:\Program Files\NCover\. Specify an alternate path using the ToolPath attribute on your NCover target.. - - - - - Looks up a localized string similar to Detected NCover.Console v{0} in {1}. - - - - diff --git a/lib/NCover/NCoverFAQ.html b/lib/NCover/NCoverFAQ.html deleted file mode 100644 index f63b8f13..00000000 --- a/lib/NCover/NCoverFAQ.html +++ /dev/null @@ -1,429 +0,0 @@ - - - - - - - - - - -

NCover FAQ

-

If you have questions that this document does not address, contact - Peter Waldschmidt or try the NCover Forums.

-

1. What is code coverage analysis?

-

A code coverage analyzer monitors your code at runtime and - records information about which lines of code were executed. NCover shows each - sequence point in your application along with the number of times that point - was executed. Sequence points are generated by the compiler and stored in the - debug information (.pdb) files. A sequence point basically corresponds to a - single program statement (often a line of code) in your high-level language.

-

2. Why would I want to do code coverage analysis?

-

Unit test suites are often used as a quality tool during the - development process to keep the codebase stable as it changes and expands. - Tools such as NUnit are often used to run and - report on the test suites. However, when implementing unit testing in your - build process, you have no way of knowing how much of your code the unit tests - are actually testing. This is where code coverage comes in. You can run NUnit - within NCover and use the code coverage report to determine which code was not - tested by that particular test suite.

-

3. What versions of the CLR does NCover support?

-

- NCover 1.5.x requires the .NET framework version 2.0.50727 to be installed; however, - the application being profiled can be written against any shipping version of the - framework. NCover - has been tested profiling coverage of .NET 2.0, .NET 1.1 and .NET 1.0 applications.

-

4. Which version of NCover should I install?

-

- If you have the .NET 2.0 framework installed on your machine then you should use - the latest NCover version available. NCover as of version 1.5 can profile .NET 2.0, 1.1 and 1.0 applications.

-

- For development teams who do not have the .NET framework 2.0 installed but do have - the .NET framework version 1.1.4322, you can - try NCover 1.3.3. Note however that this version is no longer supported as - it has a number of known issues and limitations.

-

5. What is the command line syntax for NCover?

-

Here is the usage info from the NCover command line (for NCover versions from 1.5.6 - only):

-
NCover.Console [<command line> [<command args>]]
-               [//svc <service name>]
-               [//iis]
-               [//a <assembly list>]
-               [//w <working directory>]
-               [//ea <exclusion list>]
-               [//reg]
-               [//x <xml output file>]
-               [//s [<settings file>]] [//r [<settings file>]]
-               [//v] [//q] 
-               [//l <log file>]
-
-//svc  For profiling windows services
-//iis  For profiling web applications
-
-//a    List of assemblies to profile separated by semi-colons i.e. "MyAssembly1;MyAssembly2". Do not include paths or suffixes.
-//w    Working directory for profiled application 
-//ea   List of attributes marking classes or methods to exclude from coverage 
-
-//reg  Register profiler temporarily for user. (helps with xcopy deployment) 
-//x    Specify coverage output file. (default: coverage.xml).
-//pm   Specify name of process to profile (i.e. myapp.exe)
-
-//s    Save settings to a file (defaults: NCover.Settings) 
-//r    Use settings file, overriding other settings (default: NCover.Settings) 
-
-//l    Specify profiler log file (default: coverage.log).
-//q    No logging (quiet) 
-//v    Enable verbose logging (show instrumented code)
-        
-
    -
  • <command line> - This argument specifies the command-line of the .NET application - you want to analyze. - Any command line arguments not starting with // will be passed - through to that application. NCover will profile the running application until it has exited. See below for examples.
  • //svc - This option is an alternative to the <command line> - for profiling windows services, which cannot be run directly as executables. NCover - will start the service (stopping it first if already running) and profile coverage - until the windows service is stopped.
  • -
  • //iis - This option is an alternative to the <command line> for profiling - web applications. NCover will start the IISAdmin and W3C - services (stopping first if currently running) and profile coverage until the IISAdmin - service is stopped.
    -
  • -
  • //a - This command-line argument specifies the assemblies that you want to analyze. - NCover can only analyze assemblies that have .pdb files included with them. If - you do not specify the //a argument, NCover will attempt to analyze every loaded - assembly that has debug information available. Note that the assembly name arguments are - the module name within the assembly, not the physical file name. e.g. "MyAssembly" - rather than "MyAssembly.dll".
  • //w - If the application being profiled requires the - working directory to be set to something other than the current directory you are - executing the command line from then you can override it with this argument.
  • -
  • //ea - You can choose to exclude classes and methods - from coverage statistics by defining .NET attribute(s) and applying it to the affected - code. When using this argument you must specify the full type namespace of these - attribute(s) separated by semi-colons. See below for an example.
    -
  • -
  • //reg - NCover requires a COM registration of the CoverLib.dll assembly containing - the profiler, which is performed automatically by the default .msi installation. - If you require an xcopy style deployment of NCover like many other .NET tools, then - you can use this argument which will temporarily register the profiler while performing - coverage. This feature was added in NCover 1.5.6.
  • -
  • //x - The output of NCover is an xml file (example below). Use this argument to - specify an alternate filename to "coverage.xml" in the current directory.
    -
  • -
  • //pm - This setting tells NCover to ignore processes that don't have the specified process module name. - This is the name of the executable (i.e. myapp.exe). This setting is useful in cases, where your NCover - command spawns a series of child processes. Using this setting will help NCover determine which process to profile. -
  • -
  • //s - You may find it more convenient to use a settings file rather than specifying - a long list of command line arguments for running NCover. If you get the NCover - command line working as you would like it and then use the //s argument it will - save the required arguments as an xml file that can then be used by the //r argument - below.
  • -
  • //r - For use when you have used //s to construct an NCover settings file containing - your command line arguments. e.g. "ncover.console.exe //r NCover.Settings"
    -
  • -
  • //l - The coverage log file can provide an insight if the desired coverage output - is not obtained. Useful information you may find to assist you includes which assemblies - were loaded by NCover, their file paths and which of those it found the .pdb build - symbols for. Use this argument to specify an alternative log file name or location - to coverage.log in the current directory.
  • -
  • //q - Suppresses writing the coverage.log file.
  • -
  • //v - This command-line argument makes the profiler emit all the original IL and - modified IL instructions to the coverage log. This is useful for debugging - purposes. Beware that this can make your coverage log file very large! -
  • -
-

6. Does NCover required a special compilation step for my code?

-

No. Some code coverage tools change your source code and force - you to recompile it into a special build.  NCover is designed to work - on shipping code.  NCover uses the .NET Framework profiling API to monitor - your code. It does require build symbols, but can be run on release code - without any modifications.

-

7. How does NCover work?

-

NCover uses the .NET Framework profiler API to monitor an - application's execution. When a method is loaded by the CLR, NCover retrieves - the IL and replaces it with instrumented IL code.  NCover does not change - your original IL code, it simply inserts new code to update a visit - counter at each sequence point.  Upon - request, (usually after the .NET process has shut down) the profiler outputs statistics - to the coverage file. -

-

- 8. What is the output of NCover?

-

NCover generally writes out three files after analysis - completes. -

    -
  • - Coverage.log - This file is a log of the events and messages from the profiler - during the analysis process. Most of the time, error messages are recorded in - this log. If you enable verbose logging, the coverage log will contain - disassembly of the original and instrumented IL code.  Verbose logging is not recommended for - normal use.
  • - Coverage.xml - This file is the analysis output of NCover. You can see an - example of the output below. -
  • - Coverage.xsl - This file is a simple XML transformation that makes the XML - output easily readable. -
  • -
- Example XML output -
<method class="NCoverTest.ClassLoaded" name="HasDeadCode">
-    <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs"
-            column="13" line="48" endcolumn="58" endline="48" visitcount="1" /> 
-    <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" 
-            column="13" line="49" endcolumn="22" endline="49" visitcount="1" /> 
-    <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" 
-            column="17" line="50" endcolumn="24" endline="50" visitcount="1" /> 
-    <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" 
-            column="13" line="51" endcolumn="48" endline="51" visitcount="0" /> 
-    <seqpnt document="C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs" 
-            column="9" line="52"  endcolumn="10" endline="52" visitcount="0" /> 
-</method>
-
-

- Example transformed output -
-
NCoverTest.ClassLoaded.HasDeadCode
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Visit CountLineColumnEnd LineEnd ColumnDocument
148134858C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs
149134922C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs
150175024C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs
051135148C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs
05295210C:\Dev\Utilities\ncover\NCoverTest\NCoverTest.cs
-
-

Suggested usages of the coverage.xml output are to display it in the - NCoverExplorer gui with the source - code highlighted, to generate html reports, or to include it in your continuous build server reports such as CruiseControl.Net. - For more information on these options see below in the FAQ.

-

-

- 9. How do I use coverage exclusions?

-

- First you should define an attribute to markup your excluded code with. You will - likely want to put this in a common assembly to make it reusable, or indeed within - a "CommonAssemblyInfo.cs" that you include in all your application assemblies.

-

-
namespace MyNamespace {
-    class CoverageExcludeAttribute : System.Attribute { }
-}
-

- Apply the attribute to the C# classes and/or methods you wish to mark as excluded - from code coverage statistics:

-

-
    [CoverageExclude]
-    private void SomeMethodToExclude() {}    
-

- Finally, ensure you pass the full qualified attribute information in the NCover command line:

-

-
    NCover.Console MyApplication.exe //ea MyNamespace.CoverageExcludeAttribute    
-

- Note that if you are using the TestDriven.Net - VS.Net add-in to "Test with Coverage" it will automatically - pass through "//ea CoverageExcludeAttribute" - which you should define without a namespace like above. For further information refer to this - - blog entry.

-

- 10. Examples

-

- Coverage while running a simple executable until it exits:

-

-
    NCover.Console MyApplication.exe
-

- Coverage while running all the unit tests in an assembly using NUnit, profiling - all loaded assemblies with .pdb build symbols:

-

-
    NCover.Console nunit-console.exe MyApplication.Tests.dll
-

- Coverage of only a subset of loaded assemblies while running unit tests:

-

-
    NCover.Console nunit-console.exe MyApplication.Tests.dll //a MyApplication.Core;MyApplication.Utilities
-

- Coverage of a windows service. Stop the service to generate the coverage output:

-

-
    NCover.Console //svc MyServiceName
-

- Coverage of an ASP.Net application. Stop the IIS service to generate the coverage - output:

-

-
    NCover.Console //iis
-

- 11. Where can I get help or support?

-

- Your best approach is to browse the - NCover forums as well as the - blog by the author Peter Waldschmidt. If you cannot find a similar issue - mentioned feel free to post your query and perhaps someone can help.

-

- 12. How do I "xcopy deploy" NCover like my other build tools?

-

- Many developers prefer to have their build tools such as NUnit, NAnt etc stored - in source control in a Tools folder along with the source code. This ensures that - a new developer can obtain and build the application without having to install additional - tools on their own machines.

-

- NCover can also be deployed in this fashion. However the one gotcha with NCover - versus other tools is that the profiler within CoverLib.dll must be COM registered - on the local machine before you execute it. Prior to NCover 1.5.6 this was usually - achieved as part of your build script, which would call regsvr32 with the path to - the CoverLib.dll in your Tools folder. Alternatively the <ncover> NAnt and - MSBuild tasks described below will do this for you. As of NCover 1.5.6 you can also - use the //reg option in the command line arguments which will temporarily register - the profiler. Note that the //reg option will not work for IIS or Windows Service - profiling unless you are running NCover under the same Windows login account as - the IIS worker process, or your Windows Service.

-

- 13. How do I see my source code highlighted with the coverage results?

-

- NCoverExplorer is a gui and console-based - .NET application developed by Grant Drake. NCoverExplorer - parses the coverage.xml files output from NCover and displays the results integrated - with your source code. It also includes a number of additional features to merge, - filter, sort and generate html reports. The console version is - designed to be used as part of an automated build process. The support forums for - NCoverExplorer are located with the NCover ones at http://ncover.org/. 

-

- 14. How do I run NCover from within the Visual Studio.Net IDE?

-

- The TestDriven.Net add-in by - Jamie Cansdale offers a right-click capability within the IDE to execute - your unit tests with code coverage. The results of the NCover code coverage are - displayed with the bundled NCoverExplorer gui for analysis and reporting.

-

- 15. How do I run NCover from a NAnt or MSBuild task?

-

- You can use an <exec> task with NAnt - or an <Exec> task with MSBuild. Alternatively you may want to use the custom - <ncover> task for NAnt or <NCover> task for MSBuild developed by Grant - Drake for a more developer friendly syntax. The source code, compiled assemblies - and documentation are located in the NCoverExplorer.Extras.zip available from http://ncoverexplorer.org/.

-

- 16. How do I include NCover output in my CruiseControl.Net build reports?

-

- CruiseControl.Net is a continuous integration - build server which offers web-based reporting of the outputs of a build such as - unit test results and code coverage reporting. The default CruiseControl.Net installation - includes a basic stylesheet which works in combination with the standard coverage.xml - formatted output. So all you need to do is include the execution of NCover as part - of your build, then add a CruiseControl.Net merge file publisher task to integrate - the coverage.xml results into the build output.

-

- An improvement on the above to display more attractive and powerful reports as well - as minimize the build log size is to use NCoverExplorer. The NCoverExplorer.Console.exe - is designed to produce a more concise xml report summary that is combined with an - alternate xsl stylesheet for CruiseControl.Net. You can find more information and - screenshots in this - blog entry - all the necessary tasks, examples and documentation are located - within NCoverExplorer.Extras.zip available from - http://ncoverexplorer.org/

-

- 17. How do I merge multiple NCover coverage.xml results?

-

- You can can use NCoverExplorer to merge the results of multiple coverage runs. For - more information refer to this - blog entry.

-

- 18. Troubleshooting: Why is my coverage.xml file empty?

-
    -
  • If using the command-line, did you COM register CoverLib.dll (or use the //reg option - from NCover 1.5.6)?
  • -
  • Did you generate build symbol files (.pdbs) for the profiled application?
  • -
  • If using the //a option, did you correctly list just the assembly names without - paths or .dll suffixes?
  • -
-

- 19. Troubleshooting: I have coverage.xml output but my XYZ assembly is not included in it?

-
    -
  • NCover will only profile loaded assemblies - did your code execution path while - under coverage force that assembly to be loaded (e.g. by loading a type or calling - a method in that assembly)? 
  • -
  • Did you generate build symbol files (.pdb files) for the missing assembly?
  • -
  • If using the //a option, did you correctly list the assembly names including the - one that is missing?
  • -
  • Can you see information about the assembly being loaded within the coverage.log? - Is the correct assembly being loaded (check the path) - if you have a version in - the GAC it may possibly prevent the .pdb file from being loaded.
  • If using the NCoverExplorer gui, have you got a coverage exclusion defined which - is hiding it from the display?
  • -
-

- 20. Troubleshooting: After running NCover my coverage.log says "Failed to load symbols for module XYZ"?

-
    -
  • This message means that no .pdb build symbol file was found for that assembly so - it cannot be profiled for code coverage. If that assembly is part of the .NET framework - for instance like System.Data.dll, then this is an expected message and should not - cause concern. 
  • If however the assembly belongs to your application, did you generate the - build symbol files (.pdb files) for it?
  • -
-

- 21. Troubleshooting: I get a "Profiled process terminated. Profiler connection not - established" message?

-
    -
  • If using the command-line, did you COM register CoverLib.dll (or use the //reg option - from NCover 1.5.6)?
  • Are you running Windows XP 64-bit? You may want to take a look at - this thread
-

- 22. Troubleshooting: My coverage exclusions are not working?

-
    -
  • Have you put the full namespace type name to the exclusion including the Attribute suffix in the //ea argument? See the "How - do I use coverage exclusions?" question above.
-   - - diff --git a/lib/log4net.dll b/lib/log4net.dll deleted file mode 100644 index a70cd2b8..00000000 Binary files a/lib/log4net.dll and /dev/null differ diff --git a/local.properties-example b/local.properties-example deleted file mode 100644 index 473e1f60..00000000 --- a/local.properties-example +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/Migrator.Tests/JoiningTableTransformationProviderExtensionsTests.cs b/src/Migrator.Tests/JoiningTableTransformationProviderExtensionsTests.cs index 938912a1..dfdaabff 100644 --- a/src/Migrator.Tests/JoiningTableTransformationProviderExtensionsTests.cs +++ b/src/Migrator.Tests/JoiningTableTransformationProviderExtensionsTests.cs @@ -1,5 +1,6 @@ using System.Data; using DotNetProjects.Migrator.Framework; +using DotNetProjects.Migrator.Framework.Support; using NSubstitute; using NUnit.Framework; diff --git a/src/Migrator/Framework/Support/Inflector.cs b/src/Migrator.Tests/Support/Inflector.cs similarity index 100% rename from src/Migrator/Framework/Support/Inflector.cs rename to src/Migrator.Tests/Support/Inflector.cs diff --git a/src/Migrator/Framework/JoiningTableTransformationProviderExtensions.cs b/src/Migrator.Tests/Support/JoiningTableTransformationProviderExtensions.cs similarity index 92% rename from src/Migrator/Framework/JoiningTableTransformationProviderExtensions.cs rename to src/Migrator.Tests/Support/JoiningTableTransformationProviderExtensions.cs index d66a3128..ec11d4eb 100644 --- a/src/Migrator/Framework/JoiningTableTransformationProviderExtensions.cs +++ b/src/Migrator.Tests/Support/JoiningTableTransformationProviderExtensions.cs @@ -1,7 +1,6 @@ -using System.Data; -using DotNetProjects.Migrator.Framework.Support; +using System.Data; -namespace DotNetProjects.Migrator.Framework; +namespace DotNetProjects.Migrator.Framework.Support; /// /// A set of extension methods for the transformation provider to make it easier to @@ -17,7 +16,7 @@ public static ITransformationProvider AddManyToManyJoiningTable(this ITransforma { var joiningTable = GetNameOfJoiningTable(lhsTableName, rhsTableName); - return AddManyToManyJoiningTable(database, schema, lhsTableName, lhsKey, rhsTableName, rhsKey, joiningTable); + return database.AddManyToManyJoiningTable(schema, lhsTableName, lhsKey, rhsTableName, rhsKey, joiningTable); } private static string GetNameOfJoiningTable(string lhsTableName, string rhsTableName) @@ -62,7 +61,7 @@ private static string ShortenKeyNameToBeSuitableForOracle(string pkName) public static ITransformationProvider RemoveManyToManyJoiningTable(this ITransformationProvider database, string schema, string lhsTableName, string rhsTableName) { var joiningTable = GetNameOfJoiningTable(lhsTableName, rhsTableName); - return RemoveManyToManyJoiningTable(database, schema, lhsTableName, rhsTableName, joiningTable); + return database.RemoveManyToManyJoiningTable(schema, lhsTableName, rhsTableName, joiningTable); } public static ITransformationProvider RemoveManyToManyJoiningTable(this ITransformationProvider database, string schema, string lhsTableName, string rhsTableName, string joiningTableName) diff --git a/src/Migrator/Framework/Support/TransformationProviderUtility.cs b/src/Migrator.Tests/Support/TransformationProviderUtility.cs similarity index 100% rename from src/Migrator/Framework/Support/TransformationProviderUtility.cs rename to src/Migrator.Tests/Support/TransformationProviderUtility.cs diff --git a/src/Migrator/AssemblyInfo.cs b/src/Migrator/AssemblyInfo.cs index 534cbb60..93009494 100644 --- a/src/Migrator/AssemblyInfo.cs +++ b/src/Migrator/AssemblyInfo.cs @@ -1,4 +1,4 @@ -using System.Reflection; +using System.Reflection; [assembly: AssemblyTitle("DotNetProjects.Migrator")] [assembly: AssemblyDescription("DotNetProjects.Migrator Core")] diff --git a/src/Migrator/DotNetProjects.Migrator.csproj b/src/Migrator/DotNetProjects.Migrator.csproj index 2c08756d..a17bed76 100644 --- a/src/Migrator/DotNetProjects.Migrator.csproj +++ b/src/Migrator/DotNetProjects.Migrator.csproj @@ -1,45 +1,31 @@  - - netstandard2.0;net40;net9.0 - false - True - MigratorDotNet.snk - DotNetProjects.Migrator - DotNetProjects.Migrator - latest - + + netstandard2.0;net40;net9.0 + false + DotNetProjects.Migrator + DotNetProjects.Migrator + latest + - - true - true - true - snupkg - True - https://github.com/dotnetprojects/Migrator.NET - MPL-1.1 - 7.0.0.0 - 7.0.0.0 - 8.0.0 - - - - + + true + true + true + snupkg + True + https://github.com/dotnetprojects/Migrator.NET + MPL-1.1 + 9.0.0.0 + 9.0.0.0 + 9.0.0.0 + + + + - - - 5.0.0 - - - - - - 5.0.0 - - - - - $(DefineConstants);NETSTANDARD - + + $(DefineConstants);NETSTANDARD + \ No newline at end of file diff --git a/src/Migrator/Framework/StringUtils.cs b/src/Migrator/Framework/StringUtils.cs index 800ac738..5e2be26f 100644 --- a/src/Migrator/Framework/StringUtils.cs +++ b/src/Migrator/Framework/StringUtils.cs @@ -42,4 +42,4 @@ public static string ReplaceOnce(string template, string placeholder, string rep .ToString(); } } -} \ No newline at end of file +} diff --git a/src/Migrator/MigrateAnywhere.cs b/src/Migrator/MigrateAnywhere.cs index e0f7dcd0..b75bf099 100644 --- a/src/Migrator/MigrateAnywhere.cs +++ b/src/Migrator/MigrateAnywhere.cs @@ -1,8 +1,8 @@ using System; using System.Collections.Generic; using System.Reflection; -using DotNetProjects.Migrator.Providers; using DotNetProjects.Migrator.Framework; +using DotNetProjects.Migrator.Providers; namespace DotNetProjects.Migrator; @@ -118,4 +118,4 @@ private void RemoveMigration(IMigration migration, MigrationAttribute attr) migration.AfterDown(); } } -} \ No newline at end of file +} diff --git a/src/Migrator/MigrationComparer.cs b/src/Migrator/MigrationComparer.cs index b0e2b0fc..1ddca9c6 100644 --- a/src/Migrator/MigrationComparer.cs +++ b/src/Migrator/MigrationComparer.cs @@ -32,13 +32,8 @@ public MigrationTypeComparer(bool ascending) public int Compare(Type x, Type y) { -#if NETSTANDARD - var attribOfX = x.GetTypeInfo().GetCustomAttribute(); - var attribOfY = y.GetTypeInfo().GetCustomAttribute(); -#else var attribOfX = (MigrationAttribute)Attribute.GetCustomAttribute(x, typeof(MigrationAttribute)); var attribOfY = (MigrationAttribute)Attribute.GetCustomAttribute(y, typeof(MigrationAttribute)); -#endif if (_ascending) { @@ -49,4 +44,4 @@ public int Compare(Type x, Type y) return attribOfY.Version.CompareTo(attribOfX.Version); } } -} \ No newline at end of file +} diff --git a/src/Migrator/MigratorDotNet.snk b/src/Migrator/MigratorDotNet.snk deleted file mode 100644 index 5032d709..00000000 Binary files a/src/Migrator/MigratorDotNet.snk and /dev/null differ diff --git a/src/Migrator/ProviderFactory.cs b/src/Migrator/ProviderFactory.cs index 7e8cbdbb..acb1fc2b 100644 --- a/src/Migrator/ProviderFactory.cs +++ b/src/Migrator/ProviderFactory.cs @@ -1,20 +1,5 @@ -#region License - -//The contents of this file are subject to the Mozilla Public License -//Version 1.1 (the "License"); you may not use this file except in -//compliance with the License. You may obtain a copy of the License at -//http://www.mozilla.org/MPL/ -//Software distributed under the License is distributed on an "AS IS" -//basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -//License for the specific language governing rights and limitations -//under the License. - -#endregion - using System; -using System.Collections.Generic; using System.Data; -using System.Reflection; using DotNetProjects.Migrator.Framework; using DotNetProjects.Migrator.Providers; using DotNetProjects.Migrator.Providers.Impl.DB2; @@ -99,4 +84,4 @@ public static Dialect DialectForProvider(ProviderTypes providerType) return null; } -} \ No newline at end of file +} diff --git a/src/Migrator/Providers/TransformationProvider.cs b/src/Migrator/Providers/TransformationProvider.cs index a1958201..023e76c5 100644 --- a/src/Migrator/Providers/TransformationProvider.cs +++ b/src/Migrator/Providers/TransformationProvider.cs @@ -14,7 +14,6 @@ using DotNetProjects.Migrator.Framework; using DotNetProjects.Migrator.Framework.Loggers; using DotNetProjects.Migrator.Framework.SchemaBuilder; -using DotNetProjects.Migrator.Framework.Support; using DotNetProjects.Migrator.Providers.Models; using System; using System.Collections.Generic; @@ -962,28 +961,6 @@ public virtual void ExecuteScript(string fileName) } } - public virtual void ExecuteEmbededScript(string resourceName) - { - if (CurrentMigration != null) - { -#if NETSTANDARD - var assembly = CurrentMigration.GetType().GetTypeInfo().Assembly; -#else - var assembly = CurrentMigration.GetType().Assembly; -#endif - - string sqlText; - var embeddedResourceName = TransformationProviderUtility.GetQualifiedResourcePath(assembly, resourceName); - - using (var stream = assembly.GetManifestResourceStream(embeddedResourceName)) - using (var reader = new StreamReader(stream)) - { - sqlText = reader.ReadToEnd(); - } - ExecuteNonQuery(sqlText); - } - } - /// /// Execute an SQL query returning results. /// diff --git a/src/Migrator/Tools/SchemaDumper.cs b/src/Migrator/Tools/SchemaDumper.cs deleted file mode 100755 index c6521d8e..00000000 --- a/src/Migrator/Tools/SchemaDumper.cs +++ /dev/null @@ -1,229 +0,0 @@ -#region License - -//The contents of this file are subject to the Mozilla Public License -//Version 1.1 (the "License"); you may not use this file except in -//compliance with the License. You may obtain a copy of the License at -//http://www.mozilla.org/MPL/ -//Software distributed under the License is distributed on an "AS IS" -//basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the -//License for the specific language governing rights and limitations -//under the License. - -#endregion - -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using DotNetProjects.Migrator; -using DotNetProjects.Migrator.Framework; -using DotNetProjects.Migrator.Providers; -using Index = DotNetProjects.Migrator.Framework.Index; - -namespace DotNetProjects.Migrator.Tools; - -public class SchemaDumper -{ - private readonly ITransformationProvider _provider; - private string[] tables; - private List foreignKeys = new List(); - private List columns = new List(); - private string dumpResult; - public SchemaDumper(ProviderTypes provider, string connectionString, string defaultSchema, string path = null, string tablePrefix = null) - { - _provider = ProviderFactory.Create(provider, connectionString, defaultSchema); - this.Dump(tablePrefix, path); - } - public string GetDump() - { - return this.dumpResult; - } - private void Dump(string tablePrefix, string path) - { - if (string.IsNullOrEmpty(tablePrefix)) - { - this.tables = this._provider.GetTables(); - } - else - { - this.tables = this._provider.GetTables().Where(o => o.ToUpper().StartsWith(tablePrefix.ToUpper())).ToArray(); - } - - foreach (var tab in this.tables) - { - foreignKeys.AddRange(this._provider.GetForeignKeyConstraints(tab)); - } - - var writer = new StringWriter(); - writer.WriteLine("using System.Data;"); - writer.WriteLine("using Migrator.Framework;\n"); - writer.WriteLine("\t[Migration(1)]"); - writer.WriteLine("\tpublic class SchemaDump : Migration"); - writer.WriteLine("\t{"); - writer.WriteLine("\tpublic override void Up()"); - writer.WriteLine("\t{"); - this.addTableStatement(writer); - this.addForeignKeys(writer); - writer.WriteLine("\t}"); - writer.WriteLine("\tpublic override void Down(){}"); - writer.WriteLine("}"); - this.dumpResult = writer.ToString(); - File.WriteAllText(path, dumpResult); - } - - private string GetListString(string[] list) - { - if (list == null) - { - return "new string[]{}"; - } - - for (var i = 0; i < list.Length; i++) - { - list[i] = $"\"{list[i]}\""; - } - return $"new []{string.Format("{{{0}}}", string.Join(",", list))}"; - } - - private void addForeignKeys(StringWriter writer) - { - foreach (var fk in this.foreignKeys) - { - var fkCols = fk.ParentColumns; - - foreach (var col in fkCols) - { - writer.WriteLine($"\t\tDatabase.AddForeignKey(\"{fk.Name}\", \"{fk.ParentTable}\", {this.GetListString(fk.ParentColumns)}, \"{fk.ChildTable}\", {this.GetListString(fk.ChildColumns)});"); - } - //this._provider.AddForeignKey(name, fktable, fkcols, pktable, primaryCols); - } - } - private void addTableStatement(StringWriter writer) - { - foreach (var table in this.tables) - { - var cols = this.getColsStatement(table); - writer.WriteLine($"\t\tDatabase.AddTable(\"{table}\",{cols});"); - this.AddIndexes(table, writer); - } - } - - private void AddIndexes(string table, StringWriter writer) - { - var inds = this._provider.GetIndexes(table); - foreach (var ind in inds) - { - if (ind.PrimaryKey == true) - { - var nonclusteredString = (ind.Clustered == false ? "NonClustered" : ""); - - var keys = ind.KeyColumns; - for (var i = 0; i < keys.Length; i++) - { - keys[i] = $"\"{keys[i]}\""; - } - var keysString = string.Join(",", keys); - writer.WriteLine($"\t\tDatabase.AddPrimaryKey{nonclusteredString}(\"{ind.Name}\",\"{table}\",new string[]{string.Format("{{{0}}}", keysString)});"); - continue; - } - writer.WriteLine($"\t\tDatabase.AddIndex(\"{table}\",new Index() {string.Format("{{Name = \"{0}\",Clustered = {1}, KeyColumns={2}, IncludeColumns={3}, Unique={4}, UniqueConstraint={5}}}", ind.Name, ind.Clustered.ToString().ToLower(), this.GetListString(ind.KeyColumns), this.GetListString(ind.IncludeColumns), ind.Unique.ToString().ToLower(), ind.UniqueConstraint.ToString().ToLower())});"); - } - } - - private string getColsStatement(string table) - { - var cols = this._provider.GetColumns(table); - var colList = new List(); - foreach (var col in cols) - { - colList.Add(this.getColStatement(col, table)); - } - var result = string.Format("{0}", string.Join(",", colList)); - return result; - } - private string getColStatement(Column col, string table) - { - var precision = ""; - if (col.Precision != null) - { - precision = $"({col.Precision})"; - } - - var propertyString = this.GetColumnPropertyString(col.ColumnProperty); - - if (col.Size != 0 && col.DefaultValue == null && col.ColumnProperty == ColumnProperty.None) - { - return string.Format("new Column(\"{0}\",DbType.{1},{2})", col.Name, col.Type, col.Size); - } - if (col.DefaultValue != null && col.ColumnProperty == ColumnProperty.None && col.Size == 0) - { - return string.Format("new Column(\"{0}\",DbType.{1},\"{2}\")", col.Name, col.Type, col.DefaultValue); - } - if (col.ColumnProperty != ColumnProperty.None && col.Size == 0 && col.DefaultValue == null) - { - return string.Format("new Column(\"{0}\",DbType.{1},{2})", col.Name, col.Type, propertyString); - } - if (col.ColumnProperty != ColumnProperty.None && col.Size != 0 && col.DefaultValue == null) - { - return string.Format("new Column(\"{0}\",DbType.{1},{2},{3})", col.Name, col.Type, col.Size, propertyString); - } - if (col.ColumnProperty != ColumnProperty.None && col.Size != 0 && col.DefaultValue != null) - { - return string.Format("new Column(\"{0}\",DbType.{1},{2},{3},\"{4}\")", col.Name, col.Type, col.Size, propertyString, col.DefaultValue); - } - if (col.ColumnProperty != ColumnProperty.None && col.Size == 0 && col.DefaultValue != null) - { - return string.Format("new Column(\"{0}\",DbType.{1},{2},\"{3}\")", col.Name, col.Type, propertyString, col.DefaultValue); - } - return string.Format("new Column(\"{0}\",{1})", col.Name, col.Type); - - } - private string GetColumnPropertyString(ColumnProperty prp) - { - var retVal = ""; - // if ((prp & ColumnProperty.ForeignKey) == ColumnProperty.ForeignKey) retVal += "ColumnProperty.ForeignKey | "; - if ((prp & ColumnProperty.Identity) == ColumnProperty.Identity) - { - retVal += "ColumnProperty.Identity | "; - } - - if ((prp & ColumnProperty.Indexed) == ColumnProperty.Indexed) - { - retVal += "ColumnProperty.Indexed | "; - } - - if ((prp & ColumnProperty.NotNull) == ColumnProperty.NotNull) - { - retVal += "ColumnProperty.NotNull | "; - } - - if ((prp & ColumnProperty.Null) == ColumnProperty.Null) - { - retVal += "ColumnProperty.Null | "; - } - //if ((prp & ColumnProperty.PrimaryKey) == ColumnProperty.PrimaryKey) retVal += "ColumnProperty.PrimaryKey | "; - //if ((prp & ColumnProperty.PrimaryKeyWithIdentity) == ColumnProperty.PrimaryKeyWithIdentity) retVal += "ColumnProperty.PrimaryKeyWithIdentity | "; - //if ((prp & ColumnProperty.PrimaryKeyNonClustered) == ColumnProperty.PrimaryKeyNonClustered) retVal += "ColumnProperty.PrimaryKeyNonClustered | "; - if ((prp & ColumnProperty.Unique) == ColumnProperty.Unique) - { - retVal += "ColumnProperty.Unique | "; - } - - if ((prp & ColumnProperty.Unsigned) == ColumnProperty.Unsigned) - { - retVal += "ColumnProperty.Unsigned | "; - } - - if (retVal != "") - { - retVal = retVal.Substring(0, retVal.Length - 3); - } - - if (retVal == "") - { - retVal = "ColumnProperty.None"; - } - - return retVal; - } -} diff --git a/src/MigratorDotNet.snk b/src/MigratorDotNet.snk deleted file mode 100644 index 5032d709..00000000 Binary files a/src/MigratorDotNet.snk and /dev/null differ diff --git a/src/config/GlobalAssemblyInfo.cs b/src/config/GlobalAssemblyInfo.cs deleted file mode 100644 index 1450ad63..00000000 --- a/src/config/GlobalAssemblyInfo.cs +++ /dev/null @@ -1,9 +0,0 @@ -using System.Reflection; -using System.Runtime.InteropServices; - -[assembly: AssemblyProduct("DotNetProjects.Migrator")] -[assembly: AssemblyCopyright("Copyright © 2017")] - -[assembly: ComVisible(false)] - -[assembly: AssemblyVersion("6.0.99.0")] diff --git a/src/config/app.config b/src/config/app.config deleted file mode 100644 index 7598dc51..00000000 --- a/src/config/app.config +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -