aboutsummaryrefslogtreecommitdiff
path: root/build
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2011-10-02 16:33:22 -0500
committerrogerk <devnull@localhost>2011-10-02 16:33:22 -0500
commitd444748edc798f48d80cb250cc3bfda913d8cfff (patch)
tree804c25c81f12dd82f109d3b960b21b729220078f /build
parent2e89071876750487160fef06295143837d571cd1 (diff)
downloadprotobuf-d444748edc798f48d80cb250cc3bfda913d8cfff.tar.gz
protobuf-d444748edc798f48d80cb250cc3bfda913d8cfff.tar.bz2
protobuf-d444748edc798f48d80cb250cc3bfda913d8cfff.zip
Several build related changes in this commit:
1. Refactoring of build to allow multiple target frameworks 2. Addition of multiple Silverlight versions 3. Renamed *_Silverlight2 configurations to *_Silverlight 4. Added batch files for each framework build (Build20, Build35, Build40) 5. Moved the package building into MSBuild tasks 6. BuildAll.bat now builds all packages in one build 7. Removed Generate*Package.bat batch files (replaced by BuildAll.bat) 8. Removed the ability to build with 3.5 MSBuild 9. Source is only generated with Release/2.0 build of ProtoGen 10. Removed unit testing proto files from packaging 11. Removed the remaining 'pause' statements from all batch files 12. RunBenchmarks target now builds with .NET 2.0 instead of 4.0 13. Benchmark arguments can now be specified with BenchmarkArgs parameter 14. ProtoBench now supports '/log:path' so console can still see progress 15. Updated PublishRelease.bat and *.nuspec for new build output 16. Updated ProtocolBuffers.Serialization.csproj to omit extensions for 2.0 17. Added NUnit console configurations for each .NET framework version
Diffstat (limited to 'build')
-rw-r--r--build/Build.bat10
-rw-r--r--build/Build20.bat8
-rw-r--r--build/BuildAll.bat44
-rw-r--r--build/BuildSilverlight2.bat5
-rw-r--r--build/Common.targets142
-rw-r--r--build/GenerateCompletePackage.bat19
-rw-r--r--build/GenerateReleasePackage.bat13
-rw-r--r--build/Google.ProtocolBuffers.nuspec20
-rw-r--r--build/Google.ProtocolBuffersLite.nuspec22
-rw-r--r--build/PublishRelease.bat27
-rw-r--r--build/RunBenchmarks.bat5
-rw-r--r--build/build.csproj108
-rw-r--r--build/build35.bat6
-rw-r--r--build/build40.bat8
14 files changed, 242 insertions, 195 deletions
diff --git a/build/Build.bat b/build/Build.bat
deleted file mode 100644
index 2b246cad..00000000
--- a/build/Build.bat
+++ /dev/null
@@ -1,10 +0,0 @@
-@echo off
-SET BUILD_TARGET=%1
-SET BUILD_CONFIG=%2
-
-IF "%BUILD_TARGET%"=="" SET BUILD_TARGET=Rebuild
-IF "%BUILD_CONFIG%"=="" SET BUILD_CONFIG=Debug
-
-CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe build.csproj %3 %4 %5 %6 /t:%BUILD_TARGET% /p:BuildConfiguration=%BUILD_CONFIG% /p:Platform="Any CPU" /p:BuildTools=4.0 /toolsversion:4.0"
-
-pause \ No newline at end of file
diff --git a/build/Build20.bat b/build/Build20.bat
new file mode 100644
index 00000000..25ac20a5
--- /dev/null
+++ b/build/Build20.bat
@@ -0,0 +1,8 @@
+@echo off
+SET BUILD_TARGET=%~1
+SET BUILD_CONFIG=%~2
+
+IF "%BUILD_TARGET%"=="" SET BUILD_TARGET=Rebuild
+IF "%BUILD_CONFIG%"=="" SET BUILD_CONFIG=Debug
+
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe build.csproj /toolsversion:4.0 %3 %4 %5 %6 "/t:%BUILD_TARGET%" "/p:BuildConfiguration=%BUILD_CONFIG%;TargetVersion=2"
diff --git a/build/BuildAll.bat b/build/BuildAll.bat
index e80ac8d9..9f2ef1aa 100644
--- a/build/BuildAll.bat
+++ b/build/BuildAll.bat
@@ -1,42 +1,2 @@
-@ECHO OFF
-
-SET PREV_WORKING_DIR=%CD%
-CD %~dp0
-
-REM -- 3.5 Debug build, ensure this continues to work
-%WINDIR%\Microsoft.NET\Framework\v3.5\MSBuild.exe build.csproj /t:Rebuild /p:BuildConfiguration=Debug /p:Platform="Any CPU" /p:BuildTools=3.5 /toolsversion:3.5"
-IF ERRORLEVEL 1 GOTO ERROR
-
-REM -- 4.0 Debug build
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild /p:BuildConfiguration=Debug /p:Platform="Any CPU"
-IF ERRORLEVEL 1 GOTO ERROR
-
-REM -- 4.0 Release build
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild /p:BuildConfiguration=Release /p:Platform="Any CPU"
-IF ERRORLEVEL 1 GOTO ERROR
-
-IF EXIST "%ProgramFiles%\MSBuild\Microsoft\Silverlight\v2.0\Microsoft.Silverlight.CSharp.targets" GOTO SILVERLIGHT
-IF EXIST "%ProgramFiles(x86)%\MSBuild\Microsoft\Silverlight\v2.0\Microsoft.Silverlight.CSharp.targets" GOTO SILVERLIGHT
-
-ECHO Unable to locate %ProgramFiles(x86)%\MSBuild\Microsoft\Silverlight\v2.0
-GOTO ERROR
-
-:SILVERLIGHT
-
-REM -- 4.0 Debug_Silverlight2 build
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild /p:BuildConfiguration=Debug_Silverlight2 /p:Platform="Any CPU"
-IF ERRORLEVEL 1 GOTO ERROR
-
-REM -- 4.0 Release_Silverlight2 build
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild /p:BuildConfiguration=Release_Silverlight2 /p:Platform="Any CPU"
-IF ERRORLEVEL 1 GOTO ERROR
-
-GOTO END
-
-:ERROR
-CD %PREV_WORKING_DIR%
-PAUSE
-
-:END
-CD %PREV_WORKING_DIR%
-SET PREV_WORKING_DIR= \ No newline at end of file
+@echo off
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe build.csproj /t:FullBuild /toolsversion:4.0 %1 %2 %3 %4 %5 %6
diff --git a/build/BuildSilverlight2.bat b/build/BuildSilverlight2.bat
index 1baccacf..6fddcb08 100644
--- a/build/BuildSilverlight2.bat
+++ b/build/BuildSilverlight2.bat
@@ -1,5 +1,2 @@
@echo off
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Build /p:BuildConfiguration=Debug_Silverlight2 /p:Platform="Any CPU"
-
-pause \ No newline at end of file
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe build.csproj /toolsversion:4.0 /t:RunBenchmarks %1 %2 %3 %4 "/p:BuildConfiguration=Debug;TargetVersion=2"
diff --git a/build/Common.targets b/build/Common.targets
index 140ea8f3..4e429999 100644
--- a/build/Common.targets
+++ b/build/Common.targets
@@ -2,10 +2,43 @@
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+<!-- **********************************************************************************************
+Targets For FullBuild
+*********************************************************************************************** -->
+
+ <Target Name="_FullBuild" DependsOnTargets="_CleanOutputDirectory;_BuildProtoGen;_GenerateSource;_CopyGeneratedSource">
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;TargetVersion=2" Targets="_BuildAllConfigurations" />
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;TargetVersion=3" Targets="_BuildAllConfigurations" />
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;TargetVersion=4" Targets="_BuildAllConfigurations" />
+ </Target>
+
+ <Target Name="_BuildAllConfigurations">
+ <!-- Release Package -->
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);BuildConfiguration=Release" Targets="_BuildConfiguration" />
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);BuildConfiguration=Release_Silverlight" Targets="_BuildConfiguration" />
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);PackageName=Release-$(ForcedFrameworkVersion)" Targets="_GeneratePackage" />
+ <!-- Full Package -->
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);BuildConfiguration=Debug" Targets="_BuildConfiguration" />
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);BuildConfiguration=Debug_Silverlight" Targets="_BuildConfiguration" />
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;Platform=$(Platform);TargetVersion=$(TargetVersion);PackageName=Full-$(ForcedFrameworkVersion)" Targets="_GeneratePackage" />
+ </Target>
+
+ <Target Name="_BuildConfiguration" DependsOnTargets="_ReportConfig;_Clean;_BuildSolution;_Test;_PreparePackageComponent" />
+
+ <Target Name="_ReportConfig">
+ <Message Importance="high" Text="
+
+Building $(BuildConfiguration) configuration for .NET Framework $(ForcedFrameworkVersion) $(Platform)" />
+ </Target>
+
+<!-- **********************************************************************************************
+Targets For Build
+*********************************************************************************************** -->
+
<Target Name="_BuildSolution">
<Message Text="Running $(SolutionTarget) $(BuildConfiguration) with $(BuildTools) on $(SolutionFile)" Importance="normal" />
<MSBuild Targets="$(SolutionTarget)" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)"
- Properties="Configuration=$(BuildConfiguration);$(ForcedFrameworkVersion)TreatWarningsAsErrors=true;"
+ Properties="Configuration=$(BuildConfiguration);Platform=$(Platform);TargetFrameworkVersion=$(ForcedFrameworkVersion);TreatWarningsAsErrors=true;SilverlightVersion=$(SilverlightVersion)"
/>
</Target>
@@ -13,73 +46,119 @@
<RemoveDir Directories="@(WorkingDirectories)" Condition="Exists(%(WorkingDirectories.Identity))" />
<MakeDir Directories="@(WorkingDirectories)" />
- <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Clean;BuildConfiguration=$(BuildConfiguration)" Targets="_BuildSolution" ContinueOnError="true" />
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Clean;BuildConfiguration=$(BuildConfiguration);Platform=$(Platform)" Targets="_BuildSolution" ContinueOnError="true" />
</Target>
<Target Name="_Compile">
- <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;BuildConfiguration=$(BuildConfiguration)" Targets="_BuildSolution" />
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;BuildConfiguration=$(BuildConfiguration);Platform=$(Platform)" Targets="_BuildSolution" />
+ </Target>
+
+ <Target Name="Requires20">
+ <Error Text="Must be run with TargetVersion=2" Condition=" '$(TargetVersion)' != '2' " />
+ </Target>
+
+ <Target Name="RequiresRelease">
+ <Error Text="Must be run with BuildConfiguration=Release" Condition=" '$(BuildConfiguration)' != 'Release' " />
</Target>
- <Target Name="_CompileGeneratedSource" DependsOnTargets="_CopyGeneratedSource">
- <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="Step=Two;SolutionTarget=Build;BuildConfiguration=$(BuildConfiguration)" Targets="_BuildSolution" />
+ <!-- **********************************************************************************************
+Targets For GenerateSource
+*********************************************************************************************** -->
+
+ <Target Name="_BuildProtoGen">
+ <MSBuild Targets="Build" ToolsVersion="3.5"
+ Projects="$(ProjectDirectory)\src\ProtocolBuffers\ProtocolBuffers.csproj;$(ProjectDirectory)\src\ProtoGen\ProtoGen.csproj"
+ Properties="Step=_BuildProtoGen;Configuration=Release;Platform=AnyCPU;TargetFrameworkVersion=v2.0;DebugType=none;DocumentationFile=;TreatWarningsAsErrors=true;OutputPath=$(BuildOutputDirectory)\ProtoGen;" />
+ </Target>
+
+ <Target Name="_CleanTempSource">
+ <Message Importance="normal" Text="Cleaning source directory $(SourceTempDirectory)"/>
+ <RemoveDir Directories="$(SourceTempDirectory)" Condition="Exists($(SourceTempDirectory))" />
+ <MakeDir Directories="$(SourceTempDirectory)" />
</Target>
- <Target Name="_GenerateSource">
- <Exec Command="$(ProtocExePath) --proto_path=$(ProtosDirectory) --descriptor_set_out=compiled.pb @(Protos->'%(RelativeDir)%(Filename)%(Extension)', ' ')" WorkingDirectory="$(BuildTempDirectory)" />
- <Exec Command="$(ProtogenExePath) compiled.pb" WorkingDirectory="$(BuildTempDirectory)" />
+ <Target Name="_GenerateSource" DependsOnTargets="_CleanTempSource">
+ <Message Importance="high" Text="Generating source from proto files" />
+ <Exec Command="$(ProtocExePath) --proto_path=$(ProtosDirectory) --descriptor_set_out=compiled.pb @(Protos->'%(RelativeDir)%(Filename)%(Extension)', ' ')" WorkingDirectory="$(SourceTempDirectory)" />
+ <Exec Command="$(ProtogenExePath) compiled.pb" WorkingDirectory="$(SourceTempDirectory)" />
<!-- Generate the AddressBookProtos.cs directly -->
- <Exec Command="$(ProtogenExePath) --protoc_dir=$(LibDirectory) --proto_path=$(ProtosDirectory) $(ProtosDirectory)\tutorial\addressbook.proto -namespace=Google.ProtocolBuffers.Examples.AddressBook -umbrella_classname=AddressBookProtos" WorkingDirectory="$(BuildTempDirectory)" />
+ <Exec Command="$(ProtogenExePath) --protoc_dir=$(LibDirectory) --proto_path=$(ProtosDirectory) $(ProtosDirectory)\tutorial\addressbook.proto -namespace=Google.ProtocolBuffers.Examples.AddressBook -umbrella_classname=AddressBookProtos" WorkingDirectory="$(SourceTempDirectory)" />
</Target>
<Target Name="_CopyGeneratedSource" DependsOnTargets="_GenerateSource">
<Copy SourceFiles="%(GeneratedSource.Identity)" DestinationFiles="%(GeneratedSource.TargetDirectory)\%(GeneratedSource.Filename)%(GeneratedSource.Extension)" />
</Target>
- <Target Name="_Test" DependsOnTargets="_CompileGeneratedSource" Condition="$(BuildConfiguration)=='Debug' or $(BuildConfiguration)=='Release'">
+<!-- **********************************************************************************************
+Targets For Test
+*********************************************************************************************** -->
+
+ <Target Name="_Test" Condition="$(BuildConfiguration)=='Debug' or $(BuildConfiguration)=='Release'">
<CallTarget Targets="_RunTests" />
</Target>
<Target Name="_RunTests">
- <Exec Command="&quot;$(NUnitExePath)&quot; /noshadow %(TestContainer.Identity) /xml:$(BuildTempDirectory)\..\%(TestContainer.Filename).$(BuildConfiguration).xml" />
+ <Copy SourceFiles="$(NUnitExeConfig)" DestinationFiles="$(NUnitExePath).config" />
+ <Exec Command="&quot;$(NUnitExePath)&quot; /nologo /noshadow %(TestContainer.Identity) /xml:$(BuildTempDirectory)\%(TestContainer.Filename).$(BuildConfiguration).xml" />
</Target>
+
+<!-- **********************************************************************************************
+Targets For Package
+*********************************************************************************************** -->
- <!--## Package Generation ##-->
<Target Name="_CleanOutputDirectory">
- <RemoveDir Directories="$(ProjectDirectory)\build_output\Package" ContinueOnError="true" />
- <RemoveDir Directories="$(ProjectDirectory)\build_output" ContinueOnError="true" />
- <MakeDir Directories="$(ProjectDirectory)\build_output" ContinueOnError="true" />
+ <RemoveDir Directories="$(BuildOutputPackage)" ContinueOnError="true" />
+ <RemoveDir Directories="$(BuildOutputDirectory)" ContinueOnError="true" />
+ <MakeDir Directories="$(BuildOutputDirectory)" ContinueOnError="true" />
</Target>
<Target Name="_PreparePackageComponent">
- <Copy SourceFiles="@(DynamicPackageItem)" DestinationFolder="$(ProjectDirectory)\build_output\Package\$(BuildConfiguration)\%(DynamicPackageItem.TargetDirectory)\%(DynamicPackageItem.RecursiveDir)" />
+ <Copy SourceFiles="@(DynamicPackageItem)" DestinationFolder="$(BuildOutputPackage)\$(BuildConfiguration)\%(DynamicPackageItem.TargetDirectory)\%(DynamicPackageItem.RecursiveDir)" />
</Target>
<Target Name="_GeneratePackage">
- <Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(ProjectDirectory)\build_output\Package\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" />
- <Exec Command="&quot;$(ZipExePath)&quot; a -tzip ..\$(PackageName) * -r" WorkingDirectory="$(ProjectDirectory)\build_output\Package" />
+ <Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputPackage)\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" />
+ <Exec Command="&quot;$(ZipExePath)&quot; a -tzip ..\$(PackageName).zip * -r" WorkingDirectory="$(BuildOutputPackage)" />
</Target>
- <!--## Benchmark ##-->
- <Target Name="_GenerateBenchmarkSource" DependsOnTargets="_Clean;_Compile">
+
+<!-- **********************************************************************************************
+Targets For Benchmark
+*********************************************************************************************** -->
+
+ <Target Name="_GenerateBenchmarkSource">
<PropertyGroup>
<Args>$(BenchmarkProtosDirectory)\google_size.proto $(BenchmarkProtosDirectory)\google_speed.proto</Args>
</PropertyGroup>
- <Exec Command="$(ProtocExePath) --proto_path=$(BenchmarkProtosDirectory);$(ProtosDirectory) --include_imports=compiled.pb --descriptor_set_out=compiled.pb $(Args)" WorkingDirectory="$(BuildTempDirectory)" />
- <Exec Command="$(ProtogenExePath) compiled.pb" WorkingDirectory="$(BuildTempDirectory)" />
+ <Exec Command="$(ProtocExePath) --proto_path=$(BenchmarkProtosDirectory);$(ProtosDirectory) --include_imports=compiled.pb --descriptor_set_out=compiled.pb $(Args)" WorkingDirectory="$(SourceTempDirectory)" />
+ <Exec Command="$(ProtogenExePath) compiled.pb" WorkingDirectory="$(SourceTempDirectory)" />
+ </Target>
+
+ <Target Name="_CompileBenchmarkAssemblyInFramework20" Condition=" '$(MSBuildToolsVersion)' != '2.0' ">
+ <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;BuildConfiguration=$(BuildConfiguration);Platform=$(Platform)"
+ Targets="_CompileBenchmarkAssembly" ToolsVersion="2.0" />
</Target>
<Target Name="_CompileBenchmarkAssembly" DependsOnTargets="_GenerateBenchmarkSource">
+ <Error Text="Must be run with Framework 2.0" Condition=" '$(MSBuildToolsVersion)' != '2.0' " />
+
<ItemGroup>
- <BenchmarkSources Include="$(BuildTempDirectory)\GoogleSizeProtoFile.cs" />
- <BenchmarkSources Include="$(BuildTempDirectory)\GoogleSpeedProtoFile.cs" />
+ <BenchmarkSources Include="$(SourceTempDirectory)\GoogleSizeProtoFile.cs" />
+ <BenchmarkSources Include="$(SourceTempDirectory)\GoogleSpeedProtoFile.cs" />
<BenchmarkSources Include="$(SourceDirectory)\ProtoBench\Properties\AssemblyInfo.cs" />
</ItemGroup>
- <Csc TargetType="library" OutputAssembly="$(BuildTempDirectory)\BenchmarkTypes.dll" Optimize="true" Sources="@(BenchmarkSources)" References="$(SourceDirectory)\ProtocolBuffers\bin\$(BuildConfiguration)\Google.ProtocolBuffers.dll" />
+ <Csc
+ TargetType="library"
+ OutputAssembly="$(BuildTempDirectory)\BenchmarkTypes.dll"
+ Optimize="true"
+ Sources="@(BenchmarkSources)"
+ References="$(SourceDirectory)\ProtocolBuffers\bin\$(BuildConfiguration)\Google.ProtocolBuffers.dll"
+ />
</Target>
- <Target Name="_PrepareBenchmarkEnvironment" DependsOnTargets="_CompileBenchmarkAssembly">
+ <Target Name="_PrepareBenchmarkEnvironment" DependsOnTargets="_CompileBenchmarkAssemblyInFramework20">
<ItemGroup>
<BenchmarkResources Include="$(BenchmarkProtosDirectory)\google_message1.dat" />
<BenchmarkResources Include="$(BenchmarkProtosDirectory)\google_message2.dat" />
@@ -93,7 +172,6 @@
<Target Name="_RunBenchmarks" DependsOnTargets="_PrepareBenchmarkEnvironment">
<ItemGroup>
- <BenchmarkParameter Include="/v2" />
<BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage1,BenchmarkTypes" />
<BenchmarkParameter Include="google_message1.dat" />
<BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage1,BenchmarkTypes" />
@@ -104,12 +182,10 @@
<BenchmarkParameter Include="google_message2.dat" />
</ItemGroup>
- <PropertyGroup>
- <BenchmarkParameterList>@(BenchmarkParameter)</BenchmarkParameterList>
- <Args>$(BenchmarkParameterList.Replace(`;`,` `))</Args>
- </PropertyGroup>
-
- <Exec Command="&quot;$(ProtoBenchExePath)&quot; @(BenchmarkParameter->'%(Identity)', ' ') > &quot;$(BuildTempDirectory)\..\BenchmarkResults.txt&quot;" WorkingDirectory="$(BuildTempDirectory)" />
+ <Message Text="Running $(ProtoBenchExePath) from $(BuildTempDirectory)" />
+ <Exec Command="&quot;$(ProtoBenchExePath)&quot; $(BenchmarkArgs) @(BenchmarkParameter->'%(Identity)', ' ') &quot;/log:$(BenchmarkOutputFile)&quot;"
+ WorkingDirectory="$(BuildTempDirectory)" />
+
</Target>
</Project> \ No newline at end of file
diff --git a/build/GenerateCompletePackage.bat b/build/GenerateCompletePackage.bat
deleted file mode 100644
index e2815961..00000000
--- a/build/GenerateCompletePackage.bat
+++ /dev/null
@@ -1,19 +0,0 @@
-@ECHO OFF
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:PrepareOutputDirectory
-IF ERRORLEVEL 1 GOTO END
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild;PreparePackageComponent /p:BuildConfiguration=Debug /p:Platform="Any CPU" %PROTOBUF_KEY_FILE%
-IF ERRORLEVEL 1 GOTO END
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild;PreparePackageComponent /p:BuildConfiguration=Debug_Silverlight2 /p:Platform="Any CPU" %PROTOBUF_KEY_FILE%
-IF ERRORLEVEL 1 GOTO END
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild;PreparePackageComponent /p:BuildConfiguration=Release /p:Platform="Any CPU" %PROTOBUF_KEY_FILE%
-IF ERRORLEVEL 1 GOTO END
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild;PreparePackageComponent /p:BuildConfiguration=Release_Silverlight2 /p:Platform="Any CPU" %PROTOBUF_KEY_FILE%
-IF ERRORLEVEL 1 GOTO END
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:GeneratePackage /p:PackageName=AllBinariesAndSource.zip /p:Platform="Any CPU"
-
-:END \ No newline at end of file
diff --git a/build/GenerateReleasePackage.bat b/build/GenerateReleasePackage.bat
deleted file mode 100644
index bd2a7f86..00000000
--- a/build/GenerateReleasePackage.bat
+++ /dev/null
@@ -1,13 +0,0 @@
-@ECHO OFF
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:PrepareOutputDirectory
-IF ERRORLEVEL 1 GOTO END
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild;PreparePackageComponent /p:BuildConfiguration=Release /p:Platform="Any CPU" %PROTOBUF_KEY_FILE%
-IF ERRORLEVEL 1 GOTO END
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:Rebuild;PreparePackageComponent /p:BuildConfiguration=Release_Silverlight2 /p:Platform="Any CPU" %PROTOBUF_KEY_FILE%
-IF ERRORLEVEL 1 GOTO END
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild build.csproj /m /t:GeneratePackage /p:PackageName=ReleaseBinaries.zip /p:Platform="Any CPU"
-
-:END \ No newline at end of file
diff --git a/build/Google.ProtocolBuffers.nuspec b/build/Google.ProtocolBuffers.nuspec
index 64f17b41..ec62523a 100644
--- a/build/Google.ProtocolBuffers.nuspec
+++ b/build/Google.ProtocolBuffers.nuspec
@@ -43,16 +43,22 @@ Language Guide - http://code.google.com/apis/protocolbuffers/docs/proto.html
</metadata>
<files>
<!-- Release Binaries -->
- <file src="..\build_output\Package\Release\Google.ProtocolBuffers.???" target="lib\net20" />
- <file src="..\build_output\Package\Release\Google.ProtocolBuffers.Serialization.???" target="lib\net20" />
+ <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\Package\Release_Silverlight2\Google.ProtocolBuffers.???" target="lib\sl20" />
- <file src="..\build_output\Package\Release_Silverlight2\Google.ProtocolBuffers.Serialization.???" target="lib\sl20" />
+ <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" />
<!-- Tools -->
<file src="..\lib\Protoc.exe" target="tools" />
- <file src="..\build_output\Package\Release\Google.ProtocolBuffers.dll" target="tools" />
- <file src="..\build_output\Package\Release\ProtoGen.exe" target="tools" />
- <file src="..\build_output\Package\Release\ProtoGen.exe.config" target="tools" />
+ <file src="..\build_output\ProtoGen\*" target="tools" />
<!-- Content -->
<file src="..\CHANGES.txt" target="content"/>
<file src="..\license.txt" target="content\licenses"/>
diff --git a/build/Google.ProtocolBuffersLite.nuspec b/build/Google.ProtocolBuffersLite.nuspec
index 75646ce8..819eab62 100644
--- a/build/Google.ProtocolBuffersLite.nuspec
+++ b/build/Google.ProtocolBuffersLite.nuspec
@@ -43,23 +43,29 @@ Language Guide - http://code.google.com/apis/protocolbuffers/docs/proto.html
</metadata>
<files>
<!-- Release Binaries -->
- <file src="..\build_output\Package\Release\Google.ProtocolBuffersLite.???" target="lib\net20" />
- <file src="..\build_output\Package\Release\Google.ProtocolBuffersLite.Serialization.???" target="lib\net20" />
+ <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\Package\Release_Silverlight2\Google.ProtocolBuffersLite.???" target="lib\sl20" />
- <file src="..\build_output\Package\Release_Silverlight2\Google.ProtocolBuffersLite.Serialization.???" target="lib\sl20" />
+ <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" />
<!-- Tools -->
<file src="..\lib\Protoc.exe" target="tools" />
- <file src="..\build_output\Package\Release\Google.ProtocolBuffers.dll" target="tools" />
- <file src="..\build_output\Package\Release\ProtoGen.exe" target="tools" />
- <file src="..\build_output\Package\Release\ProtoGen.exe.config" target="tools" />
+ <file src="..\build_output\ProtoGen\*" target="tools" />
<!-- 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="..\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
index 15f7bdcb..f02bdb10 100644
--- a/build/PublishRelease.bat
+++ b/build/PublishRelease.bat
@@ -22,19 +22,24 @@ CMD.exe /Q /C "CD .. && lib\StampVersion.exe /major:2 /minor:4 /build:1 /revisio
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
-SET PROTOBUF_KEY_FILE="/p:AssemblyOriginatorKeyFile=%~dp0..\release-key\Google.ProtocolBuffers.snk"
MD "%2"
-CMD.exe /Q /C "GenerateCompletePackage.bat"
-COPY /y ..\build_output\AllBinariesAndSource.zip %2\protobuf-csharp-port-%2-full-binaries.zip
-CMD.exe /Q /C "GenerateReleasePackage.bat"
-COPY /y ..\build_output\ReleaseBinaries.zip %2\protobuf-csharp-port-%2-release-binaries.zip
+CMD.exe /Q /C "BuildAll.bat /verbosity:minimal "/p:AssemblyOriginatorKeyFile=%~dp0..\release-key\Google.ProtocolBuffers.snk"
+
+COPY /y ..\build_output\Release-v2.0.zip %2\protobuf-csharp-port-%2-net20-release-binaries.zip
+COPY /y ..\build_output\Release-v3.5.zip %2\protobuf-csharp-port-%2-net35-release-binaries.zip
+COPY /y ..\build_output\Release-v4.0.zip %2\protobuf-csharp-port-%2-net40-release-binaries.zip
+
+COPY /y ..\build_output\Full-v2.0.zip %2\protobuf-csharp-port-%2-net20-full-binaries.zip
+COPY /y ..\build_output\Full-v3.5.zip %2\protobuf-csharp-port-%2-net35-full-binaries.zip
+COPY /y ..\build_output\Full-v4.0.zip %2\protobuf-csharp-port-%2-net40-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
-SET PROTOBUF_KEY_FILE=
-"%WIN7SDK_DIR%sn.exe" -T ..\build_output\Package\Release\Google.ProtocolBuffers.dll
+"%WIN7SDK_DIR%sn.exe" -T ..\build_output\v2.0\Release\Google.ProtocolBuffers.dll
@ECHO.
@ECHO ***********************************************************
@ECHO IMPORTANT: Verify the above key output is: 55f7125234beb589
@@ -61,8 +66,12 @@ hg push
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
+%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries for .NET 2.0 (all configurations)" %2\protobuf-csharp-port-%2-net20-full-binaries.zip
+%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries for .NET 3.5 (all configurations)" %2\protobuf-csharp-port-%2-net35-full-binaries.zip
+%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries for .NET 4.0 (all configurations)" %2\protobuf-csharp-port-%2-net40-full-binaries.zip
+%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries for .NET 2.0 (release only)" %2\protobuf-csharp-port-%2-net20-release-binaries.zip
+%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries for .NET 3.5 (release only)" %2\protobuf-csharp-port-%2-net35-release-binaries.zip
+%GOOGLEUPLOAD% --labels Type-Executable,Featured --summary "Version %2 binaries for .NET 4.0 (release only)" %2\protobuf-csharp-port-%2-net40-release-binaries.zip
@SET GOOGLEUPLOAD=
@ECHO.
diff --git a/build/RunBenchmarks.bat b/build/RunBenchmarks.bat
index 5a32f3f2..5cb3e6a5 100644
--- a/build/RunBenchmarks.bat
+++ b/build/RunBenchmarks.bat
@@ -1,5 +1,2 @@
@echo off
-
-%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild %~dp0\build.csproj /m /t:RunBenchmarks /p:BuildConfiguration=Release /p:Platform="Any CPU"
-
-pause \ No newline at end of file
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe build.csproj /toolsversion:4.0 /t:RunBenchmarks %1 %2 %3 %4 "/p:BuildConfiguration=Release;TargetVersion=2"
diff --git a/build/build.csproj b/build/build.csproj
index d2d5d04c..bbc4392a 100644
--- a/build/build.csproj
+++ b/build/build.csproj
@@ -4,29 +4,45 @@
<PropertyGroup>
<ProjectName>Protocol Buffers</ProjectName>
<BuildConfiguration Condition=" '$(BuildConfiguration)' == '' ">Error</BuildConfiguration>
- <BuildTools Condition=" '$(BuildTools)' == '' ">4.0</BuildTools>
- <ForcedFrameworkVersion Condition=" '$(BuildTools)' == '3.5' ">TargetFrameworkVersion=v2.0;</ForcedFrameworkVersion>
-
+ <Platform>Any CPU</Platform>
+ <!-- BuildToolsVersion -->
+ <BuildTools>3.5</BuildTools>
+ <BuildTools Condition=" '$(TargetVersion)' == '4' ">4.0</BuildTools>
+ <!-- TargetFrameworkVersion -->
+ <ForcedFrameworkVersion>v2.0</ForcedFrameworkVersion>
+ <ForcedFrameworkVersion Condition=" '$(TargetVersion)' == '3' ">v3.5</ForcedFrameworkVersion>
+ <ForcedFrameworkVersion Condition=" '$(TargetVersion)' == '4' ">v4.0</ForcedFrameworkVersion>
+ <TargetFrameworkVersion>$(ForcedFrameworkVersion)</TargetFrameworkVersion>
+ <!-- SilverlightVersion -->
+ <SilverlightVersion>v2.0</SilverlightVersion>
+ <SilverlightVersion Condition=" '$(TargetVersion)' == '3' ">v3.0</SilverlightVersion>
+ <SilverlightVersion Condition=" '$(TargetVersion)' == '4' ">v4.0</SilverlightVersion>
<!--Directory Paths-->
<ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory>
<SourceDirectory>$(ProjectDirectory)\src</SourceDirectory>
<LibDirectory>$(ProjectDirectory)\lib</LibDirectory>
<ProtosDirectory>$(ProjectDirectory)\protos</ProtosDirectory>
+
+ <SourceTempDirectory>$(ProjectDirectory)\build_temp\GeneratedSource</SourceTempDirectory>
+ <BuildTempDirectory>$(ProjectDirectory)\build_temp\$(BuildConfiguration)$(TargetVersion)</BuildTempDirectory>
+ <BuildOutputDirectory>$(ProjectDirectory)\build_output</BuildOutputDirectory>
+ <BuildOutputPackage>$(BuildOutputDirectory)\$(ForcedFrameworkVersion)</BuildOutputPackage>
+
+ <BenchmarkArgs>/v2 /fast /formats</BenchmarkArgs>
+ <BenchmarkOutputFile>$(BuildTempDirectory)\..\BenchmarkResults.txt</BenchmarkOutputFile>
<BenchmarkProtosDirectory>$(ProjectDirectory)\benchmarks</BenchmarkProtosDirectory>
- <BuildTempDirectory>$(ProjectDirectory)\build_temp\$(BuildConfiguration)</BuildTempDirectory>
- <BuildOutputDirectory>$(ProjectDirectory)\build_output\$(BuildConfiguration)</BuildOutputDirectory>
<PackageName Condition=" '$(PackageName)' == '' ">$(BuildConfiguration)</PackageName>
<!--File Paths-->
- <SolutionFile Condition=" '$(BuildTools)' == '4.0' ">$(SourceDirectory)\ProtocolBuffers.sln</SolutionFile>
- <SolutionFile Condition=" '$(BuildTools)' == '3.5' ">$(SourceDirectory)\ProtocolBuffers2008.sln</SolutionFile>
+ <SolutionFile>$(SourceDirectory)\ProtocolBuffers.sln</SolutionFile>
<!--Tool Paths-->
<ProtocExePath>$(LibDirectory)\protoc.exe</ProtocExePath>
- <ProtogenExePath>$(SourceDirectory)\ProtoGen\bin\$(BuildConfiguration)\protogen.exe</ProtogenExePath>
+ <ProtogenExePath>$(BuildOutputDirectory)\ProtoGen\protogen.exe</ProtogenExePath>
<ProtoBenchExePath>$(BuildTempDirectory)\ProtoBench.exe</ProtoBenchExePath>
<NUnitExePath>$(LibDirectory)\NUnit 2.2.8.0\nunit-console.exe</NUnitExePath>
+ <NUnitExeConfig>$(LibDirectory)\NUnit 2.2.8.0\nunit-console.$(ForcedFrameworkVersion).config</NUnitExeConfig>
<ZipExePath>$(LibDirectory)\7-Zip 9.20\7za.exe</ZipExePath>
</PropertyGroup>
@@ -34,7 +50,6 @@
<ItemGroup>
<WorkingDirectories Include="$(BuildTempDirectory)" />
- <WorkingDirectories Include="$(BuildOutputDirectory)" />
<Protos Include="$(ProtosDirectory)\extest\unittest_issues.proto" />
<Protos Include="$(ProtosDirectory)\extest\unittest_extras.proto" />
@@ -62,92 +77,92 @@
<Protos Include="$(ProtosDirectory)\google\test\google_speed.proto" />
<!-- Main protos -->
- <GeneratedSource Include="$(BuildTempDirectory)\CSharpOptions.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\CSharpOptions.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers\DescriptorProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\DescriptorProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\DescriptorProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers\DescriptorProtos</TargetDirectory>
</GeneratedSource>
<!-- Address book sample -->
- <GeneratedSource Include="$(BuildTempDirectory)\AddressBookProtos.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\AddressBookProtos.cs">
<TargetDirectory>$(SourceDirectory)\AddressBook</TargetDirectory>
</GeneratedSource>
<!-- Unit test -->
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestExtrasProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestExtrasIssuesProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasIssuesProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestXmlSerializerTestProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestXmlSerializerTestProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestCSharpOptionsProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestCSharpOptionsProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestCustomOptionsProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestCustomOptionsProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestEmbedOptimizeForProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestEmbedOptimizeForProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestEmptyProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestEmptyProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestImportLiteProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportLiteProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestImportProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestMessageSetProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestMessageSetProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestNoGenericServicesProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestNoGenericServicesProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestOptimizeForProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestOptimizeForProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestRpcInterop.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestRpcInterop.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestRpcInteropLite.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestRpcInteropLite.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestGenericServices.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGenericServices.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
<!-- Lite unit test -->
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestExtrasFullProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasFullProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestExtrasLiteProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasLiteProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestImportLiteProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportLiteProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestImportProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestLiteImportNonLiteProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestLiteImportNonLiteProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestLiteProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestLiteProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestGoogleSizeProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGoogleSizeProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
- <GeneratedSource Include="$(BuildTempDirectory)\UnitTestGoogleSpeedProtoFile.cs">
+ <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGoogleSpeedProtoFile.cs">
<TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory>
</GeneratedSource>
@@ -167,8 +182,14 @@
<StaticPackageItem Include="$(ProjectDirectory)\CHANGES.txt" />
<StaticPackageItem Include="$(ProjectDirectory)\license.txt" />
- <StaticPackageItem Include="$(ProjectDirectory)\protos\**\*.*">
- <TargetDirectory>\protos</TargetDirectory>
+ <StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\descriptor.proto">
+ <TargetDirectory>\protos\google\protobuf</TargetDirectory>
+ </StaticPackageItem>
+ <StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\csharp_options.proto">
+ <TargetDirectory>\protos\google\protobuf</TargetDirectory>
+ </StaticPackageItem>
+ <StaticPackageItem Include="$(ProjectDirectory)\protos\tutorial\addressbook.proto">
+ <TargetDirectory>\protos\tutorial</TargetDirectory>
</StaticPackageItem>
<StaticPackageItem Include="$(LibDirectory)\Protoc*">
<TargetDirectory>\Protoc</TargetDirectory>
@@ -178,14 +199,15 @@
<!-- targets -->
<Target Name="Clean" DependsOnTargets="_Clean" />
- <Target Name="Build" DependsOnTargets="_Compile;_Test" />
+ <Target Name="Build" DependsOnTargets="GenerateSource;_Compile;_Test" />
<Target Name="Test" DependsOnTargets="_RunTests" />
<Target Name="Rebuild" DependsOnTargets="Clean;Build" />
- <Target Name="GenerateSource" DependsOnTargets="_GenerateSource;_CopyGeneratedSource" />
+ <Target Name="GenerateSource" DependsOnTargets="_BuildProtoGen;_GenerateSource;_CopyGeneratedSource" />
<Target Name="BuildPackage" DependsOnTargets="PrepareOutputDirectory;PreparePackageComponent;GeneratePackage" />
<Target Name="PrepareOutputDirectory" DependsOnTargets="_CleanOutputDirectory" />
<Target Name="PreparePackageComponent" DependsOnTargets="_PreparePackageComponent" />
<Target Name="GeneratePackage" DependsOnTargets="_GeneratePackage" />
- <Target Name="RunBenchmarks" DependsOnTargets="_RunBenchmarks" />
-
+ <Target Name="RunBenchmarks" DependsOnTargets="Requires20;RequiresRelease;Rebuild;_RunBenchmarks" />
+ <Target Name="FullBuild" DependsOnTargets="_FullBuild" />
+
</Project>
diff --git a/build/build35.bat b/build/build35.bat
index 02f803bd..34cb141b 100644
--- a/build/build35.bat
+++ b/build/build35.bat
@@ -1,8 +1,8 @@
@echo off
-SET BUILD_TARGET=%1
-SET BUILD_CONFIG=%2
+SET BUILD_TARGET=%~1
+SET BUILD_CONFIG=%~2
IF "%BUILD_TARGET%"=="" SET BUILD_TARGET=Rebuild
IF "%BUILD_CONFIG%"=="" SET BUILD_CONFIG=Debug
-CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v3.5\MSBuild.exe build.csproj %3 %4 %5 %6 /t:%BUILD_TARGET% /p:BuildConfiguration=%BUILD_CONFIG% /p:Platform="Any CPU" /p:BuildTools=3.5 /toolsversion:3.5"
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe build.csproj /toolsversion:4.0 %3 %4 %5 %6 "/t:%BUILD_TARGET%" "/p:BuildConfiguration=%BUILD_CONFIG%;TargetVersion=3"
diff --git a/build/build40.bat b/build/build40.bat
new file mode 100644
index 00000000..1a0518ce
--- /dev/null
+++ b/build/build40.bat
@@ -0,0 +1,8 @@
+@echo off
+SET BUILD_TARGET=%~1
+SET BUILD_CONFIG=%~2
+
+IF "%BUILD_TARGET%"=="" SET BUILD_TARGET=Rebuild
+IF "%BUILD_CONFIG%"=="" SET BUILD_CONFIG=Debug
+
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe build.csproj /toolsversion:4.0 %3 %4 %5 %6 "/t:%BUILD_TARGET%" "/p:BuildConfiguration=%BUILD_CONFIG%;TargetVersion=4"