Commits

Jon Hanna committed 34b23e7

Debugger proxies.

  • Participants
  • Parent commits d8d0208

Comments (0)

Files changed (10)

File Ariadne/Ariadne.csproj

-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-    <Platform Condition=" '$(Platform)' == '' ">4.5.1</Platform>
-    <ProductVersion>9.0.21022</ProductVersion>
-    <SchemaVersion>2.0</SchemaVersion>
-    <ProjectGuid>{95CAF4E7-ADA0-471F-9930-C0F252D92368}</ProjectGuid>
-    <OutputType>Library</OutputType>
-    <RootNamespace>Ariadne</RootNamespace>
-    <AssemblyName>Ariadne</AssemblyName>
-    <AppDesignerFolder>Properties</AppDesignerFolder>
-    <CodePage>65001</CodePage>
-    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
-    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
-    <NoStdLib>False</NoStdLib>
-    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
-    <RunCodeAnalysis>False</RunCodeAnalysis>
-    <SourceAnalysisOverrideSettingsFile>Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile>
-    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
-    <RunSourceAnalysis>False</RunSourceAnalysis>
-    <RegisterForComInterop>False</RegisterForComInterop>
-    <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
-    <BaseAddress>9633792</BaseAddress>
-    <PlatformTarget>AnyCPU</PlatformTarget>
-    <FileAlignment>4096</FileAlignment>
-    <WarningLevel>4</WarningLevel>
-    <StartAction>Project</StartAction>
-    <NoWin32Manifest>False</NoWin32Manifest>
-    <BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
-    <IntermediateOutputPath>obj\$(Configuration)\$(Platform)\</IntermediateOutputPath>
-    <OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
-    <DocumentationFile>$(OutputPath)\Ariadne.xml</DocumentationFile>
-    <ErrorReport>prompt</ErrorReport>
-    <ConsolePause>false</ConsolePause>
-    <LangVersion>5</LangVersion>
-    <Prefer32Bit>False</Prefer32Bit>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Platform)' == '4.5.1' ">
-    <TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
-    <DefineConstants>NET_451;MIN_NET_40</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Platform)' == '4.5' ">
-    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
-    <DefineConstants>NET_45;MIN_NET_40</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Platform)' == '4.0' ">
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-    <DefineConstants>NET_40;MIN_NET_40</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Platform)' == '3.5' ">
-    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
-    <DefineConstants>NET_35</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Platform)' == '3.0' ">
-    <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
-    <DefineConstants>NET_30</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Platform)' == '2.0' ">
-    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
-    <DefineConstants>NET_20</DefineConstants>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
-    <Optimize>false</Optimize>
-    <DefineConstants>$(DefineConstants);DEBUG;CODE_ANALYSIS</DefineConstants>
-    <RunCodeAnalysis>True</RunCodeAnalysis>
-    <DebugType>Full</DebugType>
-    <DebugSymbols>true</DebugSymbols>
-    <CodeAnalysisRules>-Microsoft.Design#CA2210;-Microsoft.Usage#CA2233</CodeAnalysisRules>
-  </PropertyGroup>
-  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
-    <Optimize>true</Optimize>
-    <DebugType>None</DebugType>
-    <DebugSymbols>false</DebugSymbols>
-    <RunCodeAnalysis>False</RunCodeAnalysis>
-    <CodeAnalysisRules>-Microsoft.Performance#CA1822;-Microsoft.Usage#CA2233</CodeAnalysisRules>
-  </PropertyGroup>
-  <ItemGroup>
-    <Reference Include="Mnemosyne">
-      <HintPath>..\packages\Mnemosyne.1.0.0.1\lib\Mnemosyne.dll</HintPath>
-    </Reference>
-    <Reference Include="System" />
-  </ItemGroup>
-  <ItemGroup Condition=" '$(Platform)' == '4.5.1' ">
-    <Reference Include="SpookilySharp">
-      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net451\SpookilySharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup Condition=" '$(Platform)' == '4.5' ">
-    <Reference Include="SpookilySharp">
-      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net45\SpookilySharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup Condition=" '$(Platform)' == '4.0' ">
-    <Reference Include="SpookilySharp">
-      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net40\SpookilySharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup Condition=" '$(Platform)' == '3.5' ">
-    <Reference Include="SpookilySharp">
-      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net35\SpookilySharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup Condition=" '$(Platform)' == '3.0' ">
-    <Reference Include="SpookilySharp">
-      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net30\SpookilySharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup Condition=" '$(Platform)' == '2.0' ">
-    <Reference Include="SpookilySharp">
-      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net20\SpookilySharp.dll</HintPath>
-    </Reference>
-  </ItemGroup>
-  <ItemGroup>
-    <Compile Include="Collections\TrackedConcurrentQueue.cs" />
-    <Compile Include="Collections\LLStack.cs" />
-    <Compile Include="Collections\ThreadSafeDictionary.cs" />
-    <Compile Include="Collections\ThreadSafeSet.cs" />
-    <Compile Include="Counter.cs" />
-    <Compile Include="SinglyLinkedNode.cs" />
-    <Compile Include="Strings.cs" />
-    <Compile Include="Pool.cs" />
-    <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="Validation.cs" />
-    <Compile Include="SharedInt32.cs" />
-    <Compile Include="Collections\UniqueElementProducerConsumer.cs" />
-    <Compile Include="Collections\SlimConcurrentQueue.cs" />
-    <Compile Include="Collections\GroupedProducerConsumer.cs" />
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="Resources\resources.resx">
-      <LogicalName>Ariadne.resources</LogicalName>
-    </EmbeddedResource>
-  </ItemGroup>
-  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
-  <ProjectExtensions>
-    <MonoDevelop>
-      <Properties>
-        <Policies>
-          <TextStylePolicy inheritsSet="null" scope="text/x-csharp" />
-          <CSharpFormattingPolicy IndentSwitchBody="True" SimplePropertyFormatting="ForceNewLine" AutoPropertyFormatting="ForceOneLine" IndentPreprocessorDirectives="False" AnonymousMethodBraceStyle="NextLine" PropertyBraceStyle="NextLine" PropertyGetBraceStyle="NextLine" PropertySetBraceStyle="NextLine" SimpleGetBlockFormatting="ForceOneLine" SimpleSetBlockFormatting="ForceOneLine" EventBraceStyle="NextLine" EventAddBraceStyle="NextLine" EventRemoveBraceStyle="NextLine" StatementBraceStyle="NextLine" ElseNewLinePlacement="NewLine" CatchNewLinePlacement="NewLine" FinallyNewLinePlacement="NewLine" BeforeMethodDeclarationParentheses="False" BeforeMethodCallParentheses="False" BeforeConstructorDeclarationParentheses="False" BeforeIndexerDeclarationBracket="False" BeforeDelegateDeclarationParentheses="False" AfterDelegateDeclarationParameterComma="True" NewParentheses="False" IfParentheses="False" WhileParentheses="False" ForParentheses="False" ForeachParentheses="False" CatchParentheses="False" SwitchParentheses="False" LockParentheses="False" UsingParentheses="False" SpaceAroundUnsafeArrowOperator="True" SpacesBeforeBrackets="False" BlankLinesBeforeUsings="1" BlankLinesAroundRegion="0" BlankLinesInsideRegion="0" MethodCallArgumentWrapping="WrapIfTooLong" NewLineAferMethodCallOpenParentheses="NewLine" MethodCallClosingParenthesesOnNewLine="SameLine" MethodDeclarationParameterWrapping="WrapIfTooLong" NewLineAferMethodDeclarationOpenParentheses="NewLine" MethodDeclarationClosingParenthesesOnNewLine="SameLine" AlignToFirstMethodDeclarationParameter="False" IndexerDeclarationParameterWrapping="WrapIfTooLong" NewLineAferIndexerDeclarationOpenBracket="NewLine" IndexerDeclarationClosingBracketOnNewLine="SameLine" AlignToFirstIndexerDeclarationParameter="False" IndexerArgumentWrapping="WrapIfTooLong" NewLineAferIndexerOpenBracket="NewLine" IndexerClosingBracketOnNewLine="SameLine" inheritsSet="Mono" inheritsScope="text/x-csharp" scope="text/x-csharp" />
-          <TextStylePolicy FileWidth="120" NoTabsAfterNonTabs="True" EolMarker="Unix" inheritsSet="VisualStudio" inheritsScope="text/plain" scope="text/plain" />
-          <TextStylePolicy inheritsSet="null" scope="application/xml" />
-          <XmlFormattingPolicy inheritsSet="Mono" inheritsScope="application/xml" scope="application/xml">
-            <DefaultFormat ContentIndentString="    " AttributesIndentString="    " />
-          </XmlFormattingPolicy>
-          <DotNetNamingPolicy DirectoryNamespaceAssociation="PrefixedHierarchical" ResourceNamePolicy="FileFormatDefault" />
-        </Policies>
-      </Properties>
-    </MonoDevelop>
-  </ProjectExtensions>
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">4.5.1</Platform>
+    <ProductVersion>9.0.21022</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{95CAF4E7-ADA0-471F-9930-C0F252D92368}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <RootNamespace>Ariadne</RootNamespace>
+    <AssemblyName>Ariadne</AssemblyName>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <CodePage>65001</CodePage>
+    <RunPostBuildEvent>OnBuildSuccess</RunPostBuildEvent>
+    <AllowUnsafeBlocks>False</AllowUnsafeBlocks>
+    <NoStdLib>False</NoStdLib>
+    <TreatWarningsAsErrors>false</TreatWarningsAsErrors>
+    <RunCodeAnalysis>False</RunCodeAnalysis>
+    <SourceAnalysisOverrideSettingsFile>Settings.SourceAnalysis</SourceAnalysisOverrideSettingsFile>
+    <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
+    <RunSourceAnalysis>False</RunSourceAnalysis>
+    <RegisterForComInterop>False</RegisterForComInterop>
+    <GenerateSerializationAssemblies>Auto</GenerateSerializationAssemblies>
+    <BaseAddress>9633792</BaseAddress>
+    <PlatformTarget>AnyCPU</PlatformTarget>
+    <FileAlignment>4096</FileAlignment>
+    <WarningLevel>4</WarningLevel>
+    <StartAction>Project</StartAction>
+    <NoWin32Manifest>False</NoWin32Manifest>
+    <BaseIntermediateOutputPath>obj\</BaseIntermediateOutputPath>
+    <IntermediateOutputPath>obj\$(Configuration)\$(Platform)\</IntermediateOutputPath>
+    <OutputPath>bin\$(Configuration)\$(Platform)\</OutputPath>
+    <DocumentationFile>$(OutputPath)\Ariadne.xml</DocumentationFile>
+    <ErrorReport>prompt</ErrorReport>
+    <ConsolePause>false</ConsolePause>
+    <LangVersion>5</LangVersion>
+    <Prefer32Bit>False</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Platform)' == '4.5.1' ">
+    <TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
+    <DefineConstants>NET_451;MIN_NET_40</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Platform)' == '4.5' ">
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+    <DefineConstants>NET_45;MIN_NET_40</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Platform)' == '4.0' ">
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <DefineConstants>NET_40;MIN_NET_40</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Platform)' == '3.5' ">
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+    <DefineConstants>NET_35</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Platform)' == '3.0' ">
+    <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+    <DefineConstants>NET_30</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Platform)' == '2.0' ">
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+    <DefineConstants>NET_20</DefineConstants>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
+    <Optimize>false</Optimize>
+    <DefineConstants>$(DefineConstants);DEBUG;CODE_ANALYSIS</DefineConstants>
+    <RunCodeAnalysis>True</RunCodeAnalysis>
+    <DebugType>Full</DebugType>
+    <DebugSymbols>true</DebugSymbols>
+    <CodeAnalysisRules>-Microsoft.Design#CA2210;-Microsoft.Usage#CA2233</CodeAnalysisRules>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
+    <Optimize>true</Optimize>
+    <DebugType>None</DebugType>
+    <DebugSymbols>false</DebugSymbols>
+    <RunCodeAnalysis>False</RunCodeAnalysis>
+    <CodeAnalysisRules>-Microsoft.Performance#CA1822;-Microsoft.Usage#CA2233</CodeAnalysisRules>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|4.5.1' ">
+    <TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|4.5.1' ">
+    <TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|4.5' ">
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|4.5' ">
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|4.0' ">
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|4.0' ">
+    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|3.5' ">
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|3.5' ">
+    <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|3.0' ">
+    <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|3.0' ">
+    <TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|2.0' ">
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|2.0' ">
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Mnemosyne">
+      <HintPath>..\packages\Mnemosyne.1.0.0.1\lib\Mnemosyne.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+  </ItemGroup>
+  <ItemGroup Condition=" '$(Platform)' == '4.5.1' ">
+    <Reference Include="SpookilySharp">
+      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net451\SpookilySharp.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup Condition=" '$(Platform)' == '4.5' ">
+    <Reference Include="SpookilySharp">
+      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net45\SpookilySharp.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup Condition=" '$(Platform)' == '4.0' ">
+    <Reference Include="SpookilySharp">
+      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net40\SpookilySharp.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup Condition=" '$(Platform)' == '3.5' ">
+    <Reference Include="SpookilySharp">
+      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net35\SpookilySharp.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup Condition=" '$(Platform)' == '3.0' ">
+    <Reference Include="SpookilySharp">
+      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net30\SpookilySharp.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup Condition=" '$(Platform)' == '2.0' ">
+    <Reference Include="SpookilySharp">
+      <HintPath>..\packages\SpookilySharp.1.1.5128\lib\net30\SpookilySharp.dll</HintPath>
+    </Reference>
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Collections\TrackedConcurrentQueue.cs" />
+    <Compile Include="Collections\LLStack.cs" />
+    <Compile Include="Collections\ThreadSafeDictionary.cs" />
+    <Compile Include="Collections\ThreadSafeSet.cs" />
+    <Compile Include="Counter.cs" />
+    <Compile Include="SinglyLinkedNode.cs" />
+    <Compile Include="Strings.cs" />
+    <Compile Include="Pool.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Validation.cs" />
+    <Compile Include="SharedInt32.cs" />
+    <Compile Include="Collections\UniqueElementProducerConsumer.cs" />
+    <Compile Include="Collections\SlimConcurrentQueue.cs" />
+    <Compile Include="Collections\GroupedProducerConsumer.cs" />
+    <Compile Include="DebuggerProxies\DictionaryDebugView.cs" />
+    <Compile Include="DebuggerProxies\CollectionDebugView.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Resources\resources.resx">
+      <LogicalName>Ariadne.resources</LogicalName>
+    </EmbeddedResource>
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ProjectExtensions>
+    <MonoDevelop>
+      <Properties>
+        <Policies>
+          <TextStylePolicy inheritsSet="null" scope="text/x-csharp" />
+          <CSharpFormattingPolicy IndentSwitchBody="True" SimplePropertyFormatting="ForceNewLine" AutoPropertyFormatting="ForceOneLine" IndentPreprocessorDirectives="False" AnonymousMethodBraceStyle="NextLine" PropertyBraceStyle="NextLine" PropertyGetBraceStyle="NextLine" PropertySetBraceStyle="NextLine" SimpleGetBlockFormatting="ForceOneLine" SimpleSetBlockFormatting="ForceOneLine" EventBraceStyle="NextLine" EventAddBraceStyle="NextLine" EventRemoveBraceStyle="NextLine" StatementBraceStyle="NextLine" ElseNewLinePlacement="NewLine" CatchNewLinePlacement="NewLine" FinallyNewLinePlacement="NewLine" BeforeMethodDeclarationParentheses="False" BeforeMethodCallParentheses="False" BeforeConstructorDeclarationParentheses="False" BeforeIndexerDeclarationBracket="False" BeforeDelegateDeclarationParentheses="False" AfterDelegateDeclarationParameterComma="True" NewParentheses="False" IfParentheses="False" WhileParentheses="False" ForParentheses="False" ForeachParentheses="False" CatchParentheses="False" SwitchParentheses="False" LockParentheses="False" UsingParentheses="False" SpaceAroundUnsafeArrowOperator="True" SpacesBeforeBrackets="False" BlankLinesBeforeUsings="1" BlankLinesAroundRegion="0" BlankLinesInsideRegion="0" MethodCallArgumentWrapping="WrapIfTooLong" NewLineAferMethodCallOpenParentheses="NewLine" MethodCallClosingParenthesesOnNewLine="SameLine" MethodDeclarationParameterWrapping="WrapIfTooLong" NewLineAferMethodDeclarationOpenParentheses="NewLine" MethodDeclarationClosingParenthesesOnNewLine="SameLine" AlignToFirstMethodDeclarationParameter="False" IndexerDeclarationParameterWrapping="WrapIfTooLong" NewLineAferIndexerDeclarationOpenBracket="NewLine" IndexerDeclarationClosingBracketOnNewLine="SameLine" AlignToFirstIndexerDeclarationParameter="False" IndexerArgumentWrapping="WrapIfTooLong" NewLineAferIndexerOpenBracket="NewLine" IndexerClosingBracketOnNewLine="SameLine" inheritsSet="Mono" inheritsScope="text/x-csharp" scope="text/x-csharp" />
+          <TextStylePolicy FileWidth="120" NoTabsAfterNonTabs="True" EolMarker="Unix" inheritsSet="VisualStudio" inheritsScope="text/plain" scope="text/plain" />
+          <TextStylePolicy inheritsSet="null" scope="application/xml" />
+          <XmlFormattingPolicy inheritsSet="Mono" inheritsScope="application/xml" scope="application/xml">
+            <DefaultFormat ContentIndentString="    " AttributesIndentString="    " />
+          </XmlFormattingPolicy>
+          <DotNetNamingPolicy DirectoryNamespaceAssociation="PrefixedHierarchical" ResourceNamePolicy="FileFormatDefault" />
+        </Policies>
+      </Properties>
+    </MonoDevelop>
+  </ProjectExtensions>
 </Project>

File Ariadne/Collections/GroupedProducerConsumer.cs

 
 namespace Ariadne.Collections
 {
-    
+    /// <summary>A producer consumer that atomically delivers all pending items as a single enumeration./// </summary>
     public class GroupedProducerConsumer<T> : IProducerConsumerCollection<IEnumerable<T>>
     {
         private readonly SlimConcurrentQueue<T> _backing;
+        /// <summary>
+        /// Initialises a new instance of the <see cref="Ariadne.Collections.GroupedProducerConsumer{T}"/> class.
+        /// </summary>
         public GroupedProducerConsumer()
         {
             _backing = new SlimConcurrentQueue<T>();
         }
-        public void CopyTo(IEnumerable<T>[] array, int index)
+        void IProducerConsumerCollection<IEnumerable<T>>.CopyTo(IEnumerable<T>[] array, int index)
         {
             Validation.CopyTo(array, index);
             array[index] = _backing.Snapshot();
         }
+        /// <summary>Add a single item.</summary>
+        /// <param name="item">Item to add.</param>
         public void Add(T item)
         {
             _backing.Enqueue(item);
         }
+        /// <summary>Add a sequence of items.</summary>
+        /// <param name="item"><see cref="IEnumerable{T}"/> of the items to add.</param>
+        /// <remarks>The items are added as a single atomic operation.</remarks>
         public void Add(IEnumerable<T> item)
         {
             _backing.EnqueueRange(item);
             _backing.EnqueueRange(item);
             return true;
         }
+        /// <summary>Attempt to remove a single item, obtaining the item.</summary>
+        /// <returns>True if an item was removed, false if the collection was empty.</returns>
+        /// <param name="item">The item removed.</param>
         public bool TryTake(out T item)
         {
             return _backing.TryDequeue(out item);
         }
+        /// <summary>Attempt to remove all contained items, obtaining an enumeration of the items.</summary>
+        /// <returns>True if the items were removed, false if the collection was empty.</returns>
+        /// <param name="item">The items removed.</param>
+        /// <remarks>The items will all be removed as a single atomic operation.</remarks>
         public bool TryTake(out IEnumerable<T> item)
         {
             var ret = _backing.AtomicDequeueAll();
             item = ret;
             return true;
         }
-        public IEnumerable<T>[] ToArray()
+        IEnumerable<T>[] IProducerConsumerCollection<IEnumerable<T>>.ToArray()
         {
             return new IEnumerable<T>[]{ _backing.Snapshot() };
         }
         void ICollection.CopyTo(Array array, int index)
         {
             Validation.CopyTo(array, index);
-            ToArray().CopyTo(array, index);
+            array.SetValue(_backing.Snapshot(), index);
         }
         /// <summary>Gets the number of items in the collection.</summary>
         /// <value>1 if there is a sequence of items contained, 0 otherwise.</value>
-        /// <remarks>Since all items are retrieved as a single batch, this cannot be more than 1.</remarks>
+        /// <remarks>Since all items are retrieved as a single batch, this cannot be more than 1; adding more items just
+        /// increases the size of the single sequence contained.</remarks>
         public int Count
         {
             get { return _backing.IsEmpty ? 0 : 1; }
         {
             get { return false; }
         }
-        public struct Enumerator : IEnumerator<SlimConcurrentQueue<T>.SnapshotEnumerable>, IEnumerator<IEnumerable<T>>
+        private class Enumerator : IEnumerator<SlimConcurrentQueue<T>.SnapshotEnumerable>, IEnumerator<IEnumerable<T>>
         {
             private readonly SlimConcurrentQueue<T> _queue;
             private bool _moved;
                 // nop
             }
         }
-        public Enumerator GetEnumerator()
+        private Enumerator GetEnumerator()
         {
             return new Enumerator(_backing);
         }

File Ariadne/Collections/SlimConcurrentQueue.cs

 
 using System;
 using System.Collections;
-using System.Collections.Concurrent;
 using System.Collections.Generic;
 using System.Runtime.Serialization;
 using System.Security;

File Ariadne/Collections/ThreadSafeDictionary.cs

-// © 2011–2014 Jon Hanna.
+// © 2011–2014 Jon Hanna.
 // Licensed under the EUPL, Version 1.1 only (the “Licence”).
 // You may not use, modify or distribute this work except in compliance with the Licence.
 // You may obtain a copy of the Licence at:
     /// <typeparam name="TValue">The type of the values in the dictionary.</typeparam>
     /// <threadsafety static="true" instance="true"/>
     [Serializable]
+    [DebuggerDisplay("Count = {Count}")]
+    [DebuggerTypeProxy(typeof(DebuggerProxies.DictionaryDebugView<,>))]
     public sealed class ThreadSafeDictionary<TKey, TValue> : IDictionary<TKey, TValue>, ICloneable, ISerializable
     {
         private const int ReprobeLowerBound = 6;
         /// <remarks>The collection is "live" and immediately reflects changes in the dictionary.</remarks>
         /// <threadsafety static="true" instance="true"/>
         /// <tocexclude/>
+        [DebuggerDisplay("Count = {Count}")]
+        [DebuggerTypeProxy(typeof(DebuggerProxies.CollectionDebugView<>))]
         public struct ValueCollection : ICollection<TValue>
         {
             private readonly ThreadSafeDictionary<TKey, TValue> _dict;
         /// <remarks>The collection is "live" and immediately reflects changes in the dictionary.</remarks>
         /// <threadsafety static="true" instance="true"/>
         /// <tocexclude/>
+        [DebuggerDisplay("Count = {Count}")]
+        [DebuggerTypeProxy(typeof(DebuggerProxies.CollectionDebugView<>))]
         public struct KeyCollection : ICollection<TKey>
         {
             private readonly ThreadSafeDictionary<TKey, TValue> _dict;

File Ariadne/Collections/ThreadSafeSet.cs

     /// <typeparam name="T">The type of the values stored.</typeparam>
     /// <threadsafety static="true" instance="true"/>
     [Serializable]
+    [DebuggerDisplay("Count = {Count}")]
+    [DebuggerTypeProxy(typeof(DebuggerProxies.CollectionDebugView<>))]
     public sealed class ThreadSafeSet<T> : ISet<T>, ICloneable, ISerializable
     {
         private const int ReprobeLowerBound = 5;

File Ariadne/Collections/TrackedConcurrentQueue.cs

     /// <typeparam name="T">The type of the values stored.</typeparam>
     /// <threadsafety static="true" instance="true"/>
     [Serializable]
+    [DebuggerDisplay("Count = {Count}")]
+    [DebuggerTypeProxy(typeof(DebuggerProxies.CollectionDebugView<>))]
     public sealed class TrackedConcurrentQueue<T> : IProducerConsumerCollection<T>
     {
         private readonly SlimConcurrentQueue<T> _backing;

File Ariadne/DebuggerProxies/CollectionDebugView.cs

+// CollectionDebugView.cs
+//
+// Author:
+//     Jon Hanna <jon@hackcraft.net>
+//
+// © 2014 Jon Hanna
+//
+// Licensed under the EUPL, Version 1.1 only (the “Licence”).
+// You may not use, modify or distribute this work except in compliance with the Licence.
+// You may obtain a copy of the Licence at:
+// <http://joinup.ec.europa.eu/software/page/eupl/licence-eupl>
+// A copy is also distributed with this source code.
+// Unless required by applicable law or agreed to in writing, software distributed under the
+// Licence is distributed on an “AS IS” basis, without warranties or conditions of any kind.
+
+using System.Collections.Generic;
+using System.Diagnostics;
+
+namespace Ariadne.DebuggerProxies
+{
+    internal class CollectionDebugView<T>
+    {
+        private readonly ICollection<T> _collection;
+        public CollectionDebugView(ICollection<T> collection)
+        {
+            _collection = collection;
+        }
+        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+        public T[] Items
+        {
+            get { return new List<T>(_collection).ToArray(); }
+        }
+    }
+}

File Ariadne/DebuggerProxies/DictionaryDebugView.cs

+// DictionaryDebugView.cs
+//
+// Author:
+//     Jon Hanna <jon@hackcraft.net>
+//
+// © 2014 Jon Hanna
+//
+// Licensed under the EUPL, Version 1.1 only (the “Licence”).
+// You may not use, modify or distribute this work except in compliance with the Licence.
+// You may obtain a copy of the Licence at:
+// <http://joinup.ec.europa.eu/software/page/eupl/licence-eupl>
+// A copy is also distributed with this source code.
+// Unless required by applicable law or agreed to in writing, software distributed under the
+// Licence is distributed on an “AS IS” basis, without warranties or conditions of any kind.
+
+using System.Collections.Generic;
+using System.Diagnostics;
+
+namespace Ariadne.DebuggerProxies
+{
+    internal class DictionaryDebugView<TKey, TValue>
+    {
+        private readonly IDictionary<TKey, TValue> _dict;
+        public DictionaryDebugView(IDictionary<TKey, TValue> dictionary)
+        {
+            _dict = dictionary;
+        }
+        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
+        public KeyValuePair<TKey, TValue>[] Items
+        {
+            get { return new List<KeyValuePair<TKey, TValue>>(_dict).ToArray(); }
+        }
+    }
+}
+

File NUnitTests/ThreadSafeDictionaryTests.cs

         [TestFixture]
         public class SingleThreaded
         {
-        	protected const int SourceDataLen = 131072 * 32;
+        	protected const int SourceDataLen = 131072;
         	protected static string[] SourceData = new string[SourceDataLen];
         	[TestFixtureSetUpAttribute]
             public void FillSourceData()
         {
             public abstract class MultiThreadTests
         	{
-            	protected const int SourceDataLen = 0x400000;
+            	protected const int SourceDataLen = 0x40000;
             	protected static string[] SourceData = new string[SourceDataLen];
                 public void FillSourceData()
                 {

File NUnitTests/ThreadSafeSetTests.cs

     [TestFixture]
     public class ThreadSafeSetTests
     {
-    	protected const int SourceDataLen = 131072 * 16;
+    	protected const int SourceDataLen = 131072;
     	protected static string[] SourceData = new string[SourceDataLen];
     	private HashSet<string> FilledStringCompareSet;
     	[TestFixtureSetUpAttribute]