diff --git a/src/csharp/GrpcApiTests/MathClientServerTests.cs b/src/csharp/GrpcApiTests/MathClientServerTests.cs
index aa78b698e85b7b832d07646151837c881942d7c9..9b51924713d5ec8c2258b7dade41c74509923018 100644
--- a/src/csharp/GrpcApiTests/MathClientServerTests.cs
+++ b/src/csharp/GrpcApiTests/MathClientServerTests.cs
@@ -13,7 +13,7 @@ namespace math.Tests
     /// </summary>
     public class MathClientServerTest
     {
-        string serverAddr = "localhost:" + PortPicker.PickUnusedPort();
+        string host = "localhost";
         Server server;
         Channel channel;
         MathGrpc.IMathServiceClient client;
@@ -23,9 +23,9 @@ namespace math.Tests
         {
             server = new Server();
             server.AddServiceDefinition(MathGrpc.BindService(new MathServiceImpl()));
-            server.AddPort(serverAddr);
+            int port = server.AddPort(host + ":0");
             server.Start();
-            channel = new Channel(serverAddr);
+            channel = new Channel(host + ":" + port);
             client = MathGrpc.NewStub(channel);
         }
 
diff --git a/src/csharp/GrpcCore/GrpcCore.csproj b/src/csharp/GrpcCore/GrpcCore.csproj
index 95df89091737dbbb5f264fb127e24da917ca9054..34b9f6dfb82ff66d945488cd68b465b949877ded 100644
--- a/src/csharp/GrpcCore/GrpcCore.csproj
+++ b/src/csharp/GrpcCore/GrpcCore.csproj
@@ -61,7 +61,6 @@
     <Compile Include="Marshaller.cs" />
     <Compile Include="ServerServiceDefinition.cs" />
     <Compile Include="Utils\RecordingObserver.cs" />
-    <Compile Include="Utils\PortPicker.cs" />
     <Compile Include="Utils\RecordingQueue.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
diff --git a/src/csharp/GrpcCore/Utils/PortPicker.cs b/src/csharp/GrpcCore/Utils/PortPicker.cs
deleted file mode 100644
index 7c83bf3886df21c81d39ef6a2b0998fecc6b5b9b..0000000000000000000000000000000000000000
--- a/src/csharp/GrpcCore/Utils/PortPicker.cs
+++ /dev/null
@@ -1,50 +0,0 @@
-using System;
-using System.Net;
-using System.Net.Sockets;
-
-namespace Google.GRPC.Core.Utils
-{
-    public class PortPicker
-    {
-        static Random random = new Random();
-
-        // TODO: cleanup this code a bit
-        public static int PickUnusedPort()
-        {
-            int port;
-            do
-            {
-                port = random.Next(2000, 50000);
-
-            } while(!IsPortAvailable(port));
-            return port;
-        }
-
-        // TODO: cleanup this code a bit
-        public static bool IsPortAvailable(int port)
-        {
-            bool available = true;
-
-            TcpListener server = null;
-            try
-            {
-                IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0];
-                server = new TcpListener(ipAddress, port);
-                server.Start();
-            }
-            catch (Exception ex)
-            {
-                available = false;
-            }
-            finally
-            {
-                if (server != null)
-                {
-                    server.Stop();
-                }
-            }
-            return available;
-        }
-    }
-}
-
diff --git a/src/csharp/GrpcCoreTests/ClientServerTest.cs b/src/csharp/GrpcCoreTests/ClientServerTest.cs
index c700ffbe7ba06a09b9d39eb2fb3295bc7cacf814..513141f5e5a09c0a9e29eaa182b228c2026a4cdb 100644
--- a/src/csharp/GrpcCoreTests/ClientServerTest.cs
+++ b/src/csharp/GrpcCoreTests/ClientServerTest.cs
@@ -10,7 +10,7 @@ namespace Google.GRPC.Core.Tests
 {
     public class ClientServerTest
     {
-        string serverAddr = "localhost:" + PortPicker.PickUnusedPort();
+        string host = "localhost";
 
         Method<string, string> unaryEchoStringMethod = new Method<string, string>(
             MethodType.Unary,
@@ -26,10 +26,10 @@ namespace Google.GRPC.Core.Tests
                 ServerServiceDefinition.CreateBuilder("someService")
                     .AddMethod(unaryEchoStringMethod, HandleUnaryEchoString).Build());
 
-            server.AddPort(serverAddr);
+            int port = server.AddPort(host + ":0");
             server.Start();
 
-            using (Channel channel = new Channel(serverAddr))
+            using (Channel channel = new Channel(host + ":" + port))
             {
                 var call = new Call<string, string>(unaryEchoStringMethod, channel);
 
diff --git a/src/csharp/GrpcCoreTests/ServerTest.cs b/src/csharp/GrpcCoreTests/ServerTest.cs
index 6e13bc735f6ec6b0e31e64b8dd9591dc89b337e5..b8ec250ba7d577303bbf3f645fa9b3d05cf3ee41 100644
--- a/src/csharp/GrpcCoreTests/ServerTest.cs
+++ b/src/csharp/GrpcCoreTests/ServerTest.cs
@@ -12,7 +12,7 @@ namespace Google.GRPC.Core.Tests
         public void StartAndShutdownServer() {
 
             Server server = new Server();
-            server.AddPort("localhost:" + PortPicker.PickUnusedPort());
+            int port = server.AddPort("localhost:0");
             server.Start();
             server.ShutdownAsync().Wait();