diff options
author | Jan Tattermusch <jtattermusch@google.com> | 2015-04-16 09:55:22 -0700 |
---|---|---|
committer | Jan Tattermusch <jtattermusch@google.com> | 2015-04-16 09:55:22 -0700 |
commit | 84fa3e2bbc876428efd0c99700f146115a9d5162 (patch) | |
tree | 47baa5dafe3c3ab1c49fe2ca44e9f3ffd0e0b127 /csharp/build | |
parent | 813d6d652d8091e9365bfbd01efb5f2ee8bdfbce (diff) | |
parent | 836a273544f55c88d8d0988ef0117cb0636707c6 (diff) | |
download | protobuf-84fa3e2bbc876428efd0c99700f146115a9d5162.tar.gz protobuf-84fa3e2bbc876428efd0c99700f146115a9d5162.tar.bz2 protobuf-84fa3e2bbc876428efd0c99700f146115a9d5162.zip |
Imported protobuf-csharp-port into csharp/ tree
Diffstat (limited to 'csharp/build')
-rw-r--r-- | csharp/build/BuildAll.bat | 8 | ||||
-rw-r--r-- | csharp/build/Common.targets | 122 | ||||
-rw-r--r-- | csharp/build/Google.ProtocolBuffers.nuspec | 59 | ||||
-rw-r--r-- | csharp/build/Google.ProtocolBuffersLite.nuspec | 60 | ||||
-rw-r--r-- | csharp/build/RunBenchmarks.bat | 2 | ||||
-rw-r--r-- | csharp/build/build.bat | 20 | ||||
-rw-r--r-- | csharp/build/build.csproj | 241 | ||||
-rw-r--r-- | csharp/build/googlecode_upload.py | 248 | ||||
-rw-r--r-- | csharp/build/nuspec.xsd | 79 | ||||
-rw-r--r-- | csharp/build/publish.csproj | 186 | ||||
-rw-r--r-- | csharp/build/target.csproj | 167 |
11 files changed, 1192 insertions, 0 deletions
diff --git a/csharp/build/BuildAll.bat b/csharp/build/BuildAll.bat new file mode 100644 index 00000000..9bee73c7 --- /dev/null +++ b/csharp/build/BuildAll.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 /nologo build.csproj /t:%BUILD_TARGET% /toolsversion:4.0 "/p:Configuration=%BUILD_CONFIG%" %3 %4 %5 %6
diff --git a/csharp/build/Common.targets b/csharp/build/Common.targets new file mode 100644 index 00000000..2aa74dfe --- /dev/null +++ b/csharp/build/Common.targets @@ -0,0 +1,122 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + +<!-- ********************************************************************************************** +Targets For Clean +*********************************************************************************************** --> + + <Target Name="_CleanFolder"> + <Message Importance="normal" Text="Removing temporary directory '$(CleanFolderDirectory)'"/> + <Error Text="Can not remove empty directory name." Condition=" '$(CleanFolderDirectory)' == '' " /> + + <Exec WorkingDirectory="$(MSBuildProjectDirectory)" Condition="Exists($(CleanFolderDirectory))" Outputs="@(Ignore)" + Command="MOVE /Y "$(CleanFolderDirectory)" "$(CleanFolderDirectory)-deleted" > NUL" /> + + <RemoveDir Directories="$(CleanFolderDirectory)-deleted" Condition="Exists('$(CleanFolderDirectory)-deleted')" /> + </Target> + + <Target Name="_CleanTempOutput"> + <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="CleanFolderDirectory=%(TempBuildFolder.Identity);" Targets="_CleanFolder" /> + </Target> + + <Target Name="_CleanAll" DependsOnTargets="_CleanTempOutput"> + <MakeDir Directories="$(BuildTempDirectory)" /> + <MakeDir Directories="$(BuildOutputDirectory)" /> + </Target> + +<!-- ********************************************************************************************** +Targets For Build +*********************************************************************************************** --> + + <Target Name="_CompileAll"> + <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=Rebuild;" Targets="_BuildAllConfigurations" /> + </Target> + + <Target Name="_BuildAllConfigurations"> + <MSBuild Properties="TargetVersion=cf20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="TargetVersion=cf35;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="TargetVersion=net20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="TargetVersion=net35;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="TargetVersion=net40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="TargetVersion=sl20;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="TargetVersion=sl30;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="TargetVersion=sl40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + <MSBuild Properties="TargetVersion=pl40;Configuration=$(Configuration);Platform=$(Platform);" Targets="$(SolutionTarget)" Projects="$(MSBuildProjectDirectory)\target.csproj" /> + </Target> + +<!-- ********************************************************************************************** +Targets For Tools +*********************************************************************************************** --> + + <Target Name="_BuildTools"> + + <MSBuild Targets="Build" ToolsVersion="3.5" Projects="$(ProjectDirectory)\src\ProtocolBuffers.sln" Properties="Configuration=Release;Platform=Any CPU;" /> + <Copy SourceFiles="%(ToolsOutputItem.Identity)" DestinationFolder="$(BuildOutputDirectory)\tools" /> + + <Copy SourceFiles="$(LibDirectory)\NUnit-config\nunit-console.v2.0.config" DestinationFiles="$(NUnitExePath).config" /> + <Exec + WorkingDirectory="%(ToolsTestContainer.RootDir)%(ToolsTestContainer.Directory)" + Command=""$(NUnitExePath)" /nologo /noshadow "%(ToolsTestContainer.Identity)" /xml:"$(BuildTempDirectory)\%(ToolsTestContainer.Filename).xml"" /> + + </Target> + +<!-- ********************************************************************************************** +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)" /> + </Target> + + <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)" /> + </Target> + + <Target Name="_CopyGeneratedSource" DependsOnTargets="_GenerateSource"> + <Copy SourceFiles="%(GeneratedSource.Identity)" DestinationFiles="%(GeneratedSource.TargetDirectory)\%(GeneratedSource.Filename)%(GeneratedSource.Extension)" /> + </Target> + +<!-- ********************************************************************************************** +Targets For Package +*********************************************************************************************** --> + + <Target Name="_PackageAll"> + <MSBuild Projects="$(MSBuildProjectFullPath)" Properties="SolutionTarget=_Publish;" Targets="_BuildAllConfigurations" /> + </Target> + + <Target Name="_GeneratePackage"> + <Copy SourceFiles="@(StaticPackageItem)" DestinationFolder="$(BuildOutputPackage)\%(StaticPackageItem.TargetDirectory)\%(StaticPackageItem.RecursiveDir)" /> + <Exec Command=""$(ZipExePath)" a -tzip $(BuildTempDirectory)\$(PackageName)-binaries.zip * -x!*.pdb -r" WorkingDirectory="$(BuildOutputPackage)" /> + <Exec Command=""$(ZipExePath)" a -tzip $(BuildTempDirectory)\$(PackageName)-symbols.zip * -r" WorkingDirectory="$(BuildOutputPackage)" /> + </Target> + +<!-- ********************************************************************************************** +Targets For Benchmark +*********************************************************************************************** --> + + <Target Name="_RunBenchmarks"> + <ItemGroup> + <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage1,ProtoBench" /> + <BenchmarkParameter Include="google_message1.dat" /> + <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage1,ProtoBench" /> + <BenchmarkParameter Include="google_message1.dat" /> + <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SizeMessage2,ProtoBench" /> + <BenchmarkParameter Include="google_message2.dat" /> + <BenchmarkParameter Include="Google.ProtocolBuffers.ProtoBench.SpeedMessage2,ProtoBench" /> + <BenchmarkParameter Include="google_message2.dat" /> + </ItemGroup> + + <Message Text="Running ProtoBench.exe" /> + <Exec Command="ProtoBench.exe $(BenchmarkArgs) @(BenchmarkParameter->'%(Identity)', ' ') "/log:$(BenchmarkOutputFile)"" + WorkingDirectory="$(SourceDirectory)\ProtoBench\bin\NET35\Release" /> + + </Target> + +</Project>
\ No newline at end of file diff --git a/csharp/build/Google.ProtocolBuffers.nuspec b/csharp/build/Google.ProtocolBuffers.nuspec new file mode 100644 index 00000000..c355cd4a --- /dev/null +++ b/csharp/build/Google.ProtocolBuffers.nuspec @@ -0,0 +1,59 @@ +<?xml version="1.0"?> +<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nuspec.xsd"> + <metadata> + <id>Google.ProtocolBuffers</id> + <version>$version$</version> + <owners>Jon Skeet</owners> + <authors>Jon Skeet</authors> + <licenseUrl>http://code.google.com/p/protobuf-csharp-port/source/browse/license.txt</licenseUrl> + <projectUrl>http://code.google.com/p/protobuf-csharp-port/</projectUrl> + <requireLicenseAcceptance>false</requireLicenseAcceptance> + <copyright>Copyright 2008 Google Inc. All rights reserved.</copyright> + <tags>Protocol Buffers Binary Serialization Format Google</tags> + + <title>Google.ProtocolBuffers</title> + <summary>A managed code generator and library for Google's data interchange format.</summary> + <description><![CDATA[ +Protocol Buffers is a binary serialization format and technology, released to the open source community by Google in 2008. +Its primary use is to produce small fast binary representations of a 'message' or object for serialization or transportation. +There are various implementations of Protocol Buffers in .NET. This project is a fairly close port of the Google Java implementation. + +There are two main parts: + +tools/protoc.exe, which takes the textual representation of the protocol buffer and turns it into a binary representation for use with ProtoGen.exe. +tools/ProtoGen.exe, which takes binary representations of protocol buffer descriptors (as generated by the "stock" protoc binary supplied by Google) and creates C# source code. This is only required at build time. + +lib/*/Google.ProtocolBuffers.dll, which is a supporting library. This is required at execution time. +lib/*/Google.ProtocolBuffers.Serialization.dll, a supplementary library that provides extensions for reading and writing protocol buffers to xml, json, and others. + +LINKS: + +Project Home - http://code.google.com/p/protobuf-csharp-port +Online Help - http://help.protobuffers.net +Developer Guide - http://code.google.com/apis/protocolbuffers/docs/overview.html +Language Guide - http://code.google.com/apis/protocolbuffers/docs/proto.html + + ]]></description> + + <references> + <reference file="Google.ProtocolBuffers.dll"/> + <reference file="Google.ProtocolBuffers.Serialization.dll"/> + </references> + + </metadata> + <files> + <!-- Release Binaries --> + <file src="..\build_output\Release\**\Google.ProtocolBuffers.???" target="lib\" /> + <file src="..\build_output\Release\**\Google.ProtocolBuffers.Serialization.???" target="lib\" /> + <!-- Tools --> + <file src="..\build_output\tools\**\*" target="tools\" /> + <file src="..\build_output\protos\**\*" target="tools\" /> + <!-- Content --> + <file src="..\build_output\CHANGES.txt" target="tools\"/> + <file src="..\build_output\license.txt" target="tools\"/> + <file src="..\build_output\tools\protoc-license.txt" target="tools\"/> + <!-- Source --> + <file src="..\src\ProtocolBuffers\**\*.cs" target="src\ProtocolBuffers\"/> + <file src="..\src\ProtocolBuffers.Serialization\**\*.cs" target="src\ProtocolBuffers.Serialization\"/> + </files> +</package> diff --git a/csharp/build/Google.ProtocolBuffersLite.nuspec b/csharp/build/Google.ProtocolBuffersLite.nuspec new file mode 100644 index 00000000..8b9107f5 --- /dev/null +++ b/csharp/build/Google.ProtocolBuffersLite.nuspec @@ -0,0 +1,60 @@ +<?xml version="1.0"?> +<package xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nuspec.xsd"> + <metadata> + <id>Google.ProtocolBuffersLite</id> + <version>$version$</version> + <owners>Jon Skeet</owners> + <authors>Jon Skeet</authors> + <licenseUrl>http://code.google.com/p/protobuf-csharp-port/source/browse/license.txt</licenseUrl> + <projectUrl>http://code.google.com/p/protobuf-csharp-port/</projectUrl> + <requireLicenseAcceptance>false</requireLicenseAcceptance> + <copyright>Copyright 2008 Google Inc. All rights reserved.</copyright> + <tags>Protocol Buffers Binary Serialization Format Google</tags> + + <title>Google.ProtocolBuffersLite</title> + <summary>A managed code generator and library for Google's data interchange format.</summary> + <description><![CDATA[ +Protocol Buffers is a binary serialization format and technology, released to the open source community by Google in 2008. +Its primary use is to produce small fast binary representations of a 'message' or object for serialization or transportation. +There are various implementations of Protocol Buffers in .NET. This project is a fairly close port of the Google Java implementation. + +There are two main parts: + +tools/protoc.exe, which takes the textual representation of the protocol buffer and turns it into a binary representation for use with ProtoGen.exe. +tools/ProtoGen.exe, which takes binary representations of protocol buffer descriptors (as generated by the "stock" protoc binary supplied by Google) and creates C# source code. This is only required at build time. + +lib/*/Google.ProtocolBuffersLite.dll, which is a supporting library. This is required at execution time. +lib/*/Google.ProtocolBuffersLite.Serialization.dll, a supplementary library that provides extensions for reading and writing protocol buffers to xml, json, and others. + +LINKS: + +Project Home - http://code.google.com/p/protobuf-csharp-port +Online Help - http://help.protobuffers.net +Developer Guide - http://code.google.com/apis/protocolbuffers/docs/overview.html +Language Guide - http://code.google.com/apis/protocolbuffers/docs/proto.html + + ]]></description> + + <references> + <reference file="Google.ProtocolBuffersLite.dll"/> + <reference file="Google.ProtocolBuffersLite.Serialization.dll"/> + </references> + + </metadata> + + <files> + <!-- Release Binaries --> + <file src="..\build_output\Release\**\Google.ProtocolBuffersLite.???" target="lib\" /> + <file src="..\build_output\Release\**\Google.ProtocolBuffersLite.Serialization.???" target="lib\" /> + <!-- Tools --> + <file src="..\build_output\tools\**\*" target="tools\" /> + <file src="..\build_output\protos\**\*" target="tools\" /> + <!-- Content --> + <file src="..\build_output\CHANGES.txt" target="tools\"/> + <file src="..\build_output\license.txt" target="tools\"/> + <file src="..\build_output\tools\protoc-license.txt" target="tools\"/> + <!-- Source --> + <file src="..\src\ProtocolBuffers\**\*.cs" target="src\ProtocolBuffers\"/> + <file src="..\src\ProtocolBuffers.Serialization\**\*.cs" target="src\ProtocolBuffers.Serialization\"/> + </files> +</package> diff --git a/csharp/build/RunBenchmarks.bat b/csharp/build/RunBenchmarks.bat new file mode 100644 index 00000000..d0e65010 --- /dev/null +++ b/csharp/build/RunBenchmarks.bat @@ -0,0 +1,2 @@ +@echo off
+CMD.exe /Q /C "CD %~dp0 && %WINDIR%\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /nologo build.csproj /toolsversion:4.0 /t:RunBenchmarks %1 %2 %3 %4
diff --git a/csharp/build/build.bat b/csharp/build/build.bat new file mode 100644 index 00000000..bd7bd2a0 --- /dev/null +++ b/csharp/build/build.bat @@ -0,0 +1,20 @@ +@echo off
+SET BUILD_VERSION=%~1
+SET BUILD_TARGET=%~2
+SET BUILD_CONFIG=%~3
+
+IF NOT "%BUILD_VERSION%"=="" GOTO RUN
+ECHO.
+ECHO Usage: build.bat platform [target] [config] [msbuild arguments]
+ECHO.
+ECHO - platform: CF20, CF35, NET20, NET35, NET40, PL40, SL20, SL30, or SL40
+ECHO - [target]: Rebuild, Clean, Build, Test, or Publish
+ECHO - [config]: Debug or Release
+ECHO.
+EXIT /B 1
+
+:RUN
+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 /nologo target.csproj /toolsversion:4.0 %4 %5 %6 "/t:%BUILD_TARGET%" "/p:Configuration=%BUILD_CONFIG%;TargetVersion=%BUILD_VERSION%"
diff --git a/csharp/build/build.csproj b/csharp/build/build.csproj new file mode 100644 index 00000000..e78b2efb --- /dev/null +++ b/csharp/build/build.csproj @@ -0,0 +1,241 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + + <!-- 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="GenerateProjects;BuildTools;GenerateSource;_CompileAll" /> + <Target Name="Rebuild" DependsOnTargets="Clean;Build" /> + <Target Name="GeneratePackage" DependsOnTargets="_PackageAll;_GeneratePackage" /> + <Target Name="FullBuild" DependsOnTargets="Rebuild;GeneratePackage" /> + <!-- misc targets --> + <Target Name="RunBenchmarks" DependsOnTargets="_CleanAll;_BuildTools;_RunBenchmarks" /> + + <PropertyGroup> + <ProjectName>Protocol Buffers</ProjectName> + <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> + <Platform Condition=" '$(Platform)' == '' ">Any CPU</Platform> + + <!--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</BuildTempDirectory> + <BuildOutputDirectory>$(ProjectDirectory)\build_output</BuildOutputDirectory> + <BuildOutputPackage>$(BuildOutputDirectory)</BuildOutputPackage> + + <BenchmarkArgs>/v2 /fast /formats</BenchmarkArgs> + <BenchmarkOutputFile>$(BuildTempDirectory)\..\BenchmarkResults.txt</BenchmarkOutputFile> + <BenchmarkProtosDirectory>$(ProjectDirectory)\benchmarks</BenchmarkProtosDirectory> + + <PackageName Condition=" '$(PackageName)' == '' ">$(Configuration)</PackageName> + + <!--Tool Paths--> + <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> + + <Import Project="Common.targets"/> + + <!-- Proto Files --> + <ItemGroup> + <Protos Include="$(ProtosDirectory)\extest\unittest_issues.proto" /> + <Protos Include="$(ProtosDirectory)\extest\unittest_extras.proto" /> + <Protos Include="$(ProtosDirectory)\extest\unittest_extras_full.proto" /> + <Protos Include="$(ProtosDirectory)\extest\unittest_extras_lite.proto" /> + <Protos Include="$(ProtosDirectory)\extest\unittest_extras_xmltest.proto" /> + <Protos Include="$(ProtosDirectory)\extest\unittest_generic_services.proto" /> + <Protos Include="$(ProtosDirectory)\extest\unittest_rpc_interop.proto" /> + <Protos Include="$(ProtosDirectory)\extest\unittest_rpc_interop_lite.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\descriptor.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\csharp_options.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_csharp_options.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_custom_options.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_embed_optimize_for.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_empty.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_import.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_import_lite.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_lite.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_lite_imports_nonlite.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_mset.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_no_generic_services.proto" /> + <Protos Include="$(ProtosDirectory)\google\protobuf\unittest_optimize_for.proto" /> + <Protos Include="$(ProtosDirectory)\google\test\google_size.proto" /> + <Protos Include="$(ProtosDirectory)\google\test\google_speed.proto" /> + <Protos Include="$(ProtosDirectory)\tutorial\addressbook.proto" /> + <!-- for benchmark --> + <Protos Include="$(ProtosDirectory)\benchmarks\google_size.proto" /> + <Protos Include="$(ProtosDirectory)\benchmarks\google_speed.proto" /> + </ItemGroup> + <!-- Generated Source --> + <ItemGroup> + <!-- Main protos --> + <GeneratedSource Include="$(SourceTempDirectory)\CSharpOptions.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers\DescriptorProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\DescriptorProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers\DescriptorProtos</TargetDirectory> + </GeneratedSource> + + <!-- Address book sample --> + <GeneratedSource Include="$(SourceTempDirectory)\AddressBookProtos.cs"> + <TargetDirectory>$(SourceDirectory)\AddressBook</TargetDirectory> + </GeneratedSource> + <!-- Unit test --> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasIssuesProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestXmlSerializerTestProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestCSharpOptionsProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestCustomOptionsProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestEmbedOptimizeForProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestEmptyProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportLiteProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestMessageSetProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestNoGenericServicesProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestOptimizeForProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestRpcInterop.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestRpcInteropLite.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGenericServices.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <!-- Lite unit test --> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasFullProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestExtrasLiteProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportLiteProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestLiteImportNonLiteProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestLiteProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffersLite.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGoogleSizeProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestGoogleSpeedProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtocolBuffers.Test\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\GoogleSizeProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\GoogleSpeedProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestImportProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory> + </GeneratedSource> + <GeneratedSource Include="$(SourceTempDirectory)\UnitTestProtoFile.cs"> + <TargetDirectory>$(SourceDirectory)\ProtoBench\TestProtos</TargetDirectory> + </GeneratedSource> + </ItemGroup> + <!-- Package Items --> + <ItemGroup> + <StaticPackageItem Include="$(ProjectDirectory)\CHANGES.txt" /> + <StaticPackageItem Include="$(ProjectDirectory)\license.txt" /> + <StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\descriptor.proto"> + <TargetDirectory>\protos\google\protobuf</TargetDirectory> + </StaticPackageItem> + <StaticPackageItem Include="$(ProjectDirectory)\protos\google\protobuf\compiler\plugin.proto"> + <TargetDirectory>\protos\google\protobuf\compiler</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> + </ItemGroup> + <!-- Tools --> + <ItemGroup> + <ToolsTestContainer Include="$(SourceDirectory)\ProtoGen.Test\bin\NET35\Release\Google.ProtocolBuffers.ProtoGen.Test.dll" /> + + <ToolsOutputItem Include="$(SourceDirectory)\ProtocolBuffers\bin\NET35\Release\Google.ProtocolBuffers.dll" /> + <ToolsOutputItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\NET35\Release\Google.ProtocolBuffers.Serialization.dll" /> + <ToolsOutputItem Include="$(SourceDirectory)\ProtoGen\bin\NET35\Release\ProtoGen.exe" /> + <ToolsOutputItem Include="$(SourceDirectory)\ProtoGen\bin\NET35\Release\ProtoGen.exe.config" /> + <ToolsOutputItem Include="$(SourceDirectory)\ProtoMunge\bin\NET35\Release\ProtoMunge.exe" /> + <ToolsOutputItem Include="$(SourceDirectory)\ProtoDump\bin\NET35\Release\ProtoDump.exe" /> + <ToolsOutputItem Include="$(SourceDirectory)\ProtoBench\bin\NET35\Release\ProtoBench.exe" /> + <ToolsOutputItem Include="$(LibDirectory)\protoc.exe" /> + <ToolsOutputItem Include="$(LibDirectory)\protoc-license.txt" /> + </ItemGroup> + <!-- Temporary Directories --> + <ItemGroup> + <TempBuildFolder Include="$(BuildTempDirectory)" /> + <TempBuildFolder Include="$(BuildOutputDirectory)" /> + <TempBuildFolder Include="$(SourceDirectory)\AddressBook\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\AddressBook\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoBench\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoBench\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Serialization\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Test\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffers.Test\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffersLite.Test\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoDump\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoDump\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoGen\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoGen\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoGen.Test\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoGen.Test\bin" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoMunge\obj" /> + <TempBuildFolder Include="$(SourceDirectory)\ProtoMunge\bin" /> + </ItemGroup> +</Project> diff --git a/csharp/build/googlecode_upload.py b/csharp/build/googlecode_upload.py new file mode 100644 index 00000000..d2d5f974 --- /dev/null +++ b/csharp/build/googlecode_upload.py @@ -0,0 +1,248 @@ +#!/usr/bin/env python +# +# Copyright 2006, 2007 Google Inc. All Rights Reserved. +# Author: danderson@google.com (David Anderson) +# +# Script for uploading files to a Google Code project. +# +# This is intended to be both a useful script for people who want to +# streamline project uploads and a reference implementation for +# uploading files to Google Code projects. +# +# To upload a file to Google Code, you need to provide a path to the +# file on your local machine, a small summary of what the file is, a +# project name, and a valid account that is a member or owner of that +# project. You can optionally provide a list of labels that apply to +# the file. The file will be uploaded under the same name that it has +# in your local filesystem (that is, the "basename" or last path +# component). Run the script with '--help' to get the exact syntax +# and available options. +# +# Note that the upload script requests that you enter your +# googlecode.com password. This is NOT your Gmail account password! +# This is the password you use on googlecode.com for committing to +# Subversion and uploading files. You can find your password by going +# to http://code.google.com/hosting/settings when logged in with your +# Gmail account. If you have already committed to your project's +# Subversion repository, the script will automatically retrieve your +# credentials from there (unless disabled, see the output of '--help' +# for details). +# +# If you are looking at this script as a reference for implementing +# your own Google Code file uploader, then you should take a look at +# the upload() function, which is the meat of the uploader. You +# basically need to build a multipart/form-data POST request with the +# right fields and send it to https://PROJECT.googlecode.com/files . +# Authenticate the request using HTTP Basic authentication, as is +# shown below. +# +# Licensed under the terms of the Apache Software License 2.0: +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Questions, comments, feature requests and patches are most welcome. +# Please direct all of these to the Google Code users group: +# http://groups.google.com/group/google-code-hosting + +"""Google Code file uploader script. +""" + +__author__ = 'danderson@google.com (David Anderson)' + +import httplib +import os.path +import optparse +import getpass +import base64 +import sys + + +def upload(file, project_name, user_name, password, summary, labels=None): + """Upload a file to a Google Code project's file server. + + Args: + file: The local path to the file. + project_name: The name of your project on Google Code. + user_name: Your Google account name. + password: The googlecode.com password for your account. + Note that this is NOT your global Google Account password! + summary: A small description for the file. + labels: an optional list of label strings with which to tag the file. + + Returns: a tuple: + http_status: 201 if the upload succeeded, something else if an + error occured. + http_reason: The human-readable string associated with http_status + file_url: If the upload succeeded, the URL of the file on Google + Code, None otherwise. + """ + # The login is the user part of user@gmail.com. If the login provided + # is in the full user@domain form, strip it down. + if user_name.endswith('@gmail.com'): + user_name = user_name[:user_name.index('@gmail.com')] + + form_fields = [('summary', summary)] + if labels is not None: + form_fields.extend([('label', l.strip()) for l in labels]) + + content_type, body = encode_upload_request(form_fields, file) + + upload_host = '%s.googlecode.com' % project_name + upload_uri = '/files' + auth_token = base64.b64encode('%s:%s'% (user_name, password)) + headers = { + 'Authorization': 'Basic %s' % auth_token, + 'User-Agent': 'Googlecode.com uploader v0.9.4', + 'Content-Type': content_type, + } + + server = httplib.HTTPSConnection(upload_host) + server.request('POST', upload_uri, body, headers) + resp = server.getresponse() + server.close() + + if resp.status == 201: + location = resp.getheader('Location', None) + else: + location = None + return resp.status, resp.reason, location + + +def encode_upload_request(fields, file_path): + """Encode the given fields and file into a multipart form body. + + fields is a sequence of (name, value) pairs. file is the path of + the file to upload. The file will be uploaded to Google Code with + the same file name. + + Returns: (content_type, body) ready for httplib.HTTP instance + """ + BOUNDARY = '----------Googlecode_boundary_reindeer_flotilla' + CRLF = '\r\n' + + body = [] + + # Add the metadata about the upload first + for key, value in fields: + body.extend( + ['--' + BOUNDARY, + 'Content-Disposition: form-data; name="%s"' % key, + '', + value, + ]) + + # Now add the file itself + file_name = os.path.basename(file_path) + f = open(file_path, 'rb') + file_content = f.read() + f.close() + + body.extend( + ['--' + BOUNDARY, + 'Content-Disposition: form-data; name="filename"; filename="%s"' + % file_name, + # The upload server determines the mime-type, no need to set it. + 'Content-Type: application/octet-stream', + '', + file_content, + ]) + + # Finalize the form body + body.extend(['--' + BOUNDARY + '--', '']) + + return 'multipart/form-data; boundary=%s' % BOUNDARY, CRLF.join(body) + + +def upload_find_auth(file_path, project_name, summary, labels=None, + user_name=None, password=None, tries=3): + """Find credentials and upload a file to a Google Code project's file server. + + file_path, project_name, summary, and labels are passed as-is to upload. + + Args: + file_path: The local path to the file. + project_name: The name of your project on Google Code. + summary: A small description for the file. + labels: an optional list of label strings with which to tag the file. + config_dir: Path to Subversion configuration directory, 'none', or None. + user_name: Your Google account name. + tries: How many attempts to make. + """ + + while tries > 0: + if user_name is None: + # Read username if not specified or loaded from svn config, or on + # subsequent tries. + sys.stdout.write('Please enter your googlecode.com username: ') + sys.stdout.flush() + user_name = sys.stdin.readline().rstrip() + if password is None: + # Read password if not loaded from svn config, or on subsequent tries. + print 'Please enter your googlecode.com password.' + print '** Note that this is NOT your Gmail account password! **' + print 'It is the password you use to access Subversion repositories,' + print 'and can be found here: http://code.google.com/hosting/settings' + password = getpass.getpass() + + status, reason, url = upload(file_path, project_name, user_name, password, + summary, labels) + # Returns 403 Forbidden instead of 401 Unauthorized for bad + # credentials as of 2007-07-17. + if status in [httplib.FORBIDDEN, httplib.UNAUTHORIZED]: + # Rest for another try. + user_name = password = None + tries = tries - 1 + else: + # We're done. + break + + return status, reason, url + + +def main(): + parser = optparse.OptionParser(usage='googlecode-upload.py -s SUMMARY ' + '-p PROJECT [options] FILE') + parser.add_option('-s', '--summary', dest='summary', + help='Short description of the file') + parser.add_option('-p', '--project', dest='project', + help='Google Code project name') + parser.add_option('-u', '--user', dest='user', + help='Your Google Code username') + parser.add_option('-w', '--password', dest='password', + help='Your Google Code password') + parser.add_option('-l', '--labels', dest='labels', + help='An optional list of comma-separated labels to attach ' + 'to the file') + + options, args = parser.parse_args() + + if not options.summary: + parser.error('File summary is missing.') + elif not options.project: + parser.error('Project name is missing.') + elif len(args) < 1: + parser.error('File to upload not provided.') + elif len(args) > 1: + parser.error('Only one file may be specified.') + + file_path = args[0] + + if options.labels: + labels = options.labels.split(',') + else: + labels = None + + status, reason, url = upload_find_auth(file_path, options.project, + options.summary, labels, + options.user, options.password) + if url: + print 'The file was uploaded successfully.' + print 'URL: %s' % url + return 0 + else: + print 'An error occurred. Your file was not uploaded.' + print 'Google Code upload server said: %s (%s)' % (reason, status) + return 1 + + +if __name__ == '__main__': + sys.exit(main()) diff --git a/csharp/build/nuspec.xsd b/csharp/build/nuspec.xsd new file mode 100644 index 00000000..db744d1a --- /dev/null +++ b/csharp/build/nuspec.xsd @@ -0,0 +1,79 @@ +<?xml version="1.0" encoding="utf-8"?>
+<!-- original location: https://hg01.codeplex.com/nuget/raw-file/tip/src/Core/Authoring/nuspec.xsd -->
+<xs:schema id="nuspec" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:element name="package">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="metadata" maxOccurs="1" minOccurs="1">
+ <xs:complexType>
+ <xs:all>
+ <xs:element name="id" maxOccurs="1" minOccurs="1" type="xs:string" />
+ <xs:element name="version" maxOccurs="1" minOccurs="1" type="xs:string" />
+ <xs:element name="title" maxOccurs="1" minOccurs="0" type="xs:string" />
+ <xs:element name="authors" maxOccurs="1" minOccurs="1" type="xs:string" />
+ <xs:element name="owners" maxOccurs="1" minOccurs="0" type="xs:string" />
+ <xs:element name="licenseUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" />
+ <xs:element name="projectUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" />
+ <xs:element name="iconUrl" maxOccurs="1" minOccurs="0" type="xs:anyURI" />
+ <xs:element name="requireLicenseAcceptance" maxOccurs="1" minOccurs="0" type="xs:boolean" />
+ <xs:element name="description" maxOccurs="1" minOccurs="1" type="xs:string" />
+ <xs:element name="summary" maxOccurs="1" minOccurs="0" type="xs:string" />
+ <xs:element name="releaseNotes" maxOccurs="1" minOccurs="0" type="xs:string" />
+ <xs:element name="copyright" maxOccurs="1" minOccurs="0" type="xs:string" />
+ <xs:element name="language" maxOccurs="1" minOccurs="0" type="xs:string" default="en-US" />
+ <xs:element name="tags" maxOccurs="1" minOccurs="0" type="xs:string" />
+ <xs:element name="dependencies" maxOccurs="1" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="dependency" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="id" type="xs:string" use="required" />
+ <xs:attribute name="version" type="xs:string" use="optional" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="frameworkAssemblies" maxOccurs="1" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="frameworkAssembly" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="assemblyName" type="xs:string" use="required" />
+ <xs:attribute name="targetFramework" type="xs:string" use="optional" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="references" maxOccurs="1" minOccurs="0">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="reference" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="file" type="xs:string" use="required" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:all>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="files" minOccurs="0" maxOccurs="1" nillable="true">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="file" minOccurs="0" maxOccurs="unbounded">
+ <xs:complexType>
+ <xs:attribute name="src" use="required" type="xs:string" />
+ <xs:attribute name="target" use="optional" type="xs:string" />
+ <xs:attribute name="exclude" use="optional" type="xs:string" />
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+</xs:schema>
diff --git a/csharp/build/publish.csproj b/csharp/build/publish.csproj new file mode 100644 index 00000000..bbe71df5 --- /dev/null +++ b/csharp/build/publish.csproj @@ -0,0 +1,186 @@ +<?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="Build" DependsOnTargets="_Clean;_Prerequisites;_StampVersion;_GenerateSource;_Build" />
+ <Target Name="Label" DependsOnTargets="_HgLabel" />
+ <Target Name="Package" DependsOnTargets="_HgPack;_NugetPack" />
+ <Target Name="Prepare" DependsOnTargets="Clean;Build;Label;Package" />
+ <Target Name="PushAll" DependsOnTargets="_HgPush;_NugetPush" />
+ <Target Name="Publish" DependsOnTargets="Prepare;PushAll" />
+
+ <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="_Prerequisites" DependsOnTargets="_CheckEnvironment;_ReadVersion" />
+
+ <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="<Project xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>" />
+ <Lines Include=" <PropertyGroup>"/>
+ <Lines Include=" <GoogleUsername> (Enter your google-code user/password here) </GoogleUsername>"/>
+ <Lines Include=" <GooglePassword></GooglePassword>"/>
+ <Lines Include=" </PropertyGroup>" />
+ <Lines Include="</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 "{rev}" > "$(BuildTempDirectory)\revision.txt""></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 "$(VersionLabel)" 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=""$(SnTool)" -T "$(ProtogenExePath)" > signkey.txt" WorkingDirectory="$(BuildTempDirectory)" />
+ <!-- Make sure we are signing with the correct key -->
+ <Exec Command="FIND "55f7125234beb589" 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="_HgPack" DependsOnTargets="_Prerequisites">
+ <Exec Command="$(HgTool) archive $(BuildTempDirectory)\$(PackagePrefix)$(VersionLabel)-source.zip" WorkingDirectory="$(ProjectDirectory)" />
+ </Target>
+
+ <Target Name="_HgLabel" DependsOnTargets="_Prerequisites">
+ <Exec Command="$(HgTool) commit -m "version $(VersionLabel)"" WorkingDirectory="$(ProjectDirectory)" />
+ <Exec Command="$(HgTool) tag $(VersionLabel)" 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 "Version $(VersionLabel) source" $(SourcePackage)" />
+
+ <Exec WorkingDirectory="$(ProjectDirectory)"
+ Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) release binaries only" $(ReleasePackageBin)" />
+ <Exec WorkingDirectory="$(ProjectDirectory)"
+ Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) release binaries and symbols" $(ReleasePackageSyb)" />
+
+ <Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' "
+ Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) all binaries" $(DebugPackageBin)" />
+ <Exec WorkingDirectory="$(ProjectDirectory)" Condition=" '$(PublishDebug)' == 'true' "
+ Command="$(UploadPackage) --labels Type-Executable,Featured --summary "Version $(VersionLabel) all binaries and symbols" $(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/csharp/build/target.csproj b/csharp/build/target.csproj new file mode 100644 index 00000000..09a9d50b --- /dev/null +++ b/csharp/build/target.csproj @@ -0,0 +1,167 @@ +<?xml version="1.0" encoding="utf-8"?> +<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + +<!-- ********************************************************************************************** +High-level Targets +*********************************************************************************************** --> + + <Target Name="Clean" DependsOnTargets="_Clean" /> + <Target Name="Build" DependsOnTargets="_Compile;_Test" /> + <Target Name="Test" DependsOnTargets="_Test" /> + <Target Name="Rebuild" DependsOnTargets="Clean;Build" /> + <Target Name="Publish" DependsOnTargets="Clean;Build;_Publish" /> + + <!-- ********************************************************************************************** +Properties +*********************************************************************************************** --> + + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">Any CPU</Platform> + <TargetVersion Condition=" '$(TargetVersion)' == '' ">NET20</TargetVersion> + <BuildParams></BuildParams> + + <!--Directory Paths--> + <ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory> + <SourceDirectory>$(ProjectDirectory)\src</SourceDirectory> + <LibDirectory>$(ProjectDirectory)\lib</LibDirectory> + + <!--File Paths--> + <BuildTempDirectory>$(ProjectDirectory)\build_temp\$(Configuration)\$(TargetVersion)</BuildTempDirectory> + <BuildOutputDirectory>$(ProjectDirectory)\build_output\$(Configuration)\$(TargetVersion)</BuildOutputDirectory> + <SolutionFile>$(SourceDirectory)\ProtocolBuffersLibrary.$(TargetVersion).sln</SolutionFile> + + <!--Tool Paths--> + <NUnitExePath>$(LibDirectory)\NUnit\tools\nunit-console.exe</NUnitExePath> + <StatLightExePath>$(LibDirectory)\StatLight\tools\StatLight.exe</StatLightExePath> + </PropertyGroup> + +<!-- ********************************************************************************************** +Target Versions +*********************************************************************************************** --> + + <PropertyGroup Condition=" '$(TargetVersion)' == 'NET20' "> + <BuildTools>3.5</BuildTools> + <TestFramework>NUNIT</TestFramework> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(TargetVersion)' == 'NET35' "> + <BuildTools>3.5</BuildTools> + <TestFramework>NUNIT</TestFramework> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(TargetVersion)' == 'NET40' "> + <BuildTools>4.0</BuildTools> + <TestFramework>NUNIT</TestFramework> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(TargetVersion)' == 'CF20' "> + <BuildTools>3.5</BuildTools> + <TestFramework>NONE</TestFramework> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(TargetVersion)' == 'CF35' "> + <BuildTools>3.5</BuildTools> + <TestFramework>NONE</TestFramework> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(TargetVersion)' == 'SL20' "> + <BuildTools>3.5</BuildTools> + <TestFramework>SILVERLIGHT</TestFramework> + <TargetFrameworkVersion>v2.0</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(TargetVersion)' == 'SL30' "> + <BuildTools>3.5</BuildTools> + <TestFramework>SILVERLIGHT</TestFramework> + <TargetFrameworkVersion>v3.5</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(TargetVersion)' == 'SL40' "> + <BuildTools>4.0</BuildTools> + <TestFramework>SILVERLIGHT</TestFramework> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + </PropertyGroup> + <PropertyGroup Condition=" '$(TargetVersion)' == 'PL40' "> + <BuildTools>4.0</BuildTools> + <TestFramework>SILVERLIGHT</TestFramework> + <TargetFrameworkVersion>v4.0</TargetFrameworkVersion> + <BuildOutputDirectory>$(ProjectDirectory)\build_output\$(Configuration)\portable-net40+sl4+sl5+wp7+wp8+win8</BuildOutputDirectory> + </PropertyGroup> + +<!-- ********************************************************************************************** +File Groups +*********************************************************************************************** --> + + <ItemGroup> + <WorkingDirectories Include="$(BuildTempDirectory)" /> + <WorkingDirectories Include="$(BuildOutputDirectory)" /> + + <TestContainer Include="$(SourceDirectory)\ProtocolBuffers.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Test.dll" /> + <TestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Test.dll" /> + <TestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersMixedLite.Test.dll" /> + + <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffers.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Test.xap" /> + <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Test.xap" /> + <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersMixedLite.Test.xap" /> + + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.dll" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.pdb" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.xml" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.dll" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.pdb" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.xml" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.dll" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.pdb" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.xml" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.dll" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.pdb" /> + <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.xml" /> + </ItemGroup> + +<!-- ********************************************************************************************** +Targets For Build +*********************************************************************************************** --> + + <Target Name="_Configured"> + <Message Text="Building $(TargetVersion) for configuration $(Configuration), platform $(Platform)" Importance="normal" /> + <Error Text="Unknown or missing value for TargetVersion=[value]" Condition=" '$(BuildTools)' == '' " /> + </Target> + + <Target Name="_Clean" DependsOnTargets="_Configured"> + <RemoveDir Directories="@(WorkingDirectories)" Condition="Exists(%(WorkingDirectories.Identity))" /> + <MSBuild Targets="Clean" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)" + Properties="Configuration=$(Configuration);Platform=$(Platform);" + /> + </Target> + + <Target Name="_Compile" DependsOnTargets="_Configured"> + <MSBuild Targets="Build" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)" + Properties="Configuration=$(Configuration);Platform=$(Platform);$(BuildParams)" + /> + </Target> + + <Target Name="_Publish" DependsOnTargets="_Configured"> + <MakeDir Directories="$(BuildOutputDirectory)" /> + <Copy SourceFiles="@(PublishItem)" DestinationFolder="$(BuildOutputDirectory)" /> + </Target> + +<!-- ********************************************************************************************** +Targets For Test +*********************************************************************************************** --> + + <Target Name="_Test" DependsOnTargets="_Configured"> + <MakeDir Directories="$(BuildTempDirectory)" /> + <CallTarget Targets="_RunNunit" Condition=" '$(TestFramework)'=='NUNIT' " /> + <CallTarget Targets="_RunStatLight" Condition=" '$(TestFramework)'=='SILVERLIGHT' " /> + </Target> + + <Target Name="_RunNunit"> + <Copy SourceFiles="$(LibDirectory)\NUnit-config\nunit-console.$(TargetFrameworkVersion).config" DestinationFiles="$(NUnitExePath).config" /> + <Exec Command=""$(NUnitExePath)" /nologo /noshadow "%(TestContainer.Identity)" /xml:"$(BuildTempDirectory)\%(TestContainer.Filename).xml"" /> + </Target> + + <Target Name="_RunStatLight"> + <Exec + Command=""$(StatLightExePath)" -x %(StatLightTestContainer.Identity) --ReportOutputFileType=NUnit --ReportOutputFile=$(BuildTempDirectory)\%(StatLightTestContainer.Filename).xml" /> + </Target> + +</Project> |