diff --git a/compiler/cpp/src/generate/t_csharp_generator.cc b/compiler/cpp/src/generate/t_csharp_generator.cc
index 2463c46..df1d59c 100644
--- a/compiler/cpp/src/generate/t_csharp_generator.cc
+++ b/compiler/cpp/src/generate/t_csharp_generator.cc
@@ -145,7 +145,8 @@
     "using System.Collections.Generic;\n" +
     "using System.Text;\n" +
     "using System.IO;\n" +
-    "using Thrift;\n";
+    "using Thrift;\n" +
+    "using Thrift.Collections;\n";
 }
 
 string t_csharp_generator::csharp_thrift_usings() {
@@ -1534,7 +1535,7 @@
       ", " + type_name(tmap->get_val_type(), true) + ">";
   } else if (ttype->is_set()) {
     t_set* tset = (t_set*) ttype;
-    return "HashSet<" + type_name(tset->get_elem_type(), true) + ">";
+    return "THashSet<" + type_name(tset->get_elem_type(), true) + ">";
   } else if (ttype->is_list()) {
     t_list* tlist = (t_list*) ttype;
     return "List<" + type_name(tlist->get_elem_type(), true) + ">";
diff --git a/configure.ac b/configure.ac
index f88bf49..040ae06 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,9 +41,11 @@
 
 AX_THRIFT_LIB(csharp, [C#], yes)
 if test "$with_csharp" = "yes";  then
-  PKG_CHECK_MODULES(MONO, mono >= 1.2.6, have_mono=yes, have_mono=no)
+  PKG_CHECK_MODULES(MONO, mono >= 2.0.0, net_3_5=yes, net_3_5=no)
+  PKG_CHECK_MODULES(MONO, mono >= 1.2.4, have_mono=yes, have_mono=no)
 fi
 AM_CONDITIONAL(WITH_MONO, [test "$have_mono" = "yes"])
+AM_CONDITIONAL(NET_2_0, [test "$net_3_5" = "no"])
 
 AX_THRIFT_LIB(java, [Java], yes)
 if test "$with_java" = "yes";  then
diff --git a/lib/csharp/Makefile.am b/lib/csharp/Makefile.am
index 710cd12..4ceb9e0 100644
--- a/lib/csharp/Makefile.am
+++ b/lib/csharp/Makefile.am
@@ -1,4 +1,5 @@
 THRIFTCODE= \
+            src/Collections/THashSet.cs \
             src/Protocol/TBase.cs \
             src/Protocol/TProtocolException.cs \
             src/Protocol/TProtocolFactory.cs \
@@ -31,10 +32,14 @@
 
 CSC=gmcs
 
+if NET_2_0
+MONO_DEFINES=/d:NET_2_0
+endif
+
 all-local: Thrift.dll
 
 Thrift.dll: $(THRIFTCODE)
-	$(CSC) $(THRIFTCODE) /out:Thrift.dll /target:library /langversion:linq
+	$(CSC) $(THRIFTCODE) /out:Thrift.dll /target:library $(MONO_DEFINES)
 
 clean-local:
 	$(RM) Thrift.dll
diff --git a/lib/csharp/src/Collections/THashSet.cs b/lib/csharp/src/Collections/THashSet.cs
new file mode 100644
index 0000000..51a09b5
--- /dev/null
+++ b/lib/csharp/src/Collections/THashSet.cs
@@ -0,0 +1,142 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+
+namespace Thrift.Collections
+{
+	public class THashSet<T> : ICollection<T>
+	{
+#if NET_2_0
+		TDictSet<T> set = new TDictSet<T>();
+#else
+		HashSet<T> set = new HashSet<T>();
+#endif
+		public int Count
+		{
+			get { return set.Count; }
+		}
+
+		public bool IsReadOnly
+		{
+			get { return set.IsReadOnly; }
+		}
+
+		public void Add(T item)
+		{
+			set.Add(item);
+		}
+
+		public void Clear()
+		{
+			set.Clear();
+		}
+
+		public bool Contains(T item)
+		{
+			return set.Contains(item);
+		}
+
+		public void CopyTo(T[] array, int arrayIndex)
+		{
+			set.CopyTo(array, arrayIndex);
+		}
+
+		public IEnumerator GetEnumerator()
+		{
+			return set.GetEnumerator();
+		}
+
+		IEnumerator<T> IEnumerable<T>.GetEnumerator()
+		{
+			return ((IEnumerable<T>)set).GetEnumerator();
+		}
+
+		public bool Remove(T item)
+		{
+			return set.Remove(item);
+		}
+
+#if NET_2_0
+		private class TDictSet<V> : ICollection<V>
+		{
+			Dictionary<V, TDictSet<V>> dict = new Dictionary<V, TDictSet<V>>();
+
+			public int Count
+			{
+				get { return dict.Count; }
+			}
+
+			public bool IsReadOnly
+			{
+				get { return false; }
+			}
+
+			public IEnumerator GetEnumerator()
+			{
+				return ((IEnumerable)dict.Keys).GetEnumerator();
+			}
+
+			IEnumerator<V> IEnumerable<V>.GetEnumerator()
+			{
+				return dict.Keys.GetEnumerator();
+			}
+
+			public bool Add(V item)
+			{
+				if (!dict.ContainsKey(item))
+				{
+					dict[item] = this;
+					return true;
+				}
+
+				return false;
+			}
+
+			void ICollection<V>.Add(V item)
+			{
+				Add(item);
+			}
+
+			public void Clear()
+			{
+				dict.Clear();
+			}
+
+			public bool Contains(V item)
+			{
+				return dict.ContainsKey(item);
+			}
+
+			public void CopyTo(V[] array, int arrayIndex)
+			{
+				dict.Keys.CopyTo(array, arrayIndex);
+			}
+
+			public bool Remove(V item)
+			{
+				return dict.Remove(item);
+			}
+		}
+#endif
+	}
+
+}
diff --git a/lib/csharp/src/Protocol/TBinaryProtocol.cs b/lib/csharp/src/Protocol/TBinaryProtocol.cs
index 5df2021..2f2f4a1 100644
--- a/lib/csharp/src/Protocol/TBinaryProtocol.cs
+++ b/lib/csharp/src/Protocol/TBinaryProtocol.cs
@@ -12,7 +12,6 @@
 //  http://developers.facebook.com/thrift/using
 
 using System;
-using System.Collections.Generic;
 using System.Text;
 using Thrift.Transport;
 
diff --git a/lib/csharp/src/Protocol/TField.cs b/lib/csharp/src/Protocol/TField.cs
index 93c0738..bda1760 100644
--- a/lib/csharp/src/Protocol/TField.cs
+++ b/lib/csharp/src/Protocol/TField.cs
@@ -18,30 +18,34 @@
 {
 	public struct TField
 	{
+		private string name;
+		private TType type;
+		private short id;
+
 		public TField(string name, TType type, short id)
 			:this()
 		{
-			Name = name;
-			Type = type;
-			ID = id;
+			this.name = name;
+			this.type = type;
+			this.id = id;
 		}
 
 		public string Name
 		{
-			get;
-			set;
+			get { return name; }
+			set { name = value; }
 		}
 
 		public TType Type
 		{
-			get;
-			set;
+			get { return type; }
+			set { type = value; }
 		}
 
 		public short ID
 		{
-			get;
-			set;
+			get { return id; }
+			set { id = value; }
 		}
 	}
 }
diff --git a/lib/csharp/src/Protocol/TList.cs b/lib/csharp/src/Protocol/TList.cs
index ccce522..5e4fa39 100644
--- a/lib/csharp/src/Protocol/TList.cs
+++ b/lib/csharp/src/Protocol/TList.cs
@@ -18,23 +18,26 @@
 {
 	public struct TList
 	{
+		private TType elementType;
+		private int count;
+
 		public TList(TType elementType, int count)
 			:this()
 		{
-			ElementType = elementType;
-			Count = count;
+			this.elementType = elementType;
+			this.count = count;
 		}
 
 		public TType ElementType
 		{
-			get;
-			set;
+			get { return elementType; }
+			set { elementType = value; }
 		}
 
 		public int Count
 		{
-			get;
-			set;
+			get { return count; }
+			set { count = value; }
 		}
 	}
 }
diff --git a/lib/csharp/src/Protocol/TMap.cs b/lib/csharp/src/Protocol/TMap.cs
index a71e52a..4813027 100644
--- a/lib/csharp/src/Protocol/TMap.cs
+++ b/lib/csharp/src/Protocol/TMap.cs
@@ -18,30 +18,34 @@
 {
 	public struct TMap
 	{
+		private TType keyType;
+		private TType valueType;
+		private int count;
+
 		public TMap(TType keyType, TType valueType, int count)
 			:this()
 		{
-			KeyType = keyType;
-			ValueType = valueType;
-			Count = count;
+			this.keyType = keyType;
+			this.valueType = valueType;
+			this.count = count;
 		}
 
 		public TType KeyType
 		{
-			get;
-			set;
+			get { return keyType; }
+			set { keyType = value; }
 		}
 
 		public TType ValueType
 		{
-			get;
-			set;
+			get { return valueType; }
+			set { valueType = value; }
 		}
 
 		public int Count
 		{
-			get;
-			set;
+			get { return count; }
+			set { count = value; }
 		}
 	}
 }
diff --git a/lib/csharp/src/Protocol/TMessage.cs b/lib/csharp/src/Protocol/TMessage.cs
index 15dfce0..3818da0 100644
--- a/lib/csharp/src/Protocol/TMessage.cs
+++ b/lib/csharp/src/Protocol/TMessage.cs
@@ -18,30 +18,34 @@
 {
 	public struct TMessage
 	{
+		private string name;
+		private TMessageType type;
+		private int seqID;
+
 		public TMessage(string name, TMessageType type, int seqid)
 			:this()
 		{
-			Name = name;
-			Type = type;
-			SeqID = seqid;
+			this.name = name;
+			this.type = type;
+			this.seqID = seqid;
 		}
 
 		public string Name
 		{
-			get;
-			set;
+			get { return name; }
+			set { name = value; }
 		}
 
 		public TMessageType Type
 		{
-			get;
-			set;
+			get { return type; }
+			set { type = value; }
 		}
 
 		public int SeqID
 		{
-			get;
-			set;
+			get { return seqID; }
+			set { seqID = value; }
 		}
 	}
 }
diff --git a/lib/csharp/src/Protocol/TMessageType.cs b/lib/csharp/src/Protocol/TMessageType.cs
index 6e6ead7..d458d53 100644
--- a/lib/csharp/src/Protocol/TMessageType.cs
+++ b/lib/csharp/src/Protocol/TMessageType.cs
@@ -11,8 +11,6 @@
 //  http://developers.facebook.com/thrift/using
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 
 namespace Thrift.Protocol
 {
diff --git a/lib/csharp/src/Protocol/TProtocol.cs b/lib/csharp/src/Protocol/TProtocol.cs
index 2702ad8..6e48fac 100644
--- a/lib/csharp/src/Protocol/TProtocol.cs
+++ b/lib/csharp/src/Protocol/TProtocol.cs
@@ -11,7 +11,6 @@
 //  http://developers.facebook.com/thrift/using
 
 using System;
-using System.Collections.Generic;
 using System.Text;
 using Thrift.Transport;
 
diff --git a/lib/csharp/src/Protocol/TProtocolException.cs b/lib/csharp/src/Protocol/TProtocolException.cs
index db38d88..f43a7cc 100644
--- a/lib/csharp/src/Protocol/TProtocolException.cs
+++ b/lib/csharp/src/Protocol/TProtocolException.cs
@@ -1,6 +1,4 @@
 using System;
-using System.Collections.Generic;
-using System.Text;
 
 namespace Thrift.Protocol
 {
diff --git a/lib/csharp/src/Protocol/TProtocolFactory.cs b/lib/csharp/src/Protocol/TProtocolFactory.cs
index 756bb5e..4e15bb1 100644
--- a/lib/csharp/src/Protocol/TProtocolFactory.cs
+++ b/lib/csharp/src/Protocol/TProtocolFactory.cs
@@ -10,8 +10,6 @@
 //  See accompanying file LICENSE or visit the Thrift site at:
 //  http://developers.facebook.com/thrift/using
 using System;
-using System.Collections.Generic;
-using System.Text;
 using Thrift.Transport;
 
 namespace Thrift.Protocol
diff --git a/lib/csharp/src/Protocol/TProtocolUtil.cs b/lib/csharp/src/Protocol/TProtocolUtil.cs
index a65ea0f..577182c 100644
--- a/lib/csharp/src/Protocol/TProtocolUtil.cs
+++ b/lib/csharp/src/Protocol/TProtocolUtil.cs
@@ -11,8 +11,6 @@
 //  http://developers.facebook.com/thrift/using
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 
 namespace Thrift.Protocol
 {
diff --git a/lib/csharp/src/Protocol/TSet.cs b/lib/csharp/src/Protocol/TSet.cs
index 0bfc29e..cdf3849 100644
--- a/lib/csharp/src/Protocol/TSet.cs
+++ b/lib/csharp/src/Protocol/TSet.cs
@@ -18,23 +18,26 @@
 {
 	public struct TSet
 	{
+		private TType elementType;
+		private int count;
+
 		public TSet(TType elementType, int count)
 			:this()
 		{
-			ElementType = elementType;
-			Count = count;
+			this.elementType = elementType;
+			this.count = count;
 		}
 
 		public TType ElementType
 		{
-			get;
-			set;
+			get { return elementType; }
+			set { elementType = value; }
 		}
 
 		public int Count
 		{
-			get;
-			set;
+			get { return count; }
+			set { count = value; }
 		}
 	}
 }
diff --git a/lib/csharp/src/Protocol/TStruct.cs b/lib/csharp/src/Protocol/TStruct.cs
index 62f60fd..1a7d572 100644
--- a/lib/csharp/src/Protocol/TStruct.cs
+++ b/lib/csharp/src/Protocol/TStruct.cs
@@ -17,16 +17,18 @@
 {
 	public struct TStruct
 	{
+		private string name;
+
 		public TStruct(string name)
 			:this()
 		{
-			Name = name;
+			this.name = name;
 		}
 
 		public string Name
 		{
-			get;
-			set;
+			get { return name; }
+			set { name = value; }
 		}
 	}
 }
diff --git a/lib/csharp/src/Protocol/TType.cs b/lib/csharp/src/Protocol/TType.cs
index 257ac6b..5cc6178 100644
--- a/lib/csharp/src/Protocol/TType.cs
+++ b/lib/csharp/src/Protocol/TType.cs
@@ -11,8 +11,6 @@
 //  http://developers.facebook.com/thrift/using
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 
 namespace Thrift.Protocol
 {
diff --git a/lib/csharp/src/Server/TServer.cs b/lib/csharp/src/Server/TServer.cs
index afb2b9f..f5f617a 100644
--- a/lib/csharp/src/Server/TServer.cs
+++ b/lib/csharp/src/Server/TServer.cs
@@ -11,7 +11,6 @@
 //  http://developers.facebook.com/thrift/using
 
 using System;
-using System.Collections.Generic;
 using Thrift.Protocol;
 using Thrift.Transport;
 using System.IO;
diff --git a/lib/csharp/src/Server/TSimpleServer.cs b/lib/csharp/src/Server/TSimpleServer.cs
index 95f3962..912b4a3 100644
--- a/lib/csharp/src/Server/TSimpleServer.cs
+++ b/lib/csharp/src/Server/TSimpleServer.cs
@@ -10,8 +10,6 @@
 //  See accompanying file LICENSE or visit the Thrift site at:
 //  http://developers.facebook.com/thrift/using
 using System;
-using System.Collections.Generic;
-using System.Text;
 using Thrift.Transport;
 using Thrift.Protocol;
 
diff --git a/lib/csharp/src/Server/TThreadPoolServer.cs b/lib/csharp/src/Server/TThreadPoolServer.cs
index b44487f..e3c5cde 100644
--- a/lib/csharp/src/Server/TThreadPoolServer.cs
+++ b/lib/csharp/src/Server/TThreadPoolServer.cs
@@ -10,8 +10,6 @@
 //  See accompanying file LICENSE or visit the Thrift site at:
 //  http://developers.facebook.com/thrift/using
 using System;
-using System.Collections.Generic;
-using System.Text;
 using System.Threading;
 using Thrift.Protocol;
 using Thrift.Transport;
diff --git a/lib/csharp/src/Server/TThreadedServer.cs b/lib/csharp/src/Server/TThreadedServer.cs
index a4d33a5..2928f31 100644
--- a/lib/csharp/src/Server/TThreadedServer.cs
+++ b/lib/csharp/src/Server/TThreadedServer.cs
@@ -11,8 +11,8 @@
 //  http://developers.facebook.com/thrift/using
 using System;
 using System.Collections.Generic;
-using System.Text;
 using System.Threading;
+using Thrift.Collections;
 using Thrift.Protocol;
 using Thrift.Transport;
 
@@ -28,7 +28,7 @@
 		private readonly int maxThreads;
 
 		private Queue<TTransport> clientQueue;
-		private HashSet<Thread> clientThreads;
+		private THashSet<Thread> clientThreads;
 		private object clientLock;
 		private Thread workerThread;
 
@@ -73,7 +73,7 @@
 			this.maxThreads = maxThreads;
 			clientQueue = new Queue<TTransport>();
 			clientLock = new object();
-			clientThreads = new HashSet<Thread>();
+			clientThreads = new THashSet<Thread>();
 		}
 
 		/// <summary>
diff --git a/lib/csharp/src/TApplicationException.cs b/lib/csharp/src/TApplicationException.cs
index 4248664..cb3353b 100644
--- a/lib/csharp/src/TApplicationException.cs
+++ b/lib/csharp/src/TApplicationException.cs
@@ -11,8 +11,6 @@
 //  http://developers.facebook.com/thrift/using
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using Thrift.Protocol;
 
 namespace Thrift
diff --git a/lib/csharp/src/TProcessor.cs b/lib/csharp/src/TProcessor.cs
index 2cbddd7..679e3f6 100644
--- a/lib/csharp/src/TProcessor.cs
+++ b/lib/csharp/src/TProcessor.cs
@@ -11,8 +11,6 @@
 //  http://developers.facebook.com/thrift/using
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using Thrift.Protocol;
 
 namespace Thrift
diff --git a/lib/csharp/src/Thrift.csproj b/lib/csharp/src/Thrift.csproj
index 9f3f620..1eb4355 100644
--- a/lib/csharp/src/Thrift.csproj
+++ b/lib/csharp/src/Thrift.csproj
@@ -38,14 +38,9 @@
     <Reference Include="System.Core">
       <RequiredTargetFramework>3.5</RequiredTargetFramework>
     </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Data.DataSetExtensions" />
-    <Reference Include="System.Drawing" />
-    <Reference Include="System.Windows.Forms" />
-    <Reference Include="System.Xml" />
-    <Reference Include="System.Xml.Linq" />
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Collections\THashSet.cs" />
     <Compile Include="Protocol\TBase.cs" />
     <Compile Include="Protocol\TBinaryProtocol.cs" />
     <Compile Include="Protocol\TField.cs" />
diff --git a/lib/csharp/src/Transport/TBufferedTransport.cs b/lib/csharp/src/Transport/TBufferedTransport.cs
index 96a0741..bd4ba95 100644
--- a/lib/csharp/src/Transport/TBufferedTransport.cs
+++ b/lib/csharp/src/Transport/TBufferedTransport.cs
@@ -7,9 +7,6 @@
 //
 
 using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using System.IO;
 
 namespace Thrift.Transport
diff --git a/lib/csharp/src/Transport/TServerSocket.cs b/lib/csharp/src/Transport/TServerSocket.cs
index a6caf90..3559ce7 100644
--- a/lib/csharp/src/Transport/TServerSocket.cs
+++ b/lib/csharp/src/Transport/TServerSocket.cs
@@ -9,8 +9,6 @@
 //  All rights reserved.
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using System.Net.Sockets;
 
 
diff --git a/lib/csharp/src/Transport/TServerTransport.cs b/lib/csharp/src/Transport/TServerTransport.cs
index 6b05a15..bff62e1 100644
--- a/lib/csharp/src/Transport/TServerTransport.cs
+++ b/lib/csharp/src/Transport/TServerTransport.cs
@@ -8,8 +8,6 @@
 //  Copyright (C) 2007 imeem, inc. <http://www.imeem.com>
 //  All rights reserved.
 using System;
-using System.Collections.Generic;
-using System.Text;
 
 namespace Thrift.Transport
 {
diff --git a/lib/csharp/src/Transport/TSocket.cs b/lib/csharp/src/Transport/TSocket.cs
index c790fce..cc7eefd 100644
--- a/lib/csharp/src/Transport/TSocket.cs
+++ b/lib/csharp/src/Transport/TSocket.cs
@@ -10,8 +10,6 @@
 //
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using System.Net.Sockets;
 
 namespace Thrift.Transport
diff --git a/lib/csharp/src/Transport/TStreamTransport.cs b/lib/csharp/src/Transport/TStreamTransport.cs
index ca14ecf..f74f59a 100644
--- a/lib/csharp/src/Transport/TStreamTransport.cs
+++ b/lib/csharp/src/Transport/TStreamTransport.cs
@@ -10,8 +10,6 @@
 //
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using System.IO;
 
 namespace Thrift.Transport
diff --git a/lib/csharp/src/Transport/TTransport.cs b/lib/csharp/src/Transport/TTransport.cs
index 915cbc9..c95d98e 100644
--- a/lib/csharp/src/Transport/TTransport.cs
+++ b/lib/csharp/src/Transport/TTransport.cs
@@ -10,8 +10,6 @@
 //
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 
 namespace Thrift.Transport
 {
diff --git a/lib/csharp/src/Transport/TTransportException.cs b/lib/csharp/src/Transport/TTransportException.cs
index daf21d8..fa1f6b5 100644
--- a/lib/csharp/src/Transport/TTransportException.cs
+++ b/lib/csharp/src/Transport/TTransportException.cs
@@ -10,8 +10,6 @@
 //
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 
 namespace Thrift.Transport
 {
diff --git a/lib/csharp/src/Transport/TTransportFactory.cs b/lib/csharp/src/Transport/TTransportFactory.cs
index a0a6c2b..0280649 100644
--- a/lib/csharp/src/Transport/TTransportFactory.cs
+++ b/lib/csharp/src/Transport/TTransportFactory.cs
@@ -9,9 +9,6 @@
 //  All rights reserved.
 //
 using System;
-using System.Collections.Generic;
-using System.Text;
-
 
 namespace Thrift.Transport
 {
diff --git a/test/csharp/CSharpServer.cs b/test/csharp/CSharpServer.cs
index 32cc703..5eef03b 100644
--- a/test/csharp/CSharpServer.cs
+++ b/test/csharp/CSharpServer.cs
@@ -1,7 +1,5 @@
 ﻿using System;
 using System.Collections.Generic;
-using System.Linq;
-using System.Text;
 using Thrift.Server;
 using Thrift.Transport;
 
diff --git a/test/csharp/ThriftTest/Program.cs b/test/csharp/ThriftTest/Program.cs
index 09bd84f..3860525 100644
--- a/test/csharp/ThriftTest/Program.cs
+++ b/test/csharp/ThriftTest/Program.cs
@@ -4,8 +4,6 @@
 // http://developers.facebook.com/thrift/
 
 using System;
-using System.Collections.Generic;
-using System.Text;
 using Thrift.Transport;
 using Thrift.Protocol;
 using Thrift.Test; //generated code
diff --git a/test/csharp/ThriftTest/TestClient.cs b/test/csharp/ThriftTest/TestClient.cs
index bcdb00e..42b21b8 100644
--- a/test/csharp/ThriftTest/TestClient.cs
+++ b/test/csharp/ThriftTest/TestClient.cs
@@ -1,11 +1,10 @@
 using System;
 using System.Collections.Generic;
-using System.Text;
-
+using System.Threading;
+using Thrift.Collections;
 using Thrift.Protocol;
 using Thrift.Transport;
 using Thrift.Test;
-using System.Threading;
 
 namespace Test
 {
@@ -247,7 +246,7 @@
 			Console.WriteLine("}");
 
 			//set
-			HashSet<int> setout = new HashSet<int>();
+			THashSet<int> setout = new THashSet<int>();
 			for (int j = -2; j < 3; j++)
 			{
 				setout.Add(j);
@@ -268,7 +267,7 @@
 			}
 			Console.Write("})");
 
-			HashSet<int> setin = client.testSet(setout);
+			THashSet<int> setin = client.testSet(setout);
 
 			Console.Write(" = {");
 			first = true;
diff --git a/test/csharp/ThriftTest/TestServer.cs b/test/csharp/ThriftTest/TestServer.cs
index 4efe4b4..18952d4 100644
--- a/test/csharp/ThriftTest/TestServer.cs
+++ b/test/csharp/ThriftTest/TestServer.cs
@@ -4,9 +4,8 @@
 // http://developers.facebook.com/thrift/
 using System;
 using System.Collections.Generic;
-using System.Text;
+using Thrift.Collections;
 using Thrift.Test; //generated code
-
 using Thrift.Transport;
 using Thrift.Protocol;
 using Thrift.Server;
@@ -99,7 +98,7 @@
 				return thing;
 			}
 
-			public HashSet<int> testSet(HashSet<int> thing)
+			public THashSet<int> testSet(THashSet<int> thing)
 			{
 				Console.WriteLine("testSet({");
 				bool first = true;
@@ -305,10 +304,13 @@
 				TServer serverEngine;
 
 				// Simple Server
-				// serverEngine = new TSimpleServer(testProcessor, tServerSocket);
+				serverEngine = new TSimpleServer(testProcessor, tServerSocket);
 
 				// ThreadPool Server
-				serverEngine = new TThreadPoolServer(testProcessor, tServerSocket);
+				// serverEngine = new TThreadPoolServer(testProcessor, tServerSocket);
+
+				// Threaded Server
+				// serverEngine = new TThreadedServer(testProcessor, tServerSocket);
 
 				testHandler.server = serverEngine;
 
diff --git a/test/csharp/ThriftTest/ThriftTest.csproj b/test/csharp/ThriftTest/ThriftTest.csproj
index 8e61173..3f427fd 100644
--- a/test/csharp/ThriftTest/ThriftTest.csproj
+++ b/test/csharp/ThriftTest/ThriftTest.csproj
@@ -51,17 +51,6 @@
   </PropertyGroup>
   <ItemGroup>
     <Reference Include="System" />
-    <Reference Include="System.Core">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Xml.Linq">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data.DataSetExtensions">
-      <RequiredTargetFramework>3.5</RequiredTargetFramework>
-    </Reference>
-    <Reference Include="System.Data" />
-    <Reference Include="System.Xml" />
     <Reference Include="ThriftImpl, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
       <HintPath>.\ThriftImpl.dll</HintPath>
@@ -117,6 +106,6 @@
 
 cd $(ProjectDir)
 
-C:\Windows\Microsoft.NET\Framework\v3.5\Csc.exe /t:library /out:.\ThriftImpl.dll /recurse:.\gen-csharp\* /reference:$(ProjectDir)..\..\..\lib\csharp\src\bin\Debug\Thrift.dll</PreBuildEvent>
+$(MSBuildToolsPath)\Csc.exe /t:library /out:.\ThriftImpl.dll /recurse:.\gen-csharp\* /reference:$(ProjectDir)..\..\..\lib\csharp\src\bin\Debug\Thrift.dll</PreBuildEvent>
   </PropertyGroup>
 </Project>
diff --git a/test/csharp/ThriftTest/maketest.sh b/test/csharp/ThriftTest/maketest.sh
new file mode 100755
index 0000000..aab34b7
--- /dev/null
+++ b/test/csharp/ThriftTest/maketest.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+../../../compiler/cpp/thrift --gen csharp -o . ../../ThriftTest.thrift
+gmcs /t:library /out:./ThriftImpl.dll /recurse:./gen-csharp/* /reference:../../../lib/csharp/Thrift.dll
