diff --git a/src/csharp/Grpc.Core.NativeDebug.nuspec b/src/csharp/Grpc.Core.NativeDebug.nuspec
deleted file mode 100644
index d4bb8ad2237..00000000000
--- a/src/csharp/Grpc.Core.NativeDebug.nuspec
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
- Grpc.Core.NativeDebug
- Grpc.Core: Native Debug Symbols
- Debug symbols for the native library contained in Grpc.Core
- Currently contains grpc_csharp_ext.pdb
- $version$
- Google Inc.
- grpc-packages
- https://github.com/grpc/grpc/blob/master/LICENSE
- https://github.com/grpc/grpc
- false
- Release $version$
- Copyright 2015, Google Inc.
- gRPC RPC Protocol HTTP/2
-
-
-
-
-
-
-
-
-
diff --git a/src/csharp/Grpc.Core.NativeDebug/.gitignore b/src/csharp/Grpc.Core.NativeDebug/.gitignore
new file mode 100644
index 00000000000..1746e3269ed
--- /dev/null
+++ b/src/csharp/Grpc.Core.NativeDebug/.gitignore
@@ -0,0 +1,2 @@
+bin
+obj
diff --git a/src/csharp/Grpc.Core.NativeDebug/Grpc.Core.NativeDebug.csproj b/src/csharp/Grpc.Core.NativeDebug/Grpc.Core.NativeDebug.csproj
new file mode 100644
index 00000000000..5f1cac05425
--- /dev/null
+++ b/src/csharp/Grpc.Core.NativeDebug/Grpc.Core.NativeDebug.csproj
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+ Copyright 2015, Google Inc.
+ Grpc.Core: Native Debug Symbols
+ Debug symbols for the native library contained in Grpc.Core
+ $(GrpcCsharpVersion)
+ Google Inc.
+ net45;netstandard1.5
+ Grpc.Core.NativeDebug
+ gRPC RPC Protocol HTTP/2
+ https://github.com/grpc/grpc
+ https://github.com/grpc/grpc/blob/master/LICENSE
+
+ false
+ true
+
+
+
+
+ runtimes/win/native/grpc_csharp_ext.x86.dll
+ true
+
+
+ runtimes/win/native/grpc_csharp_ext.x86.pdb
+ true
+
+
+ runtimes/win/native/grpc_csharp_ext.x64.dll
+ true
+
+
+ runtimes/win/native/grpc_csharp_ext.x64.pdb
+ true
+
+
+
diff --git a/src/csharp/Grpc.Tools/Grpc.Tools.csproj b/src/csharp/Grpc.Tools/Grpc.Tools.csproj
index 61fa75a4ec2..aa39dd0fe9b 100644
--- a/src/csharp/Grpc.Tools/Grpc.Tools.csproj
+++ b/src/csharp/Grpc.Tools/Grpc.Tools.csproj
@@ -4,7 +4,7 @@
Protobuf.MSBuild
- $(GrpcCsharpVersion)
+ $(GrpcCsharpVersion)
net45;netstandard1.3
diff --git a/src/csharp/Grpc.nuspec b/src/csharp/Grpc.nuspec
deleted file mode 100644
index 7fbd8619230..00000000000
--- a/src/csharp/Grpc.nuspec
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- Grpc
- gRPC C#
- C# implementation of gRPC - an RPC library and framework
- C# implementation of gRPC - an RPC library and framework. See project site for more info.
- $version$
- Google Inc.
- grpc-packages
- https://github.com/grpc/grpc/blob/master/LICENSE
- https://github.com/grpc/grpc
- false
- Release $version$ of gRPC C#
- Copyright 2015, Google Inc.
- gRPC RPC Protocol HTTP/2
-
-
-
-
-
-
diff --git a/src/csharp/Grpc/.gitignore b/src/csharp/Grpc/.gitignore
new file mode 100644
index 00000000000..1746e3269ed
--- /dev/null
+++ b/src/csharp/Grpc/.gitignore
@@ -0,0 +1,2 @@
+bin
+obj
diff --git a/src/csharp/Grpc/Grpc.csproj b/src/csharp/Grpc/Grpc.csproj
new file mode 100644
index 00000000000..9f17e319714
--- /dev/null
+++ b/src/csharp/Grpc/Grpc.csproj
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+ Copyright 2015, Google Inc.
+ gRPC C#
+ C# implementation of gRPC - an RPC library and framework.
+ $(GrpcCsharpVersion)
+ Google Inc.
+ net45;netstandard1.5
+ Grpc
+ gRPC RPC Protocol HTTP/2
+ https://github.com/grpc/grpc
+ https://github.com/grpc/grpc/blob/master/LICENSE
+
+ false
+ true
+
+
+
+
+
+
diff --git a/src/csharp/build_packages_dotnetcli.bat b/src/csharp/build_packages_dotnetcli.bat
index 9fdfbcbd315..f500310865b 100755
--- a/src/csharp/build_packages_dotnetcli.bat
+++ b/src/csharp/build_packages_dotnetcli.bat
@@ -12,11 +12,6 @@
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
-@rem Current package versions
-set VERSION=1.19.0-dev
-
-@rem Adjust the location of nuget.exe
-set NUGET=C:\nuget\nuget.exe
set DOTNET=dotnet
mkdir ..\..\artifacts
@@ -29,6 +24,9 @@ powershell -Command "cp -r ..\..\input_artifacts\csharp_ext_* nativelibs"
mkdir protoc_plugins
powershell -Command "cp -r ..\..\input_artifacts\protoc_* protoc_plugins"
+@rem Add current timestamp to dev nugets
+expand_dev_version.sh
+
%DOTNET% restore Grpc.sln || goto :error
@rem To be able to build, we also need to put grpc_csharp_ext to its normal location
@@ -41,9 +39,9 @@ xcopy /Y /I nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll ..\..\cmake\bu
%DOTNET% pack --configuration Release Grpc.HealthCheck --output ..\..\..\artifacts || goto :error
%DOTNET% pack --configuration Release Grpc.Reflection --output ..\..\..\artifacts || goto :error
%DOTNET% pack --configuration Release Grpc.Tools --output ..\..\..\artifacts || goto :error
-
-%NUGET% pack Grpc.nuspec -Version %VERSION% -OutputDirectory ..\..\artifacts || goto :error
-%NUGET% pack Grpc.Core.NativeDebug.nuspec -Version %VERSION% -OutputDirectory ..\..\artifacts
+@rem build auxiliary packages
+%DOTNET% pack --configuration Release Grpc --output ..\..\..\artifacts || goto :error
+%DOTNET% pack --configuration Release Grpc.Core.NativeDebug --output ..\..\..\artifacts || goto :error
@rem copy resulting nuget packages to artifacts directory
xcopy /Y /I *.nupkg ..\..\artifacts\ || goto :error
diff --git a/src/csharp/expand_dev_version.sh b/src/csharp/expand_dev_version.sh
new file mode 100644
index 00000000000..555f22a619c
--- /dev/null
+++ b/src/csharp/expand_dev_version.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+# Copyright 2019 The gRPC Authors
+#
+# Licensed 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.
+
+# Updates the GrpcSharpVersion property so that we can build
+# dev nuget packages differentiated by timestamp.
+
+set -e
+
+cd "$(dirname "$0")"
+
+DEV_DATETIME_SUFFIX=$(date -u "+%Y%m%d%H%M")
+# expand the -dev suffix to contain current timestamp
+sed -ibak "s/-dev<\/GrpcCsharpVersion>/-dev${DEV_DATETIME_SUFFIX}<\/GrpcCsharpVersion>/" Grpc.Core/Version.csproj.include
diff --git a/templates/src/csharp/build_packages_dotnetcli.bat.template b/templates/src/csharp/build_packages_dotnetcli.bat.template
deleted file mode 100755
index aa35ae1e6fc..00000000000
--- a/templates/src/csharp/build_packages_dotnetcli.bat.template
+++ /dev/null
@@ -1,61 +0,0 @@
-%YAML 1.2
---- |
- @rem Copyright 2016 gRPC authors.
- @rem
- @rem Licensed under the Apache License, Version 2.0 (the "License");
- @rem you may not use this file except in compliance with the License.
- @rem You may obtain a copy of the License at
- @rem
- @rem http://www.apache.org/licenses/LICENSE-2.0
- @rem
- @rem Unless required by applicable law or agreed to in writing, software
- @rem distributed under the License is distributed on an "AS IS" BASIS,
- @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- @rem See the License for the specific language governing permissions and
- @rem limitations under the License.
-
- @rem Current package versions
- set VERSION=${settings.csharp_version}
-
- @rem Adjust the location of nuget.exe
- set NUGET=C:\nuget\nuget.exe
- set DOTNET=dotnet
-
- mkdir ..\..\artifacts
-
- @rem Collect the artifacts built by the previous build step
- mkdir nativelibs
- powershell -Command "cp -r ..\..\input_artifacts\csharp_ext_* nativelibs"
-
- @rem Collect protoc artifacts built by the previous build step
- mkdir protoc_plugins
- powershell -Command "cp -r ..\..\input_artifacts\protoc_* protoc_plugins"
-
- %%DOTNET% restore Grpc.sln || goto :error
-
- @rem To be able to build, we also need to put grpc_csharp_ext to its normal location
- xcopy /Y /I nativelibs\csharp_ext_windows_x64\grpc_csharp_ext.dll ..\..\cmake\build\x64\Release${"\\"}
-
- %%DOTNET% pack --configuration Release Grpc.Core.Api --output ..\..\..\artifacts || goto :error
- %%DOTNET% pack --configuration Release Grpc.Core --output ..\..\..\artifacts || goto :error
- %%DOTNET% pack --configuration Release Grpc.Core.Testing --output ..\..\..\artifacts || goto :error
- %%DOTNET% pack --configuration Release Grpc.Auth --output ..\..\..\artifacts || goto :error
- %%DOTNET% pack --configuration Release Grpc.HealthCheck --output ..\..\..\artifacts || goto :error
- %%DOTNET% pack --configuration Release Grpc.Reflection --output ..\..\..\artifacts || goto :error
- %%DOTNET% pack --configuration Release Grpc.Tools --output ..\..\..\artifacts || goto :error
-
- %%NUGET% pack Grpc.nuspec -Version %VERSION% -OutputDirectory ..\..\artifacts || goto :error
- %%NUGET% pack Grpc.Core.NativeDebug.nuspec -Version %VERSION% -OutputDirectory ..\..\artifacts
-
- @rem copy resulting nuget packages to artifacts directory
- xcopy /Y /I *.nupkg ..\..\artifacts\ || goto :error
-
- @rem create a zipfile with the artifacts as well
- powershell -Command "Add-Type -Assembly 'System.IO.Compression.FileSystem'; [System.IO.Compression.ZipFile]::CreateFromDirectory('..\..\artifacts', 'csharp_nugets_windows_dotnetcli.zip');"
- xcopy /Y /I csharp_nugets_windows_dotnetcli.zip ..\..\artifacts\ || goto :error
-
- goto :EOF
-
- :error
- echo Failed!
- exit /b %errorlevel%