← Back to team overview

nunit-core team mailing list archive

[Merge] lp:~cvetomir-todorov/nunitv2/bug603088 into lp:nunitv2

 

Cvetomir Todorov has proposed merging lp:~cvetomir-todorov/nunitv2/bug603088 into lp:nunitv2.

Requested reviews:
  NUnit Core Developers (nunit-core)
Related bugs:
  #603088 NUnit Gui: Project Config Change from Menu Does Not Change AssemblyWatcher
  https://bugs.launchpad.net/bugs/603088


Fixing Bug #603088.
-- 
https://code.launchpad.net/~cvetomir-todorov/nunitv2/bug603088/+merge/35021
Your team NUnit Core Developers is requested to review the proposed merge of lp:~cvetomir-todorov/nunitv2/bug603088 into lp:nunitv2.
=== modified file 'src/ClientUtilities/tests/FileWatcherTest.cs'
--- src/ClientUtilities/tests/FileWatcherTest.cs	2009-04-18 02:24:12 +0000
+++ src/ClientUtilities/tests/FileWatcherTest.cs	2010-09-09 18:41:13 +0000
@@ -31,8 +31,9 @@
 			writer.Close();
 
 			handler = new CounterEventHandler();
-			watcher = new AssemblyWatcher(watcherDelayMs, fileName);
-			watcher.AssemblyChangedEvent += new AssemblyWatcher.AssemblyChangedHandler( handler.OnChanged );
+			watcher = new AssemblyWatcher();
+			watcher.Setup(watcherDelayMs, fileName);
+			watcher.AssemblyChanged += new AssemblyChangedHandler( handler.OnChanged );
 			watcher.Start();
 		}
 

=== modified file 'src/ClientUtilities/tests/MockAssemblyWatcher.cs'
--- src/ClientUtilities/tests/MockAssemblyWatcher.cs	2009-04-18 02:24:12 +0000
+++ src/ClientUtilities/tests/MockAssemblyWatcher.cs	2010-09-09 18:41:13 +0000
@@ -21,9 +21,6 @@
 		private DateTime triggerTime;
 		private DateTime publishTime;
 
-		public MockAssemblyWatcher( int delay, string assemblyFileName )
-			: base( delay, assemblyFileName ) { }
-		
 		public bool EventPublished
 		{
 			get { return eventPublished; }

=== added file 'src/ClientUtilities/tests/TestLoaderWatcherTests.cs'
--- src/ClientUtilities/tests/TestLoaderWatcherTests.cs	1970-01-01 00:00:00 +0000
+++ src/ClientUtilities/tests/TestLoaderWatcherTests.cs	2010-09-09 18:41:13 +0000
@@ -0,0 +1,139 @@
+// ****************************************************************
+// This is free software licensed under the NUnit license. You
+// may obtain a copy of the license as well as information regarding
+// copyright ownership at http://nunit.org.
+// ****************************************************************
+
+using System;
+using System.Collections.Generic;
+using NUnit.Framework;
+using NUnit.Tests.Assemblies;
+
+namespace NUnit.Util.Tests
+{
+	[TestFixture]
+	public class TestLoaderWatcherTests
+	{
+		private readonly string assembly = MockAssembly.AssemblyPath;
+		private MockAssemblyWatcher2 mockWatcher;
+		private ITestLoader testLoader;
+		private const string ReloadOnChangeSetting = "Options.TestLoader.ReloadOnChange";
+
+		[SetUp]
+		public void PreprareTestLoader()
+		{
+			// arrange
+			mockWatcher = new MockAssemblyWatcher2();
+			testLoader = new TestLoader(mockWatcher);
+			testLoader.LoadProject(assembly);
+		}
+
+		[TearDown]
+		public void CleanUpSettings()
+		{
+			Services.UserSettings.RemoveSetting(ReloadOnChangeSetting);
+		}
+
+		private void AssertWatcherIsPrepared()
+		{
+			Assert.IsTrue(mockWatcher.IsWatching);
+			CollectionAssert.AreEquivalent(new string[] { assembly }, mockWatcher.AssembliesToWatch);
+		}
+
+		[Test]
+		public void LoadShouldStartWatcher()
+		{
+			// act
+			testLoader.LoadTest();
+
+			// assert
+			AssertWatcherIsPrepared();
+		}
+
+		[Test]
+		public void ReloadShouldStartWatcher()
+		{
+			// arrange
+			testLoader.LoadTest();
+			mockWatcher.AssembliesToWatch = null;
+			mockWatcher.IsWatching = false;
+
+			// act
+			testLoader.ReloadTest();
+
+			// assert
+			AssertWatcherIsPrepared();
+		}
+
+		[Test]
+		public void UnloadShouldStopWatcherAndFreeResources()
+		{
+			// act
+			testLoader.LoadTest();
+			testLoader.UnloadTest();
+
+			// assert
+			Assert.IsFalse(mockWatcher.IsWatching);
+			Assert.IsTrue(mockWatcher.AreResourcesFreed);
+		}
+
+		[Test]
+		public void LoadShouldStartWatcherDepedningOnSettings()
+		{
+			// arrange
+			Services.UserSettings.SaveSetting(ReloadOnChangeSetting, false);
+			testLoader.LoadTest();
+
+			// assert
+			Assert.IsFalse(mockWatcher.IsWatching);
+		}
+
+		[Test]
+		public void ReloadShouldStartWatcherDepedningOnSettings()
+		{
+			// arrange
+			Services.UserSettings.SaveSetting(ReloadOnChangeSetting, false);
+			testLoader.LoadTest();
+			testLoader.ReloadTest();
+
+			// assert
+			Assert.IsFalse(mockWatcher.IsWatching);
+		}
+	}
+
+	internal class MockAssemblyWatcher2 : IAssemblyWatcher
+	{
+		public bool IsWatching;
+		public IList<string> AssembliesToWatch;
+		public bool AreResourcesFreed;
+
+		public void Stop()
+		{
+			IsWatching = false;
+		}
+
+		public void Start()
+		{
+			IsWatching = true;
+		}
+
+		public void Setup(int delayInMs, IList<string> assemblies)
+		{
+			AssembliesToWatch = assemblies;
+		}
+
+		public void Setup(int delayInMs, string assemblyFileName)
+		{
+			Setup(delayInMs, new string[] {assemblyFileName});
+		}
+
+		public void FreeResources()
+		{
+			AreResourcesFreed = true;
+		}
+
+#pragma warning disable 67
+		public event AssemblyChangedHandler AssemblyChanged;
+#pragma warning restore 67
+	}
+}
\ No newline at end of file

=== modified file 'src/ClientUtilities/tests/nunit.util.tests.build'
--- src/ClientUtilities/tests/nunit.util.tests.build	2010-04-19 03:57:21 +0000
+++ src/ClientUtilities/tests/nunit.util.tests.build	2010-09-09 18:41:13 +0000
@@ -32,6 +32,7 @@
         <include name="TestDomainFixture.cs"/>
         <include name="TestDomainTests_Multiple.cs"/>
         <include name="TestEventCatcher.cs"/>
+        <include name="TestLoaderWatcherTests.cs"/>
         <include name="TestLoaderAssemblyTests.cs"/>
         <include name="TestRunnerFactoryTests.cs"/>
         <include name="TestServerTests.cs"/>

=== modified file 'src/ClientUtilities/tests/nunit.util.tests.csproj'
--- src/ClientUtilities/tests/nunit.util.tests.csproj	2010-08-06 18:37:35 +0000
+++ src/ClientUtilities/tests/nunit.util.tests.csproj	2010-09-09 18:41:13 +0000
@@ -1,214 +1,214 @@
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="3.5">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{74EF7165-117E-48ED-98EA-068EAE438E53}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit.util.tests</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.Util.Tests</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>2.0</OldToolsVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <OutputPath>..\..\bin\Debug\tests\</OutputPath>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
-    <BaseAddress>285212672</BaseAddress>
-    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
-    <ConfigurationOverrideFile>
-    </ConfigurationOverrideFile>
-    <DefineConstants>DEBUG;TRACE</DefineConstants>
-    <DocumentationFile>
-    </DocumentationFile>
-    <DebugSymbols>true</DebugSymbols>
-    <FileAlignment>4096</FileAlignment>
-    <NoStdLib>false</NoStdLib>
-    <NoWarn>
-    </NoWarn>
-    <Optimize>false</Optimize>
-    <RegisterForComInterop>false</RegisterForComInterop>
-    <RemoveIntegerChecks>false</RemoveIntegerChecks>
-    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
-    <WarningLevel>4</WarningLevel>
-    <DebugType>full</DebugType>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <OutputPath>..\..\bin\Release\tests\</OutputPath>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
-    <BaseAddress>285212672</BaseAddress>
-    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
-    <ConfigurationOverrideFile>
-    </ConfigurationOverrideFile>
-    <DefineConstants>TRACE</DefineConstants>
-    <DocumentationFile>
-    </DocumentationFile>
-    <DebugSymbols>false</DebugSymbols>
-    <FileAlignment>4096</FileAlignment>
-    <NoStdLib>false</NoStdLib>
-    <NoWarn>
-    </NoWarn>
-    <Optimize>true</Optimize>
-    <RegisterForComInterop>false</RegisterForComInterop>
-    <RemoveIntegerChecks>false</RemoveIntegerChecks>
-    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
-    <WarningLevel>4</WarningLevel>
-    <DebugType>none</DebugType>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Drawing">
-      <Name>System.Drawing</Name>
-    </Reference>
-    <Reference Include="System.Runtime.Remoting">
-      <Name>System.Runtime.Remoting</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj">
-      <Name>nunit.core.dll</Name>
-      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj">
-      <Name>nunit.core.interfaces.dll</Name>
-      <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\tests\nunit.core.tests.csproj">
-      <Name>nunit.core.tests</Name>
-      <Project>{DD758D21-E5D5-4D40-9450-5F65A32F359C}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitFramework\framework\nunit.framework.dll.csproj">
-      <Name>nunit.framework.dll</Name>
-      <Project>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>True</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tests\mock-assembly\mock-assembly.csproj">
-      <Name>mock-assembly</Name>
-      <Project>{2E368281-3BA8-4050-B05E-0E0E43F8F446}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tests\nonamespace-assembly\nonamespace-assembly.csproj">
-      <Name>nonamespace-assembly</Name>
-      <Project>{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\tests\test-utilities\test-utilities.csproj">
-      <Name>test-utilities</Name>
-      <Project>{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-    </ProjectReference>
-    <ProjectReference Include="..\util\nunit.util.dll.csproj">
-      <Name>nunit.util.dll</Name>
-      <Project>{61CE9CE5-943E-44D4-A381-814DC1406767}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>False</Private>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="resources\ClassLibrary1.csproj" />
-    <EmbeddedResource Include="resources\csharp-sample.csproj" />
-    <EmbeddedResource Include="resources\csharp-sample_VS2005.csproj" />
-    <EmbeddedResource Include="resources\csharp-sample_VS2005_noplatform.csproj" />
-    <EmbeddedResource Include="resources\HebrewFileProblem.csproj" />
-    <EmbeddedResource Include="resources\jsharp.vjsproj" />
-    <EmbeddedResource Include="resources\jsharp_VS2005.vjsproj" />
-    <EmbeddedResource Include="resources\MultiplePlatformProject.csproj" />
-    <EmbeddedResource Include="resources\samples.sln" />
-    <EmbeddedResource Include="resources\samples_VS2005.sln" />
-    <EmbeddedResource Include="resources\Solution1.sln" />
-    <EmbeddedResource Include="resources\vb-sample.vbproj" />
-    <EmbeddedResource Include="resources\vb-sample_VS2005.vbproj" />
-    <EmbeddedResource Include="resources\WebApplication1.sln" />
-    <EmbeddedResource Include="resources\XNAWindowsProject.csproj" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="resources\cpp-default-library_VS2005.vcproj" />
-    <EmbeddedResource Include="resources\cpp-sample.vcproj" />
-    <EmbeddedResource Include="resources\cpp-sample_VS2005.vcproj" />
-    <EmbeddedResource Include="resources\CPPLibrary.vcproj" />
-    <EmbeddedResource Include="resources\MakeFileProject.vcproj" />
-    <EmbeddedResource Include="resources\Unmanaged.vcproj" />
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AssemblyListTests.cs" />
-    <Compile Include="CategoryManagerTest.cs" />
-    <Compile Include="CategoryParseTests.cs" />
-    <Compile Include="DomainManagerTests.cs" />
-    <Compile Include="EventDispatcherTests.cs" />
-    <Compile Include="FileWatcherTest.cs" />
-    <Compile Include="MemorySettingsStorageTests.cs" />
-    <Compile Include="MockAssemblyWatcher.cs" />
-    <Compile Include="NUnitProjectLoad.cs" />
-    <Compile Include="NUnitProjectSave.cs" />
-    <Compile Include="NUnitProjectTests.cs" />
-    <Compile Include="NUnitProjectXml.cs" />
-    <Compile Include="NUnitRegistryTests.cs" />
-    <Compile Include="PathUtilTests.cs" />
-    <Compile Include="ProcessRunnerTests.cs" />
-    <Compile Include="ProjectConfigTests.cs" />
-    <Compile Include="RecentFileEntryTests.cs" />
-    <Compile Include="RecentFilesTests.cs" />
-    <Compile Include="RegistrySettingsStorageTests.cs" />
-    <Compile Include="RemoteTestResultTest.cs" />
-    <Compile Include="RuntimeFrameworkSelectorTests.cs" />
-    <Compile Include="ServerUtilityTests.cs" />
-    <Compile Include="ServiceManagerSetUpFixture.cs" />
-    <Compile Include="SettingsGroupTests.cs" />
-    <Compile Include="SummaryResultFixture.cs" />
-    <Compile Include="TestAgencyTests.cs" />
-    <Compile Include="TestAgentTests.cs" />
-    <Compile Include="TestDomainFixture.cs" />
-    <Compile Include="TestDomainTests_Multiple.cs" />
-    <Compile Include="TestEventCatcher.cs" />
-    <Compile Include="TestLoaderAssemblyTests.cs" />
-    <Compile Include="TestRunnerFactoryTests.cs" />
-    <Compile Include="TestServerTests.cs" />
-    <Compile Include="VisualStudioConverterTests.cs" />
-    <Compile Include="VSProjectTests.cs" />
-    <Compile Include="XmlResultWriterTest.cs" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="3.5">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{74EF7165-117E-48ED-98EA-068EAE438E53}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit.util.tests</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.Util.Tests</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>2.0</OldToolsVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>..\..\bin\Debug\tests\</OutputPath>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+    <BaseAddress>285212672</BaseAddress>
+    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>true</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <NoStdLib>false</NoStdLib>
+    <NoWarn>
+    </NoWarn>
+    <Optimize>false</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>full</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>..\..\bin\Release\tests\</OutputPath>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+    <BaseAddress>285212672</BaseAddress>
+    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>false</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <NoStdLib>false</NoStdLib>
+    <NoWarn>
+    </NoWarn>
+    <Optimize>true</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>none</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Drawing">
+      <Name>System.Drawing</Name>
+    </Reference>
+    <Reference Include="System.Runtime.Remoting">
+      <Name>System.Runtime.Remoting</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj">
+      <Name>nunit.core.dll</Name>
+      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj">
+      <Name>nunit.core.interfaces.dll</Name>
+      <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\tests\nunit.core.tests.csproj">
+      <Name>nunit.core.tests</Name>
+      <Project>{DD758D21-E5D5-4D40-9450-5F65A32F359C}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitFramework\framework\nunit.framework.dll.csproj">
+      <Name>nunit.framework.dll</Name>
+      <Project>{83DD7E12-A705-4DBA-9D71-09C8973D9382}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+      <Private>True</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tests\mock-assembly\mock-assembly.csproj">
+      <Name>mock-assembly</Name>
+      <Project>{2E368281-3BA8-4050-B05E-0E0E43F8F446}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tests\nonamespace-assembly\nonamespace-assembly.csproj">
+      <Name>nonamespace-assembly</Name>
+      <Project>{5110F0D2-8E50-46F8-9E17-7C8EBFECCA9D}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\tests\test-utilities\test-utilities.csproj">
+      <Name>test-utilities</Name>
+      <Project>{3E63AD0F-24D4-46BE-BEE4-5A3299847D86}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+    </ProjectReference>
+    <ProjectReference Include="..\util\nunit.util.dll.csproj">
+      <Name>nunit.util.dll</Name>
+      <Project>{61CE9CE5-943E-44D4-A381-814DC1406767}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="resources\ClassLibrary1.csproj" />
+    <EmbeddedResource Include="resources\csharp-sample.csproj" />
+    <EmbeddedResource Include="resources\csharp-sample_VS2005.csproj" />
+    <EmbeddedResource Include="resources\csharp-sample_VS2005_noplatform.csproj" />
+    <EmbeddedResource Include="resources\HebrewFileProblem.csproj" />
+    <EmbeddedResource Include="resources\jsharp.vjsproj" />
+    <EmbeddedResource Include="resources\jsharp_VS2005.vjsproj" />
+    <EmbeddedResource Include="resources\MultiplePlatformProject.csproj" />
+    <EmbeddedResource Include="resources\samples.sln" />
+    <EmbeddedResource Include="resources\samples_VS2005.sln" />
+    <EmbeddedResource Include="resources\Solution1.sln" />
+    <EmbeddedResource Include="resources\vb-sample.vbproj" />
+    <EmbeddedResource Include="resources\vb-sample_VS2005.vbproj" />
+    <EmbeddedResource Include="resources\WebApplication1.sln" />
+    <EmbeddedResource Include="resources\XNAWindowsProject.csproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="resources\cpp-default-library_VS2005.vcproj" />
+    <EmbeddedResource Include="resources\cpp-sample.vcproj" />
+    <EmbeddedResource Include="resources\cpp-sample_VS2005.vcproj" />
+    <EmbeddedResource Include="resources\CPPLibrary.vcproj" />
+    <EmbeddedResource Include="resources\MakeFileProject.vcproj" />
+    <EmbeddedResource Include="resources\Unmanaged.vcproj" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AssemblyListTests.cs" />
+    <Compile Include="CategoryManagerTest.cs" />
+    <Compile Include="CategoryParseTests.cs" />
+    <Compile Include="DomainManagerTests.cs" />
+    <Compile Include="EventDispatcherTests.cs" />
+    <Compile Include="FileWatcherTest.cs" />
+    <Compile Include="MemorySettingsStorageTests.cs" />
+    <Compile Include="MockAssemblyWatcher.cs" />
+    <Compile Include="NUnitProjectLoad.cs" />
+    <Compile Include="NUnitProjectSave.cs" />
+    <Compile Include="NUnitProjectTests.cs" />
+    <Compile Include="NUnitProjectXml.cs" />
+    <Compile Include="NUnitRegistryTests.cs" />
+    <Compile Include="PathUtilTests.cs" />
+    <Compile Include="ProcessRunnerTests.cs" />
+    <Compile Include="ProjectConfigTests.cs" />
+    <Compile Include="RecentFileEntryTests.cs" />
+    <Compile Include="RecentFilesTests.cs" />
+    <Compile Include="RegistrySettingsStorageTests.cs" />
+    <Compile Include="RemoteTestResultTest.cs" />
+    <Compile Include="RuntimeFrameworkSelectorTests.cs" />
+    <Compile Include="ServerUtilityTests.cs" />
+    <Compile Include="ServiceManagerSetUpFixture.cs" />
+    <Compile Include="SettingsGroupTests.cs" />
+    <Compile Include="SummaryResultFixture.cs" />
+    <Compile Include="TestAgencyTests.cs" />
+    <Compile Include="TestAgentTests.cs" />
+    <Compile Include="TestDomainFixture.cs" />
+    <Compile Include="TestDomainTests_Multiple.cs" />
+    <Compile Include="TestEventCatcher.cs" />
+    <Compile Include="TestLoaderAssemblyTests.cs" />
+    <Compile Include="TestLoaderWatcherTests.cs" />
+    <Compile Include="TestRunnerFactoryTests.cs" />
+    <Compile Include="TestServerTests.cs" />
+    <Compile Include="VisualStudioConverterTests.cs" />
+    <Compile Include="VSProjectTests.cs" />
+    <Compile Include="XmlResultWriterTest.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file

=== modified file 'src/ClientUtilities/util/AssemblyWatcher.cs'
--- src/ClientUtilities/util/AssemblyWatcher.cs	2009-04-18 02:24:12 +0000
+++ src/ClientUtilities/util/AssemblyWatcher.cs	2010-09-09 18:41:13 +0000
@@ -6,9 +6,8 @@
 
 using System;
 using System.IO;
-using System.Text;
 using System.Timers;
-using System.Collections;
+using System.Collections.Generic;
 
 namespace NUnit.Util
 {
@@ -20,46 +19,72 @@
 	/// an argument to the event handler so that one routine can
 	/// be used to handle events from multiple watchers.
 	/// </summary>
-	public class AssemblyWatcher
+	public class AssemblyWatcher : IAssemblyWatcher
 	{
-		FileSystemWatcher[] fileWatcher;
-		FileInfo[] fileInfo;
+		private FileSystemWatcher[] fileWatchers;
+		private FileInfo[] files;
+		private bool isWatching;
 
 		protected System.Timers.Timer timer;
-		protected string changedAssemblyPath; 
-
-		public delegate void AssemblyChangedHandler(String fullPath);
-		public event AssemblyChangedHandler AssemblyChangedEvent;
-
-		public AssemblyWatcher( int delay, string assemblyFileName )
-			: this( delay, new string[]{ assemblyFileName } ) { }
-
-		public AssemblyWatcher( int delay, IList assemblies )
-		{
-			fileInfo = new FileInfo[assemblies.Count];
-			fileWatcher = new FileSystemWatcher[assemblies.Count];
-
-			for( int i = 0; i < assemblies.Count; i++ )
-			{
-				fileInfo[i] = new FileInfo( (string)assemblies[i] );
-
-				fileWatcher[i] = new FileSystemWatcher();
-				fileWatcher[i].Path = fileInfo[i].DirectoryName;
-				fileWatcher[i].Filter = fileInfo[i].Name;
-				fileWatcher[i].NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite;
-				fileWatcher[i].Changed+=new FileSystemEventHandler(OnChanged);
-				fileWatcher[i].EnableRaisingEvents = false;
-			}
-
-			timer = new System.Timers.Timer( delay );
-			timer.AutoReset=false;
-			timer.Enabled=false;
-			timer.Elapsed+=new ElapsedEventHandler(OnTimer);
-		}
-
-		public FileInfo GetFileInfo( int index )
-		{
-			return fileInfo[index];
+		protected string changedAssemblyPath;
+
+		protected FileInfo GetFileInfo(int index)
+		{
+			return files[index];
+		}
+
+		//public AssemblyWatcher( int delay, string assemblyFileName )
+		//    : this( delay, new string[]{ assemblyFileName } ) { }
+
+		//public AssemblyWatcher( int delay, IList assemblies )
+		//{
+		//    files = new FileInfo[assemblies.Count];
+		//    fileWatchers = new FileSystemWatcher[assemblies.Count];
+
+		//    for( int i = 0; i < assemblies.Count; i++ )
+		//    {
+		//        files[i] = new FileInfo( (string)assemblies[i] );
+
+		//        fileWatchers[i] = new FileSystemWatcher();
+		//        fileWatchers[i].Path = files[i].DirectoryName;
+		//        fileWatchers[i].Filter = files[i].Name;
+		//        fileWatchers[i].NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite;
+		//        fileWatchers[i].Changed+=new FileSystemEventHandler(OnChanged);
+		//        fileWatchers[i].EnableRaisingEvents = false;
+		//    }
+
+		//    timer = new System.Timers.Timer( delay );
+		//    timer.AutoReset=false;
+		//    timer.Enabled=false;
+		//    timer.Elapsed+=new ElapsedEventHandler(OnTimer);
+		//}
+
+		public void Setup(int delay, string assemblyFileName)
+		{
+			Setup(delay, new string[] {assemblyFileName});
+		}
+
+		public void Setup(int delay, IList<string> assemblies)
+		{
+			files = new FileInfo[assemblies.Count];
+			fileWatchers = new FileSystemWatcher[assemblies.Count];
+
+			for (int i = 0; i < assemblies.Count; i++)
+			{
+				files[i] = new FileInfo((string)assemblies[i]);
+
+				fileWatchers[i] = new FileSystemWatcher();
+				fileWatchers[i].Path = files[i].DirectoryName;
+				fileWatchers[i].Filter = files[i].Name;
+				fileWatchers[i].NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite;
+				fileWatchers[i].Changed += new FileSystemEventHandler(OnChanged);
+				fileWatchers[i].EnableRaisingEvents = false;
+			}
+
+			timer = new System.Timers.Timer(delay);
+			timer.AutoReset = false;
+			timer.Enabled = false;
+			timer.Elapsed += new ElapsedEventHandler(OnTimer);
 		}
 
 		public void Start()
@@ -74,9 +99,45 @@
 
 		private void EnableWatchers( bool enable )
 		{
-			foreach( FileSystemWatcher watcher in fileWatcher )
+			if (ReferenceEquals(fileWatchers, null))
+				return;
+
+			foreach( FileSystemWatcher watcher in fileWatchers )
 				watcher.EnableRaisingEvents = enable;
-		}
+
+			isWatching = enable;
+		}
+
+		public void FreeResources()
+		{
+			if (isWatching)
+			{
+				EnableWatchers(false);
+			}
+
+			if (!ReferenceEquals(fileWatchers, null))
+			{
+				foreach (FileSystemWatcher watcher in fileWatchers)
+				{
+					if (ReferenceEquals(watcher, null))
+						continue;
+
+					watcher.Changed -= new FileSystemEventHandler(OnChanged);
+					watcher.Dispose();
+				}
+			}
+
+			if (!ReferenceEquals(timer, null))
+			{
+				timer.Stop();
+				timer.Close();
+			}
+
+			fileWatchers = null;
+			timer = null;
+		}
+
+		public event AssemblyChangedHandler AssemblyChanged;
 
 		protected void OnTimer(Object source, ElapsedEventArgs e)
 		{
@@ -107,8 +168,8 @@
 	
 		protected void PublishEvent()
 		{
-			if ( AssemblyChangedEvent != null )
-				AssemblyChangedEvent( changedAssemblyPath );
+			if ( AssemblyChanged != null )
+				AssemblyChanged( changedAssemblyPath );
 		}
 	}
 }
\ No newline at end of file

=== added file 'src/ClientUtilities/util/IAssemblyWatcher.cs'
--- src/ClientUtilities/util/IAssemblyWatcher.cs	1970-01-01 00:00:00 +0000
+++ src/ClientUtilities/util/IAssemblyWatcher.cs	2010-09-09 18:41:13 +0000
@@ -0,0 +1,54 @@
+using System;
+using System.Collections.Generic;
+
+namespace NUnit.Util
+{
+	public delegate void AssemblyChangedHandler(string fullPath);
+
+	/// <summary>
+	/// AssemblyWatcher keeps track of one or more assemblies to 
+	/// see if they have changed. It incorporates a delayed notification
+	/// and uses a standard event to notify any interested parties
+	/// about the change. The path to the assembly is provided as
+	/// an argument to the event handler so that one routine can
+	/// be used to handle events from multiple watchers.
+	/// </summary>
+	public interface IAssemblyWatcher
+	{
+		/// <summary>
+		/// Stops watching for changes.
+		/// To release resources call FreeResources.
+		/// </summary>
+		void Stop();
+
+		/// <summary>
+		/// Starts watching for assembly changes.
+		/// You need to call Setup before start watching.
+		/// </summary>
+		void Start();
+
+		/// <summary>
+		/// Initializes the watcher with assemblies to observe for changes.
+		/// </summary>
+		/// <param name="delayInMs">The delay in ms.</param>
+		/// <param name="assemblies">The assemblies.</param>
+		void Setup(int delayInMs, IList<string> assemblies);
+
+		/// <summary>
+		/// Initializes the watcher with assemblies to observe for changes.
+		/// </summary>
+		/// <param name="delayInMs">The delay in ms.</param>
+		/// <param name="assemblyFileName">Name of the assembly file.</param>
+		void Setup(int delayInMs, string assemblyFileName);
+
+		/// <summary>
+		/// Releases all resources held by the watcher.
+		/// </summary>
+		void FreeResources();
+
+		/// <summary>
+		/// Occurs when an assembly being watched has changed.
+		/// </summary>
+		event AssemblyChangedHandler AssemblyChanged;
+	}
+}
\ No newline at end of file

=== modified file 'src/ClientUtilities/util/TestLoader.cs'
--- src/ClientUtilities/util/TestLoader.cs	2010-07-22 23:55:39 +0000
+++ src/ClientUtilities/util/TestLoader.cs	2010-09-09 18:41:13 +0000
@@ -8,7 +8,8 @@
 {
 	using System;
 	using System.IO;
-	using System.Collections;
+	using System.Collections;
+	using System.Diagnostics;
 	using System.Threading;
 	using System.Configuration;
 	using NUnit.Core;
@@ -87,8 +88,8 @@
 
 		/// <summary>
 		/// Watcher fires when the assembly changes
-		/// </summary>
-		private AssemblyWatcher watcher;
+		/// </summary>
+		private IAssemblyWatcher watcher;
 
 		/// <summary>
 		/// Assembly changed during a test and
@@ -116,11 +117,18 @@
 		public TestLoader()
 			: this( new TestEventDispatcher() ) { }
 
-		public TestLoader(TestEventDispatcher eventDispatcher )
-		{
-			this.events = eventDispatcher;
-            this.factory = new DefaultTestRunnerFactory();
-			AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( OnUnhandledException );
+		public TestLoader(TestEventDispatcher eventDispatcher)
+			: this(eventDispatcher, new AssemblyWatcher()) { }
+
+		public TestLoader(IAssemblyWatcher assemblyWatcher)
+			: this(new TestEventDispatcher(), assemblyWatcher) { }
+
+		public TestLoader(TestEventDispatcher eventDispatcher, IAssemblyWatcher assemblyWatcher)
+		{
+			this.events = eventDispatcher;
+			this.watcher = assemblyWatcher;
+			this.factory = new DefaultTestRunnerFactory();
+			AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(OnUnhandledException);
 		}
 
 		#endregion
@@ -569,9 +577,12 @@
 
                 loadedTest = testRunner.Test;
                 currentRuntime = framework;
-				reloadPending = false;
-
-                testProject.HasChangesRequiringReload = false;
+				reloadPending = false;
+
+				if (Services.UserSettings.GetSetting("Options.TestLoader.ReloadOnChange", true))
+					InstallWatcher();
+
+				testProject.HasChangesRequiringReload = false;
                 events.FireTestReloaded(TestFileName, loadedTest);
 
                 log.Info("Reload complete");
@@ -669,10 +680,12 @@
 		/// </summary>
 		private void InstallWatcher()
 		{
-			if(watcher!=null) watcher.Stop();
+			Debug.Assert(!ReferenceEquals(watcher, null));
+			watcher.Stop();
+			watcher.FreeResources();
 
-			watcher = new AssemblyWatcher( 1000, TestProject.ActiveConfig.Assemblies.ToArray() );
-			watcher.AssemblyChangedEvent += new AssemblyWatcher.AssemblyChangedHandler( OnTestChanged );
+			watcher.Setup(1000, TestProject.ActiveConfig.Assemblies.ToArray());
+			watcher.AssemblyChanged += new AssemblyChangedHandler( OnTestChanged );
 			watcher.Start();
 		}
 
@@ -680,12 +693,10 @@
 		/// Stop and remove our current watcher object.
 		/// </summary>
 		private void RemoveWatcher()
-		{
-			if ( watcher != null )
-			{
-				watcher.Stop();
-				watcher = null;
-			}
+		{
+			Debug.Assert(!ReferenceEquals(watcher, null));
+			watcher.Stop();
+			watcher.FreeResources();
 		}
 
 		private TestPackage MakeTestPackage( string testName )

=== modified file 'src/ClientUtilities/util/nunit.util.build'
--- src/ClientUtilities/util/nunit.util.build	2010-07-22 23:55:39 +0000
+++ src/ClientUtilities/util/nunit.util.build	2010-09-09 18:41:13 +0000
@@ -11,6 +11,7 @@
         <include name="CommandLineOptions.cs"/>
         <include name="ConsoleWriter.cs"/>
         <include name="DefaultTestRunnerFactory.cs"/>
+        <include name="IAssemblyWatcher.cs"/>
         <include name="InProcessTestRunnerFactory.cs"/>
         <include name="MemorySettingsStorage.cs"/>
         <include name="NUnitProject.cs"/>

=== modified file 'src/ClientUtilities/util/nunit.util.dll.csproj'
--- src/ClientUtilities/util/nunit.util.dll.csproj	2010-08-06 18:37:35 +0000
+++ src/ClientUtilities/util/nunit.util.dll.csproj	2010-09-09 18:41:13 +0000
@@ -1,181 +1,182 @@
-<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="3.5">
-  <PropertyGroup>
-    <ProjectType>Local</ProjectType>
-    <ProductVersion>9.0.30729</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{61CE9CE5-943E-44D4-A381-814DC1406767}</ProjectGuid>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-    <ApplicationIcon>
-    </ApplicationIcon>
-    <AssemblyKeyContainerName>
-    </AssemblyKeyContainerName>
-    <AssemblyName>nunit.util</AssemblyName>
-    <AssemblyOriginatorKeyFile>
-    </AssemblyOriginatorKeyFile>
-    <DefaultClientScript>JScript</DefaultClientScript>
-    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
-    <DefaultTargetSchema>IE50</DefaultTargetSchema>
-    <DelaySign>false</DelaySign>
-    <OutputType>Library</OutputType>
-    <RootNamespace>NUnit.Util</RootNamespace>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <StartupObject>
-    </StartupObject>
-    <FileUpgradeFlags>
-    </FileUpgradeFlags>
-    <UpgradeBackupLocation>
-    </UpgradeBackupLocation>
-    <OldToolsVersion>2.0</OldToolsVersion>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
-    <OutputPath>..\..\bin\Debug\lib\</OutputPath>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
-    <BaseAddress>285212672</BaseAddress>
-    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
-    <ConfigurationOverrideFile>
-    </ConfigurationOverrideFile>
-    <DefineConstants>TRACE;DEBUG;NET_2_0</DefineConstants>
-    <DocumentationFile>
-    </DocumentationFile>
-    <DebugSymbols>true</DebugSymbols>
-    <FileAlignment>4096</FileAlignment>
-    <NoStdLib>false</NoStdLib>
-    <NoWarn>1699</NoWarn>
-    <Optimize>false</Optimize>
-    <RegisterForComInterop>false</RegisterForComInterop>
-    <RemoveIntegerChecks>false</RemoveIntegerChecks>
-    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
-    <WarningLevel>4</WarningLevel>
-    <DebugType>full</DebugType>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
-    <OutputPath>..\..\bin\Release\lib\</OutputPath>
-    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
-    <BaseAddress>285212672</BaseAddress>
-    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
-    <ConfigurationOverrideFile>
-    </ConfigurationOverrideFile>
-    <DefineConstants>TRACE;NET_2_0</DefineConstants>
-    <DocumentationFile>
-    </DocumentationFile>
-    <DebugSymbols>false</DebugSymbols>
-    <FileAlignment>4096</FileAlignment>
-    <NoStdLib>false</NoStdLib>
-    <NoWarn>1699</NoWarn>
-    <Optimize>true</Optimize>
-    <RegisterForComInterop>false</RegisterForComInterop>
-    <RemoveIntegerChecks>false</RemoveIntegerChecks>
-    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
-    <WarningLevel>4</WarningLevel>
-    <DebugType>none</DebugType>
-    <ErrorReport>prompt</ErrorReport>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="System">
-      <Name>System</Name>
-    </Reference>
-    <Reference Include="System.configuration" />
-    <Reference Include="System.Data">
-      <Name>System.Data</Name>
-    </Reference>
-    <Reference Include="System.Drawing">
-      <Name>System.Drawing</Name>
-    </Reference>
-    <Reference Include="System.Runtime.Remoting">
-      <Name>System.Runtime.Remoting</Name>
-    </Reference>
-    <Reference Include="System.Xml">
-      <Name>System.XML</Name>
-    </Reference>
-    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj">
-      <Name>nunit.core.dll</Name>
-      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>False</Private>
-    </ProjectReference>
-    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj">
-      <Name>nunit.core.interfaces.dll</Name>
-      <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project>
-      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
-      <Private>False</Private>
-    </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="..\..\CommonAssemblyInfo.cs">
-      <Link>CommonAssemblyInfo.cs</Link>
-    </Compile>
-    <Compile Include="AggregatingTestRunner.cs" />
-    <Compile Include="AssemblyInfo.cs" />
-    <Compile Include="AssemblyList.cs" />
-    <Compile Include="AssemblyWatcher.cs" />
-    <Compile Include="CategoryExpression.cs" />
-    <Compile Include="CategoryManager.cs" />
-    <Compile Include="CommandLineOptions.cs" />
-    <Compile Include="ConsoleWriter.cs" />
-    <Compile Include="DefaultTestRunnerFactory.cs" />
-    <Compile Include="Extensibility\IProjectConverter.cs" />
-    <Compile Include="Extensibility\ProjectConverterCollection.cs" />
-    <Compile Include="InProcessTestRunnerFactory.cs" />
-    <Compile Include="Interfaces\IRuntimeFrameworkSelector.cs" />
-    <Compile Include="Interfaces\ISettings.cs" />
-    <Compile Include="Interfaces\ITestEvents.cs" />
-    <Compile Include="Interfaces\ITestLoader.cs" />
-    <Compile Include="Interfaces\ITestRunnerFactory.cs" />
-    <Compile Include="MemorySettingsStorage.cs" />
-    <Compile Include="NUnitProject.cs" />
-    <Compile Include="NUnitRegistry.cs" />
-    <Compile Include="PathUtils.cs" />
-    <Compile Include="ProcessRunner.cs" />
-    <Compile Include="ProjectConfig.cs" />
-    <Compile Include="ProjectConfigCollection.cs" />
-    <Compile Include="ProjectConverters\VisualStudioConverter.cs" />
-    <Compile Include="ProjectFormatException.cs" />
-    <Compile Include="RecentFileEntry.cs" />
-    <Compile Include="RecentFiles.cs" />
-    <Compile Include="RecentFilesCollection.cs" />
-    <Compile Include="RegistrySettingsStorage.cs" />
-    <Compile Include="RemoteTestAgent.cs" />
-    <Compile Include="ResultSummarizer.cs" />
-    <Compile Include="RuntimeFrameworkSelector.cs" />
-    <Compile Include="ServerBase.cs" />
-    <Compile Include="ServerUtilities.cs" />
-    <Compile Include="Services.cs" />
-    <Compile Include="Services\AddinManager.cs" />
-    <Compile Include="Services\AddinRegistry.cs" />
-    <Compile Include="Services\DomainManager.cs" />
-    <Compile Include="Services\ProjectService.cs" />
-    <Compile Include="Services\RecentFilesService.cs" />
-    <Compile Include="Services\ServiceManager.cs" />
-    <Compile Include="Services\SettingsService.cs" />
-    <Compile Include="Services\TestAgency.cs" />
-    <Compile Include="SettingsGroup.cs" />
-    <Compile Include="SettingsStorage.cs" />
-    <Compile Include="StackTraceFilter.cs" />
-    <Compile Include="TestDomain.cs" />
-    <Compile Include="TestEventArgs.cs" />
-    <Compile Include="TestEventDispatcher.cs" />
-    <Compile Include="TestExceptionHandler.cs" />
-    <Compile Include="TestLoader.cs" />
-    <Compile Include="TestObserver.cs" />
-    <Compile Include="TestResultItem.cs" />
-    <Compile Include="TestServer.cs" />
-    <Compile Include="VSProject.cs" />
-    <Compile Include="VSProjectConfig.cs" />
-    <Compile Include="VSProjectConfigCollection.cs" />
-    <Compile Include="XmlResultTransform.cs" />
-    <Compile Include="XmlResultWriter.cs" />
-    <Compile Include="XmlSettingsStorage.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Transform.resx" />
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <PropertyGroup>
-    <PreBuildEvent>
-    </PreBuildEvent>
-    <PostBuildEvent>
-    </PostBuildEvent>
-  </PropertyGroup>
+<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"; ToolsVersion="3.5">
+  <PropertyGroup>
+    <ProjectType>Local</ProjectType>
+    <ProductVersion>9.0.30729</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{61CE9CE5-943E-44D4-A381-814DC1406767}</ProjectGuid>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ApplicationIcon>
+    </ApplicationIcon>
+    <AssemblyKeyContainerName>
+    </AssemblyKeyContainerName>
+    <AssemblyName>nunit.util</AssemblyName>
+    <AssemblyOriginatorKeyFile>
+    </AssemblyOriginatorKeyFile>
+    <DefaultClientScript>JScript</DefaultClientScript>
+    <DefaultHTMLPageLayout>Grid</DefaultHTMLPageLayout>
+    <DefaultTargetSchema>IE50</DefaultTargetSchema>
+    <DelaySign>false</DelaySign>
+    <OutputType>Library</OutputType>
+    <RootNamespace>NUnit.Util</RootNamespace>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <StartupObject>
+    </StartupObject>
+    <FileUpgradeFlags>
+    </FileUpgradeFlags>
+    <UpgradeBackupLocation>
+    </UpgradeBackupLocation>
+    <OldToolsVersion>2.0</OldToolsVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <OutputPath>..\..\bin\Debug\lib\</OutputPath>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+    <BaseAddress>285212672</BaseAddress>
+    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>TRACE;DEBUG;NET_2_0</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>true</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <NoStdLib>false</NoStdLib>
+    <NoWarn>1699</NoWarn>
+    <Optimize>false</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>full</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <OutputPath>..\..\bin\Release\lib\</OutputPath>
+    <AllowUnsafeBlocks>false</AllowUnsafeBlocks>
+    <BaseAddress>285212672</BaseAddress>
+    <CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
+    <ConfigurationOverrideFile>
+    </ConfigurationOverrideFile>
+    <DefineConstants>TRACE;NET_2_0</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <DebugSymbols>false</DebugSymbols>
+    <FileAlignment>4096</FileAlignment>
+    <NoStdLib>false</NoStdLib>
+    <NoWarn>1699</NoWarn>
+    <Optimize>true</Optimize>
+    <RegisterForComInterop>false</RegisterForComInterop>
+    <RemoveIntegerChecks>false</RemoveIntegerChecks>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <WarningLevel>4</WarningLevel>
+    <DebugType>none</DebugType>
+    <ErrorReport>prompt</ErrorReport>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System">
+      <Name>System</Name>
+    </Reference>
+    <Reference Include="System.configuration" />
+    <Reference Include="System.Data">
+      <Name>System.Data</Name>
+    </Reference>
+    <Reference Include="System.Drawing">
+      <Name>System.Drawing</Name>
+    </Reference>
+    <Reference Include="System.Runtime.Remoting">
+      <Name>System.Runtime.Remoting</Name>
+    </Reference>
+    <Reference Include="System.Xml">
+      <Name>System.XML</Name>
+    </Reference>
+    <ProjectReference Include="..\..\NUnitCore\core\nunit.core.dll.csproj">
+      <Name>nunit.core.dll</Name>
+      <Project>{EBD43A7F-AFCA-4281-BB53-5CDD91F966A3}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+      <Private>False</Private>
+    </ProjectReference>
+    <ProjectReference Include="..\..\NUnitCore\interfaces\nunit.core.interfaces.dll.csproj">
+      <Name>nunit.core.interfaces.dll</Name>
+      <Project>{435428F8-5995-4CE4-8022-93D595A8CC0F}</Project>
+      <Package>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Package>
+      <Private>False</Private>
+    </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="..\..\CommonAssemblyInfo.cs">
+      <Link>CommonAssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="AggregatingTestRunner.cs" />
+    <Compile Include="AssemblyInfo.cs" />
+    <Compile Include="AssemblyList.cs" />
+    <Compile Include="AssemblyWatcher.cs" />
+    <Compile Include="CategoryExpression.cs" />
+    <Compile Include="CategoryManager.cs" />
+    <Compile Include="CommandLineOptions.cs" />
+    <Compile Include="ConsoleWriter.cs" />
+    <Compile Include="DefaultTestRunnerFactory.cs" />
+    <Compile Include="Extensibility\IProjectConverter.cs" />
+    <Compile Include="Extensibility\ProjectConverterCollection.cs" />
+    <Compile Include="IAssemblyWatcher.cs" />
+    <Compile Include="InProcessTestRunnerFactory.cs" />
+    <Compile Include="Interfaces\IRuntimeFrameworkSelector.cs" />
+    <Compile Include="Interfaces\ISettings.cs" />
+    <Compile Include="Interfaces\ITestEvents.cs" />
+    <Compile Include="Interfaces\ITestLoader.cs" />
+    <Compile Include="Interfaces\ITestRunnerFactory.cs" />
+    <Compile Include="MemorySettingsStorage.cs" />
+    <Compile Include="NUnitProject.cs" />
+    <Compile Include="NUnitRegistry.cs" />
+    <Compile Include="PathUtils.cs" />
+    <Compile Include="ProcessRunner.cs" />
+    <Compile Include="ProjectConfig.cs" />
+    <Compile Include="ProjectConfigCollection.cs" />
+    <Compile Include="ProjectConverters\VisualStudioConverter.cs" />
+    <Compile Include="ProjectFormatException.cs" />
+    <Compile Include="RecentFileEntry.cs" />
+    <Compile Include="RecentFiles.cs" />
+    <Compile Include="RecentFilesCollection.cs" />
+    <Compile Include="RegistrySettingsStorage.cs" />
+    <Compile Include="RemoteTestAgent.cs" />
+    <Compile Include="ResultSummarizer.cs" />
+    <Compile Include="RuntimeFrameworkSelector.cs" />
+    <Compile Include="ServerBase.cs" />
+    <Compile Include="ServerUtilities.cs" />
+    <Compile Include="Services.cs" />
+    <Compile Include="Services\AddinManager.cs" />
+    <Compile Include="Services\AddinRegistry.cs" />
+    <Compile Include="Services\DomainManager.cs" />
+    <Compile Include="Services\ProjectService.cs" />
+    <Compile Include="Services\RecentFilesService.cs" />
+    <Compile Include="Services\ServiceManager.cs" />
+    <Compile Include="Services\SettingsService.cs" />
+    <Compile Include="Services\TestAgency.cs" />
+    <Compile Include="SettingsGroup.cs" />
+    <Compile Include="SettingsStorage.cs" />
+    <Compile Include="StackTraceFilter.cs" />
+    <Compile Include="TestDomain.cs" />
+    <Compile Include="TestEventArgs.cs" />
+    <Compile Include="TestEventDispatcher.cs" />
+    <Compile Include="TestExceptionHandler.cs" />
+    <Compile Include="TestLoader.cs" />
+    <Compile Include="TestObserver.cs" />
+    <Compile Include="TestResultItem.cs" />
+    <Compile Include="TestServer.cs" />
+    <Compile Include="VSProject.cs" />
+    <Compile Include="VSProjectConfig.cs" />
+    <Compile Include="VSProjectConfigCollection.cs" />
+    <Compile Include="XmlResultTransform.cs" />
+    <Compile Include="XmlResultWriter.cs" />
+    <Compile Include="XmlSettingsStorage.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Transform.resx" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <PropertyGroup>
+    <PreBuildEvent>
+    </PreBuildEvent>
+    <PostBuildEvent>
+    </PostBuildEvent>
+  </PropertyGroup>
 </Project>
\ No newline at end of file