diff --git a/src/csharp/.gitignore b/src/csharp/.gitignore
index dbf38f34b73493d0ff977d1cbe20c82cb055d7d2..d35ff63f6ef4756198b8e7fe344fa50fa03788ee 100644
--- a/src/csharp/.gitignore
+++ b/src/csharp/.gitignore
@@ -1,2 +1,4 @@
 *.userprefs
 test-results
+packages
+Grpc.v12.suo
diff --git a/src/csharp/GrpcApi/.gitignore b/src/csharp/GrpcApi/.gitignore
index 2cc8cca52d01ba50f6398e7cb7a147161dad578c..4795a95b94ef8293e5520355fab8e3c64eae1b8a 100644
--- a/src/csharp/GrpcApi/.gitignore
+++ b/src/csharp/GrpcApi/.gitignore
@@ -1,2 +1,3 @@
 test-results
 bin
+obj
diff --git a/src/csharp/GrpcApi/GrpcApi.csproj b/src/csharp/GrpcApi/GrpcApi.csproj
index f0f11de2167bb87396aa871e9933dac558eef211..5a4ae67bd55e28c9b2349ec24b7fbb1cb8992f0d 100644
--- a/src/csharp/GrpcApi/GrpcApi.csproj
+++ b/src/csharp/GrpcApi/GrpcApi.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?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>
@@ -30,19 +30,23 @@
     <ConsolePause>false</ConsolePause>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="Google.ProtocolBuffers, Version=2.4.1.521, Culture=neutral, PublicKeyToken=55f7125234beb589, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\packages\Google.ProtocolBuffers.2.4.1.521\lib\net40\Google.ProtocolBuffers.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
-    <Reference Include="System.Reactive.Linq, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
-      <Private>False</Private>
+    <Reference Include="System.Reactive.Core">
+      <HintPath>..\packages\Rx-Core.2.2.5\lib\net45\System.Reactive.Core.dll</HintPath>
     </Reference>
-    <Reference Include="System.Data.Linq" />
-    <Reference Include="System.Reactive.Interfaces, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
-      <Private>False</Private>
+    <Reference Include="System.Reactive.Interfaces">
+      <HintPath>..\packages\Rx-Interfaces.2.2.5\lib\net45\System.Reactive.Interfaces.dll</HintPath>
     </Reference>
-    <Reference Include="System.Reactive.Core, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
-      <Private>False</Private>
+    <Reference Include="System.Data.Linq" />
+    <Reference Include="System.Reactive.Linq">
+      <HintPath>..\packages\Rx-Linq.2.2.5\lib\net45\System.Reactive.Linq.dll</HintPath>
     </Reference>
-    <Reference Include="Google.ProtocolBuffers">
-      <HintPath>..\lib\Google.ProtocolBuffers.dll</HintPath>
+    <Reference Include="System.Reactive.PlatformServices">
+      <HintPath>..\packages\Rx-PlatformServices.2.2.5\lib\net45\System.Reactive.PlatformServices.dll</HintPath>
     </Reference>
   </ItemGroup>
   <ItemGroup>
@@ -63,12 +67,10 @@
     </ProjectReference>
   </ItemGroup>
   <ItemGroup>
+    <None Include="packages.config" />
     <None Include="proto\math.proto" />
     <None Include="proto\empty.proto" />
     <None Include="proto\messages.proto" />
     <None Include="proto\test.proto" />
   </ItemGroup>
-  <ItemGroup>
-    <Folder Include="proto\" />
-  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/csharp/GrpcApi/packages.config b/src/csharp/GrpcApi/packages.config
new file mode 100644
index 0000000000000000000000000000000000000000..a6a949b3b3a3d9bc8ec2966117b3510ac1b8bf09
--- /dev/null
+++ b/src/csharp/GrpcApi/packages.config
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Google.ProtocolBuffers" version="2.4.1.521" targetFramework="net45" />
+  <package id="Ix-Main" version="1.2.3" targetFramework="net45" />
+  <package id="NUnit" version="2.6.4" targetFramework="net45" />
+  <package id="Rx-Core" version="2.2.5" targetFramework="net45" />
+  <package id="Rx-Interfaces" version="2.2.5" targetFramework="net45" />
+  <package id="Rx-Linq" version="2.2.5" targetFramework="net45" />
+  <package id="Rx-Main" version="2.2.5" targetFramework="net45" />
+  <package id="Rx-PlatformServices" version="2.2.5" targetFramework="net45" />
+</packages>
\ No newline at end of file
diff --git a/src/csharp/GrpcApiTests/.gitignore b/src/csharp/GrpcApiTests/.gitignore
index 2cc8cca52d01ba50f6398e7cb7a147161dad578c..4795a95b94ef8293e5520355fab8e3c64eae1b8a 100644
--- a/src/csharp/GrpcApiTests/.gitignore
+++ b/src/csharp/GrpcApiTests/.gitignore
@@ -1,2 +1,3 @@
 test-results
 bin
+obj
diff --git a/src/csharp/GrpcApiTests/GrpcApiTests.csproj b/src/csharp/GrpcApiTests/GrpcApiTests.csproj
index d0aac2b7533a3a6f66aee65074a597d2f8c0d105..cb955cff41b12e9ac04d047f8eae8aee7c58813f 100644
--- a/src/csharp/GrpcApiTests/GrpcApiTests.csproj
+++ b/src/csharp/GrpcApiTests/GrpcApiTests.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?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>
@@ -30,13 +30,14 @@
     <ConsolePause>false</ConsolePause>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="nunit.framework, Version=2.6.0.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77">
-      <Private>False</Private>
+    <Reference Include="Google.ProtocolBuffers, Version=2.4.1.521, Culture=neutral, PublicKeyToken=55f7125234beb589, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\packages\Google.ProtocolBuffers.2.4.1.521\lib\net40\Google.ProtocolBuffers.dll</HintPath>
     </Reference>
-    <Reference Include="Google.ProtocolBuffers">
-      <HintPath>..\lib\Google.ProtocolBuffers.dll</HintPath>
+    <Reference Include="nunit.framework">
+      <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
     </Reference>
+    <Reference Include="System" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -53,4 +54,10 @@
       <Name>GrpcCore</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/csharp/GrpcApiTests/packages.config b/src/csharp/GrpcApiTests/packages.config
new file mode 100644
index 0000000000000000000000000000000000000000..51c17bcd5e74685ab31264eae00dc062b5b9083d
--- /dev/null
+++ b/src/csharp/GrpcApiTests/packages.config
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Google.ProtocolBuffers" version="2.4.1.521" targetFramework="net45" />
+  <package id="NUnit" version="2.6.4" targetFramework="net45" />
+</packages>
\ No newline at end of file
diff --git a/src/csharp/GrpcCore/.gitignore b/src/csharp/GrpcCore/.gitignore
index ba077a4031add5b3a04384f8b9cfc414efbf47dd..8d4a6c08a83aaa5470f3c556faf2988be0ed1288 100644
--- a/src/csharp/GrpcCore/.gitignore
+++ b/src/csharp/GrpcCore/.gitignore
@@ -1 +1,2 @@
 bin
+obj
\ No newline at end of file
diff --git a/src/csharp/GrpcCoreTests/.gitignore b/src/csharp/GrpcCoreTests/.gitignore
index 2cc8cca52d01ba50f6398e7cb7a147161dad578c..775a9440a2c7359afa41e50428041026e05b30ec 100644
--- a/src/csharp/GrpcCoreTests/.gitignore
+++ b/src/csharp/GrpcCoreTests/.gitignore
@@ -1,2 +1,3 @@
 test-results
 bin
+obj
\ No newline at end of file
diff --git a/src/csharp/GrpcCoreTests/GrpcCoreTests.csproj b/src/csharp/GrpcCoreTests/GrpcCoreTests.csproj
index 111f0883db0e28cb0404b79518395a57f8daa742..ca52cd8f40d794269d9e95d44e4159103793cce0 100644
--- a/src/csharp/GrpcCoreTests/GrpcCoreTests.csproj
+++ b/src/csharp/GrpcCoreTests/GrpcCoreTests.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?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>
@@ -30,10 +30,10 @@
     <ConsolePause>false</ConsolePause>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="nunit.framework, Version=2.6.0.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77">
-      <Private>False</Private>
+    <Reference Include="nunit.framework">
+      <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
     </Reference>
+    <Reference Include="System" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -49,4 +49,10 @@
       <Name>GrpcCore</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/csharp/GrpcCoreTests/packages.config b/src/csharp/GrpcCoreTests/packages.config
new file mode 100644
index 0000000000000000000000000000000000000000..c714ef3a23ec95ef83e4143701d37470a0363797
--- /dev/null
+++ b/src/csharp/GrpcCoreTests/packages.config
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="NUnit" version="2.6.4" targetFramework="net45" />
+</packages>
\ No newline at end of file
diff --git a/src/csharp/InteropClient/.gitignore b/src/csharp/InteropClient/.gitignore
index ba077a4031add5b3a04384f8b9cfc414efbf47dd..8d4a6c08a83aaa5470f3c556faf2988be0ed1288 100644
--- a/src/csharp/InteropClient/.gitignore
+++ b/src/csharp/InteropClient/.gitignore
@@ -1 +1,2 @@
 bin
+obj
\ No newline at end of file
diff --git a/src/csharp/InteropClient/InteropClient.csproj b/src/csharp/InteropClient/InteropClient.csproj
index b8e099d7852820769a3a09448e44531c46691182..a450f3a2febb5d0818a4783f84548f3536f2c44a 100644
--- a/src/csharp/InteropClient/InteropClient.csproj
+++ b/src/csharp/InteropClient/InteropClient.csproj
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?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>
@@ -33,13 +33,14 @@
     <PlatformTarget>x86</PlatformTarget>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="System" />
-    <Reference Include="nunit.framework, Version=2.6.0.0, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77">
-      <Private>False</Private>
+    <Reference Include="Google.ProtocolBuffers, Version=2.4.1.521, Culture=neutral, PublicKeyToken=55f7125234beb589, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\packages\Google.ProtocolBuffers.2.4.1.521\lib\net40\Google.ProtocolBuffers.dll</HintPath>
     </Reference>
-    <Reference Include="Google.ProtocolBuffers">
-      <HintPath>..\lib\Google.ProtocolBuffers.dll</HintPath>
+    <Reference Include="nunit.framework">
+      <HintPath>..\packages\NUnit.2.6.4\lib\nunit.framework.dll</HintPath>
     </Reference>
+    <Reference Include="System" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -56,4 +57,7 @@
       <Name>GrpcApi</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/src/csharp/InteropClient/packages.config b/src/csharp/InteropClient/packages.config
new file mode 100644
index 0000000000000000000000000000000000000000..51c17bcd5e74685ab31264eae00dc062b5b9083d
--- /dev/null
+++ b/src/csharp/InteropClient/packages.config
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="Google.ProtocolBuffers" version="2.4.1.521" targetFramework="net45" />
+  <package id="NUnit" version="2.6.4" targetFramework="net45" />
+</packages>
\ No newline at end of file
diff --git a/src/csharp/MathClient/.gitignore b/src/csharp/MathClient/.gitignore
index ba077a4031add5b3a04384f8b9cfc414efbf47dd..1746e3269ed0fcf5cde6ed13a6543865137868c0 100644
--- a/src/csharp/MathClient/.gitignore
+++ b/src/csharp/MathClient/.gitignore
@@ -1 +1,2 @@
 bin
+obj
diff --git a/src/csharp/lib/Google.ProtocolBuffers.dll b/src/csharp/lib/Google.ProtocolBuffers.dll
deleted file mode 100755
index ce2f466b243da0e875764856cd99c61ca9d98628..0000000000000000000000000000000000000000
Binary files a/src/csharp/lib/Google.ProtocolBuffers.dll and /dev/null differ