aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2012-10-16 19:41:35 -0500
committerrogerk <devnull@localhost>2012-10-16 19:41:35 -0500
commit832b08e238523cfa57856da814cadee492c144f8 (patch)
treeea5079f23896899b77788e5f7c1157ac60c1dd17
parentad7b9d114eb001e9803b9e3d4cbfb4cccd41a750 (diff)
downloadprotobuf-832b08e238523cfa57856da814cadee492c144f8.tar.gz
protobuf-832b08e238523cfa57856da814cadee492c144f8.tar.bz2
protobuf-832b08e238523cfa57856da814cadee492c144f8.zip
Rewrote the PublishRelease.bat file in MSBuild (publish.csproj), updated nuspec files
-rw-r--r--build/Common.targets8
-rw-r--r--build/Google.ProtocolBuffers.nuspec29
-rw-r--r--build/Google.ProtocolBuffersLite.nuspec30
-rw-r--r--build/PublishRelease.bat98
-rw-r--r--build/build.csproj7
-rw-r--r--build/publish.csproj182
-rw-r--r--lib/NuGet.exebin525312 -> 649728 bytes
-rw-r--r--src/ProtocolBuffers.sln4
8 files changed, 213 insertions, 145 deletions
diff --git a/build/Common.targets b/build/Common.targets
index 31f8550d..d5ff8797 100644
--- a/build/Common.targets
+++ b/build/Common.targets
@@ -64,6 +64,10 @@ Targets For Tools
Targets For GenerateSource
*********************************************************************************************** -->
+ <Target Name="_GenerateProjects">
+ <Exec Command="$(CsProjectProjector) csproj_templates src\ProtocolBuffersLibrary.sln" WorkingDirectory="$(ProjectDirectory)" />
+ </Target>
+
<Target Name="_CleanTempSource">
<MSBuild Projects="$(MSBuildProjectFullPath)" Properties="CleanFolderDirectory=$(SourceTempDirectory);" Targets="_CleanFolder" />
<MakeDir Directories="$(SourceTempDirectory)" />
@@ -89,8 +93,8 @@ Targets For Package
<Target Name="_GeneratePackage">
<Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputPackage)\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" />
- <Exec Command="&quot;$(ZipExePath)&quot; a -tzip ..\$(PackageName)-binaries.zip * -x!*.pdb -r" WorkingDirectory="$(BuildOutputPackage)" />
- <Exec Command="&quot;$(ZipExePath)&quot; a -tzip ..\$(PackageName)-symbols.zip * -r" WorkingDirectory="$(BuildOutputPackage)" />
+ <Exec Command="&quot;$(ZipExePath)&quot; a -tzip $(BuildTempDirectory)\$(PackageName)-binaries.zip * -x!*.pdb -r" WorkingDirectory="$(BuildOutputPackage)" />
+ <Exec Command="&quot;$(ZipExePath)&quot; a -tzip $(BuildTempDirectory)\$(PackageName)-symbols.zip * -r" WorkingDirectory="$(BuildOutputPackage)" />
</Target>
<!-- **********************************************************************************************
diff --git a/build/Google.ProtocolBuffers.nuspec b/build/Google.ProtocolBuffers.nuspec
index ec62523a..424f367d 100644
--- a/build/Google.ProtocolBuffers.nuspec
+++ b/build/Google.ProtocolBuffers.nuspec
@@ -43,29 +43,16 @@ Language Guide - http://code.google.com/apis/protocolbuffers/docs/proto.html
</metadata>
<files>
<!-- Release Binaries -->
- <file src="..\build_output\v2.0\Release\Google.ProtocolBuffers.???" target="lib\net20" />
- <file src="..\build_output\v2.0\Release\Google.ProtocolBuffers.Serialization.???" target="lib\net20" />
- <file src="..\build_output\v3.5\Release\Google.ProtocolBuffers.???" target="lib\net35" />
- <file src="..\build_output\v3.5\Release\Google.ProtocolBuffers.Serialization.???" target="lib\net35" />
- <file src="..\build_output\v4.0\Release\Google.ProtocolBuffers.???" target="lib\net40" />
- <file src="..\build_output\v4.0\Release\Google.ProtocolBuffers.Serialization.???" target="lib\net40" />
- <!-- Silverlight Binaries -->
- <file src="..\build_output\v2.0\Release_Silverlight\Google.ProtocolBuffers.???" target="lib\sl20" />
- <file src="..\build_output\v2.0\Release_Silverlight\Google.ProtocolBuffers.Serialization.???" target="lib\sl20" />
- <file src="..\build_output\v3.5\Release_Silverlight\Google.ProtocolBuffers.???" target="lib\sl30" />
- <file src="..\build_output\v3.5\Release_Silverlight\Google.ProtocolBuffers.Serialization.???" target="lib\sl30" />
- <file src="..\build_output\v4.0\Release_Silverlight\Google.ProtocolBuffers.???" target="lib\sl40" />
- <file src="..\build_output\v4.0\Release_Silverlight\Google.ProtocolBuffers.Serialization.???" target="lib\sl40" />
+ <file src="..\build_output\Release\**\Google.ProtocolBuffers.???" target="lib\" />
+ <file src="..\build_output\Release\**\Google.ProtocolBuffers.Serialization.???" target="lib\" />
<!-- Tools -->
- <file src="..\lib\Protoc.exe" target="tools" />
- <file src="..\build_output\ProtoGen\*" target="tools" />
+ <file src="..\build_output\tools\**\*" target="tools\" />
+ <file src="..\build_output\protos\**\*" target="content\protos\" />
<!-- Content -->
- <file src="..\CHANGES.txt" target="content"/>
- <file src="..\license.txt" target="content\licenses"/>
- <file src="..\lib\protoc-license.txt" target="content\licenses"/>
- <file src="..\protos\google\protobuf\descriptor.proto" target="content\protos\google\protobuf" />
- <file src="..\protos\google\protobuf\csharp_options.proto" target="content\protos\google\protobuf" />
-
+ <file src="..\build_output\CHANGES.txt" target="content"/>
+ <file src="..\build_output\license.txt" target="content\licenses"/>
+ <file src="..\build_output\tools\protoc-license.txt" target="content\licenses"/>
+ <!-- Source -->
<file src="..\src\ProtocolBuffers\**\*.cs" target="src\ProtocolBuffers\"/>
<file src="..\src\ProtocolBuffers.Serialization\**\*.cs" target="src\ProtocolBuffers.Serialization\"/>
</files>
diff --git a/build/Google.ProtocolBuffersLite.nuspec b/build/Google.ProtocolBuffersLite.nuspec
index 819eab62..56cf142c 100644
--- a/build/Google.ProtocolBuffersLite.nuspec
+++ b/build/Google.ProtocolBuffersLite.nuspec
@@ -41,31 +41,19 @@ Language Guide - http://code.google.com/apis/protocolbuffers/docs/proto.html
</references>
</metadata>
+
<files>
<!-- Release Binaries -->
- <file src="..\build_output\v2.0\Release\Google.ProtocolBuffersLite.???" target="lib\net20" />
- <file src="..\build_output\v2.0\Release\Google.ProtocolBuffersLite.Serialization.???" target="lib\net20" />
- <file src="..\build_output\v3.5\Release\Google.ProtocolBuffersLite.???" target="lib\net35" />
- <file src="..\build_output\v3.5\Release\Google.ProtocolBuffersLite.Serialization.???" target="lib\net35" />
- <file src="..\build_output\v4.0\Release\Google.ProtocolBuffersLite.???" target="lib\net40" />
- <file src="..\build_output\v4.0\Release\Google.ProtocolBuffersLite.Serialization.???" target="lib\net40" />
- <!-- Silverlight Binaries -->
- <file src="..\build_output\v2.0\Release_Silverlight\Google.ProtocolBuffersLite.???" target="lib\sl20" />
- <file src="..\build_output\v2.0\Release_Silverlight\Google.ProtocolBuffersLite.Serialization.???" target="lib\sl20" />
- <file src="..\build_output\v3.5\Release_Silverlight\Google.ProtocolBuffersLite.???" target="lib\sl30" />
- <file src="..\build_output\v3.5\Release_Silverlight\Google.ProtocolBuffersLite.Serialization.???" target="lib\sl30" />
- <file src="..\build_output\v4.0\Release_Silverlight\Google.ProtocolBuffersLite.???" target="lib\sl40" />
- <file src="..\build_output\v4.0\Release_Silverlight\Google.ProtocolBuffersLite.Serialization.???" target="lib\sl40" />
+ <file src="..\build_output\Release\**\Google.ProtocolBuffersLite.???" target="lib\" />
+ <file src="..\build_output\Release\**\Google.ProtocolBuffersLite.Serialization.???" target="lib\" />
<!-- Tools -->
- <file src="..\lib\Protoc.exe" target="tools" />
- <file src="..\build_output\ProtoGen\*" target="tools" />
+ <file src="..\build_output\tools\**\*" target="tools\" />
+ <file src="..\build_output\protos\**\*" target="content\protos\" />
<!-- Content -->
- <file src="..\CHANGES.txt" target="content"/>
- <file src="..\license.txt" target="content\licenses"/>
- <file src="..\lib\protoc-license.txt" target="content\licenses"/>
- <file src="..\protos\google\protobuf\descriptor.proto" target="content\protos\google\protobuf" />
- <file src="..\protos\google\protobuf\csharp_options.proto" target="content\protos\google\protobuf" />
-
+ <file src="..\build_output\CHANGES.txt" target="content"/>
+ <file src="..\build_output\license.txt" target="content\licenses"/>
+ <file src="..\build_output\tools\protoc-license.txt" target="content\licenses"/>
+ <!-- Source -->
<file src="..\src\ProtocolBuffers\**\*.cs" target="src\ProtocolBuffers\"/>
<file src="..\src\ProtocolBuffers.Serialization\**\*.cs" target="src\ProtocolBuffers.Serialization\"/>
</files>
diff --git a/build/PublishRelease.bat b/build/PublishRelease.bat
deleted file mode 100644
index c6cb6f95..00000000
--- a/build/PublishRelease.bat
+++ /dev/null
@@ -1,98 +0,0 @@
-REM @ECHO OFF
-@PUSHD %~dp0
-@IF "%1" == "version" @GOTO VERSION
-@IF "%1" == "build" @GOTO BUILD
-@IF "%1" == "fpush" @GOTO FILEPUSH
-@IF "%1" == "nupush" @GOTO NUGETPUSH
-@IF "%1" == "push" @GOTO PUSH
-@GOTO HELP
-
-:VERSION
-IF NOT EXIST "..\build_temp\" MD "..\build_temp\"
-hg log -l 1 --template "Revision: {rev}" > ..\build_temp\revision.txt
-CMD.exe /Q /C "CD .. && lib\StampVersion.exe /major:2 /minor:4 /build:1 /revision:build_temp\revision.txt"
-@TYPE ..\src\ProtocolBuffers\Properties\AssemblyInfo.cs | FIND "AssemblyFileVersion"
-@ECHO.
-@ECHO NEXT: Use the above version number to run "%0 build {Version}"
-@ECHO.
-@GOTO EXIT
-
-:BUILD
-@IF "%2" == "" @GOTO HELP
-IF EXIST "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\sn.exe" SET WIN7SDK_DIR=C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\
-
-IF NOT EXIST "..\release-key" hg clone https://bitbucket.org/rknapp/protobuf-csharp-port-keyfile ..\release-key
-
-MD "%2"
-CMD.exe /Q /C "BuildAll.bat /verbosity:minimal "/p:AssemblyOriginatorKeyFile=%~dp0..\release-key\Google.ProtocolBuffers.snk"
-
-COPY /y ..\build_output\release-binaries.zip %2\protobuf-csharp-port-%2-release-binaries.zip
-COPY /y ..\build_output\full-binaries.zip %2\protobuf-csharp-port-%2-full-binaries.zip
-
-..\lib\NuGet.exe pack Google.ProtocolBuffers.nuspec -Symbols -Version %2 -NoPackageAnalysis -OutputDirectory %2
-..\lib\NuGet.exe pack Google.ProtocolBuffersLite.nuspec -Symbols -Version %2 -NoPackageAnalysis -OutputDirectory %2
-
-hg archive %2\protobuf-csharp-port-%2-source.zip
-
-"%WIN7SDK_DIR%sn.exe" -T ..\build_output\v2.0\Release\Google.ProtocolBuffers.dll
-@ECHO.
-@ECHO ***********************************************************
-@ECHO IMPORTANT: Verify the above key output is: 55f7125234beb589
-@ECHO ***********************************************************
-@ECHO.
-@ECHO NEXT: Verify the output in %~dp0\%2 and then run "%0 push %2"
-@ECHO.
-@GOTO EXIT
-
-:PUSH
-@IF "%2" == "" @GOTO HELP
-
-hg commit -m "version %2"
-hg tag %2
-hg push
-@ECHO.
-@ECHO NEXT: Verify the repository state and run "%0 fpush %2 {google-code-user} {google-code-password}"
-@ECHO.
-@GOTO EXIT
-
-:FILEPUSH
-@IF "%2" == "" @GOTO HELP
-@IF "%3" == "" @GOTO HELP
-@IF "%4" == "" @GOTO HELP
-SET GOOGLEUPLOAD=python.exe googlecode_upload.py --project protobuf-csharp-port --user "%3" --password "%4"
-
-%GOOGLEUPLOAD% --labels Type-Source,Featured --summary "Version %2 source" %2\protobuf-csharp-port-%2-source.zip
-%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries (all configurations)" %2\protobuf-csharp-port-%2-full-binaries.zip
-%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries (release only)" %2\protobuf-csharp-port-%2-release-binaries.zip
-
-@SET GOOGLEUPLOAD=
-@ECHO.
-@ECHO NEXT: Verify the uploads and run "%0 nupush %2"
-@ECHO.
-@GOTO EXIT
-
-:NUGETPUSH
-
-..\lib\NuGet.exe push "%2\Google.ProtocolBuffers.%2.nupkg"
-..\lib\NuGet.exe push "%2\Google.ProtocolBuffersLite.%2.nupkg"
-..\lib\NuGet.exe push "%2\Google.ProtocolBuffers.%2.symbols.nupkg"
-..\lib\NuGet.exe push "%2\Google.ProtocolBuffersLite.%2.symbols.nupkg"
-
-@ECHO.
-@ECHO NEXT: Verify the nuget packages at http://nuget.org
-@ECHO.
-@GOTO EXIT
-
-:HELP
-@ECHO.
-@ECHO Available commands, run in the following order:
-@ECHO 1. %0 version
-@ECHO 2. %0 build {version from step 1}
-@ECHO 3. %0 push {version from step 1}
-@ECHO 4. %0 fpush {version from step 1} {google-code-user} {google-code-password}
-@ECHO 5. %0 nupush {version from step 1}
-@ECHO.
-@GOTO EXIT
-
-:EXIT
-@POPD \ No newline at end of file
diff --git a/build/build.csproj b/build/build.csproj
index e95137fb..2279886a 100644
--- a/build/build.csproj
+++ b/build/build.csproj
@@ -4,9 +4,10 @@
<!-- build targets -->
<Target Name="Clean" DependsOnTargets="_CleanAll" />
<Target Name="BuildTools" DependsOnTargets="_BuildTools" />
+ <Target Name="GenerateProjects" DependsOnTargets="_GenerateProjects" />
<Target Name="GenerateSource" DependsOnTargets="_GenerateSource;_CopyGeneratedSource" />
<Target Name="RebuildSource" DependsOnTargets="Clean;BuildTools;GenerateSource" />
- <Target Name="Build" DependsOnTargets="BuildTools;GenerateSource;_CompileAll" />
+ <Target Name="Build" DependsOnTargets="GenerateProjects;BuildTools;GenerateSource;_CompileAll" />
<Target Name="Rebuild" DependsOnTargets="Clean;Build" />
<Target Name="GeneratePackage" DependsOnTargets="_PackageAll;_GeneratePackage" />
<Target Name="FullBuild" DependsOnTargets="Rebuild;GeneratePackage" />
@@ -39,8 +40,10 @@
<ProtocExePath>$(BuildOutputDirectory)\tools\protoc.exe</ProtocExePath>
<ProtogenExePath>$(BuildOutputDirectory)\tools\protogen.exe</ProtogenExePath>
<NUnitExePath>$(LibDirectory)\NUnit\tools\nunit-console.exe</NUnitExePath>
+ <CsProjectProjector>$(LibDirectory)\CsProjectProjector\CsProjectProjector.exe</CsProjectProjector>
<ZipExePath>$(LibDirectory)\7-Zip 9.20\7za.exe</ZipExePath>
- </PropertyGroup>
+
+</PropertyGroup>
<Import Project="Common.targets"/>
diff --git a/build/publish.csproj b/build/publish.csproj
new file mode 100644
index 00000000..9cb43908
--- /dev/null
+++ b/build/publish.csproj
@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Publish" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!-- build targets -->
+ <Target Name="Clean" DependsOnTargets="_Clean" />
+ <Target Name="Publish" DependsOnTargets="_Publish" />
+
+ <PropertyGroup>
+ <ProjectName>Protocol Buffers</ProjectName>
+ <VersionMajor>2</VersionMajor>
+ <VersionMinor>4</VersionMinor>
+ <VersionBuild>1</VersionBuild>
+ <VersionRevision></VersionRevision>
+ <VersionLabel></VersionLabel>
+
+ <PackagePrefix>protobuf-csharp-port-</PackagePrefix>
+ <PublishDebug>false</PublishDebug>
+
+ <GoogleUsername></GoogleUsername>
+ <GooglePassword></GooglePassword>
+
+ <!--Directory Paths-->
+ <ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory>
+ <BuildTempDirectory>$(ProjectDirectory)\build_temp</BuildTempDirectory>
+ <BuildOutputDirectory>$(ProjectDirectory)\build_output</BuildOutputDirectory>
+ <SourceDirectory>$(ProjectDirectory)\src</SourceDirectory>
+ <LibDirectory>$(ProjectDirectory)\lib</LibDirectory>
+
+ <!-- File Paths -->
+ <SigningKey>$(ProjectDirectory)\release-key\Google.ProtocolBuffers.snk</SigningKey>
+
+ <!--Tool Paths-->
+ <HgTool>hg.exe</HgTool>
+ <Python>C:\Python25\python.exe</Python>
+ <SnTool>$(registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v7.0A@InstallationFolder)Bin\sn.exe</SnTool>
+ <StampVer>$(LibDirectory)\StampVersion.exe</StampVer>
+ <ZipExePath>$(LibDirectory)\7-Zip 9.20\7za.exe</ZipExePath>
+ <NuGet>$(LibDirectory)\NuGet.exe</NuGet>
+ <ProtogenExePath>$(BuildOutputDirectory)\tools\protogen.exe</ProtogenExePath>
+ </PropertyGroup>
+
+ <!-- Import user settings -->
+ <Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')" />
+
+ <!-- Files -->
+ <ItemGroup>
+ </ItemGroup>
+
+ <!-- Tasks -->
+
+ <Target Name="_Publish" DependsOnTargets="_PrepBuild;_PushAll" />
+
+ <Target Name="_Prerequisites" DependsOnTargets="_CheckEnvironment;_ReadVersion" />
+ <Target Name="_PrepBuild" DependsOnTargets="_Clean;_Prerequisites;_StampVersion;_GenerateSource;_Build;_NugetPack;_HgLabel" />
+ <Target Name="_PushAll" DependsOnTargets="_HgPush;_PkgPush;_NugetPush" />
+
+ <Target Name="_Clean">
+ <MSBuild Properties="Configuration=Debug;" Targets="Clean" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+ <MSBuild Properties="Configuration=Release;" Targets="Clean" Projects="$(MSBuildProjectDirectory)\target.csproj" />
+ <MakeDir Directories="$(BuildTempDirectory)" />
+ <MakeDir Directories="$(BuildOutputDirectory)" />
+ </Target>
+
+ <Target Name="_WriteUserConfig">
+ <ItemGroup>
+ <Lines Include="&lt;Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>" />
+ <Lines Include=" &lt;PropertyGroup>"/>
+ <Lines Include=" &lt;GoogleUsername> (Enter your google-code user/password here) &lt;/GoogleUsername>"/>
+ <Lines Include=" &lt;GooglePassword>&lt;/GooglePassword>"/>
+ <Lines Include=" &lt;/PropertyGroup>" />
+ <Lines Include="&lt;/Project>" />
+ </ItemGroup>
+ <WriteLinesToFile File="$(MSBuildProjectFullPath).user" Lines="@(Lines)" Overwrite="true" Condition="!Exists('$(MSBuildProjectFullPath).user')" />
+ <Exec Command="Notepad.exe $(MSBuildProjectFullPath).user" />
+ </Target>
+
+ <Target Name="_CheckEnvironment">
+ <!-- Require google credentials -->
+ <CallTarget Targets="_WriteUserConfig" Condition=" '$(GooglePassword)' == '' " />
+ <Error Text="Restart after you verify your credentials in $(MSBuildProjectFullPath).user" Condition=" '$(GooglePassword)' == '' " />
+ <!-- Require Win7.0A SDK to verify strong-name -->
+ <Error Text="Unable to locate Win7SDK Tools: $(SnTool)" Condition="!Exists($(SnTool))" />
+ <!-- Require Python 2.5 installed -->
+ <Error Text="Unable to locate Python 2.5: $(Python)" Condition="!Exists($(Python))" />
+ <!-- Require production signing key -->
+ <Exec Command="$(HgTool) clone https://bitbucket.org/rknapp/protobuf-csharp-port-keyfile $(ProjectDirectory)\release-key" Condition="!Exists('$(SigningKey)')" />
+ <Error Text="Unable to locate release signing key: $(SigningKey)" Condition="!Exists($(SigningKey))" />
+ </Target>
+
+ <Target Name="_ReadVersion" Condition=" '$(VersionLabel)' == '' ">
+ <Exec Command="$(HgTool) log -l 1 --template &quot;{rev}&quot; > &quot;$(BuildTempDirectory)\revision.txt&quot;"></Exec>
+ <ReadLinesFromFile File="$(BuildTempDirectory)\revision.txt">
+ <Output TaskParameter="Lines" PropertyName="VersionRevision"/>
+ </ReadLinesFromFile>
+
+ <PropertyGroup>
+ <VersionLabel>$(VersionMajor).$(VersionMinor).$(VersionBuild).$(VersionRevision)</VersionLabel>
+ </PropertyGroup>
+
+ <Message Text="Building version $(VersionLabel)" Importance="high" />
+ </Target>
+
+ <Target Name="_StampVersion" DependsOnTargets="_Prerequisites">
+ <Exec Command="$(StampVer) /major:$(VersionMajor) /minor:$(VersionMinor) /build:$(VersionBuild) /revision:$(VersionRevision)" WorkingDirectory="$(SourceDirectory)" />
+ <Exec Command="FIND &quot;$(VersionLabel)&quot; ProtocolBuffers\Properties\AssemblyInfo.cs" WorkingDirectory="$(SourceDirectory)" />
+ </Target>
+
+ <Target Name="_GenerateSource" DependsOnTargets="_Prerequisites">
+ <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="GenerateProjects;BuildTools;GenerateSource" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+ <Exec Command="&quot;$(SnTool)&quot; -T &quot;$(ProtogenExePath)&quot; > signkey.txt" WorkingDirectory="$(BuildTempDirectory)" />
+ <!-- Make sure we are signing with the correct key -->
+ <Exec Command="FIND &quot;55f7125234beb589&quot; signkey.txt" WorkingDirectory="$(BuildTempDirectory)" />
+ </Target>
+
+ <Target Name="_Build" DependsOnTargets="_Prerequisites">
+ <!-- Release Build -->
+ <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="_CompileAll" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+ <MSBuild Properties="Configuration=Release;AssemblyOriginatorKeyFile=$(SigningKey);PackageName=$(PackagePrefix)$(VersionLabel)-release" Targets="GeneratePackage" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+ <!-- Debug Build -->
+ <MSBuild Condition=" '$(PublishDebug)' == 'true' " Properties="Configuration=Debug;AssemblyOriginatorKeyFile=$(SigningKey)" Targets="_CompileAll" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+ <MSBuild Condition=" '$(PublishDebug)' == 'true' " Properties="Configuration=Debug;AssemblyOriginatorKeyFile=$(SigningKey);PackageName=$(PackagePrefix)$(VersionLabel)-full" Targets="GeneratePackage" Projects="$(MSBuildProjectDirectory)\build.csproj" />
+ </Target>
+
+ <Target Name="_HgLabel" DependsOnTargets="_Prerequisites">
+ <Exec Command="$(HgTool) tag $(VersionLabel)" WorkingDirectory="$(ProjectDirectory)" />
+ <Exec Command="$(HgTool) commit -m &quot;version $(VersionLabel)&quot;" WorkingDirectory="$(ProjectDirectory)" />
+ <Exec Command="$(HgTool) archive $(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip" WorkingDirectory="$(ProjectDirectory)" />
+ </Target>
+
+ <Target Name="_HgPush" DependsOnTargets="_Prerequisites">
+ <Exec Command="$(HgTool) push" WorkingDirectory="$(ProjectDirectory)" />
+ </Target>
+
+ <Target Name="_PkgPush" DependsOnTargets="_Prerequisites">
+ <PropertyGroup>
+ <UploadPackage>$(Python) "$(MSBuildProjectDirectory)\googlecode_upload.py" --project protobuf-csharp-port --user "$(GoogleUsername)" --password "$(GooglePassword)"</UploadPackage>
+
+ <SourcePackage>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip</SourcePackage>
+ <ReleasePackageBin>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-release-binaries.zip</ReleasePackageBin>
+ <ReleasePackageSyb>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-release-symbols.zip</ReleasePackageSyb>
+ <DebugPackageBin>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-full-binaries.zip</DebugPackageBin>
+ <DebugPackageSyb>$(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-full-symbols.zip</DebugPackageSyb>
+ </PropertyGroup>
+
+ <Error Condition="!Exists('$(SourcePackage)')" Text="File not found: $(SourcePackage)" />
+ <Error Condition="!Exists('$(ReleasePackageBin)')" Text="File not found: $(ReleasePackageBin)" />
+ <Error Condition="!Exists('$(ReleasePackageSyb)')" Text="File not found: $(ReleasePackageSyb)" />
+ <Error Condition="'$(PublishDebug)' == 'true' And !Exists('$(DebugPackageBin)')" Text="File not found: $(DebugPackageBin)" />
+ <Error Condition="'$(PublishDebug)' == 'true' And !Exists('$(DebugPackageSyb)')" Text="File not found: $(DebugPackageSyb)" />
+
+ <Exec WorkingDirectory="$(ProjectDirectory)"
+ Command="$(UploadPackage) --labels Type-Source,Featured --summary &quot;Version $(VersionLabel) source&quot; $(SourcePackage)" />
+
+ <Exec WorkingDirectory="$(ProjectDirectory)"
+ Command="$(UploadPackage) --labels Type-Executable,Featured --summary &quot;Version $(VersionLabel) release binaries only&quot; $(ReleasePackageBin)" />
+ <Exec WorkingDirectory="$(ProjectDirectory)"
+ Command="$(UploadPackage) --labels Type-Executable,Featured --summary &quot;Version $(VersionLabel) release binaries and symbols&quot; $(ReleasePackageSyb)" />
+
+ <Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' "
+ Command="$(UploadPackage) --labels Type-Executable,Featured --summary &quot;Version $(VersionLabel) all binaries&quot; $(DebugPackageBin)" />
+ <Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' "
+ Command="$(UploadPackage) --labels Type-Executable,Featured --summary &quot;Version $(VersionLabel) all binaries and symbols&quot; $(DebugPackageSyb)" />
+ </Target>
+
+ <Target Name="_NugetPack" DependsOnTargets="_Prerequisites">
+ <Exec WorkingDirectory="$(MSBuildProjectDirectory)"
+ Command="$(NuGet) update -self" />
+ <Exec WorkingDirectory="$(MSBuildProjectDirectory)"
+ Command="$(NuGet) pack Google.ProtocolBuffers.nuspec -Symbols -Version $(VersionLabel) -NoPackageAnalysis -OutputDirectory $(BuildTempDirectory)" />
+ <Exec WorkingDirectory="$(MSBuildProjectDirectory)"
+ Command="$(NuGet) pack Google.ProtocolBuffersLite.nuspec -Symbols -Version $(VersionLabel) -NoPackageAnalysis -OutputDirectory $(BuildTempDirectory)" />
+ </Target>
+
+ <Target Name="_NugetPush" DependsOnTargets="_Prerequisites">
+ <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffers.$(VersionLabel).nupkg" ContinueOnError="true" />
+ <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffersLite.$(VersionLabel).nupkg" ContinueOnError="true" />
+
+ <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffers.$(VersionLabel).symbols.nupkg" ContinueOnError="true" />
+ <Exec WorkingDirectory="$(BuildTempDirectory)" Command="$(NuGet) push Google.ProtocolBuffersLite.$(VersionLabel).symbols.nupkg" ContinueOnError="true" />
+ </Target>
+
+</Project>
diff --git a/lib/NuGet.exe b/lib/NuGet.exe
index c3960af6..ddc91051 100644
--- a/lib/NuGet.exe
+++ b/lib/NuGet.exe
Binary files differ
diff --git a/src/ProtocolBuffers.sln b/src/ProtocolBuffers.sln
index 64103470..320834ab 100644
--- a/src/ProtocolBuffers.sln
+++ b/src/ProtocolBuffers.sln
@@ -61,11 +61,13 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{66ED1950
..\build\build.bat = ..\build\build.bat
..\build\build.csproj = ..\build\build.csproj
..\build\BuildAll.bat = ..\build\BuildAll.bat
+ ..\build\GenerateProjects.bat = ..\build\GenerateProjects.bat
+ ..\build\PublishTool.bat = ..\build\PublishTool.bat
..\build\Common.targets = ..\build\Common.targets
..\build\GenerateSource.bat = ..\build\GenerateSource.bat
..\build\Google.ProtocolBuffers.nuspec = ..\build\Google.ProtocolBuffers.nuspec
..\build\Google.ProtocolBuffersLite.nuspec = ..\build\Google.ProtocolBuffersLite.nuspec
- ..\build\PublishRelease.bat = ..\build\PublishRelease.bat
+ ..\build\publish.csproj = ..\build\publish.csproj
..\build\RunBenchmarks.bat = ..\build\RunBenchmarks.bat
..\build\target.csproj = ..\build\target.csproj
EndProjectSection