target.csproj 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3. <!-- **********************************************************************************************
  4. High-level Targets
  5. *********************************************************************************************** -->
  6. <Target Name="Clean" DependsOnTargets="_Clean" />
  7. <Target Name="Build" DependsOnTargets="_Compile;_Test" />
  8. <Target Name="Test" DependsOnTargets="_Test" />
  9. <Target Name="Rebuild" DependsOnTargets="Clean;Build" />
  10. <Target Name="Publish" DependsOnTargets="Clean;Build;_Publish" />
  11. <!-- **********************************************************************************************
  12. Properties
  13. *********************************************************************************************** -->
  14. <PropertyGroup>
  15. <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
  16. <Platform Condition=" '$(Platform)' == '' ">Any CPU</Platform>
  17. <TargetVersion Condition=" '$(TargetVersion)' == '' ">NET20</TargetVersion>
  18. <BuildParams></BuildParams>
  19. <!--Directory Paths-->
  20. <ProjectDirectory>$(MSBuildProjectDirectory)\..</ProjectDirectory>
  21. <SourceDirectory>$(ProjectDirectory)\src</SourceDirectory>
  22. <LibDirectory>$(ProjectDirectory)\lib</LibDirectory>
  23. <!--File Paths-->
  24. <BuildTempDirectory>$(ProjectDirectory)\build_temp\$(Configuration)\$(TargetVersion)</BuildTempDirectory>
  25. <BuildOutputDirectory>$(ProjectDirectory)\build_output\$(Configuration)\$(TargetVersion)</BuildOutputDirectory>
  26. <SolutionFile>$(SourceDirectory)\ProtocolBuffersLibrary.$(TargetVersion).sln</SolutionFile>
  27. <!--Tool Paths-->
  28. <NUnitExePath>$(LibDirectory)\NUnit\tools\nunit-console.exe</NUnitExePath>
  29. <StatLightExePath>$(LibDirectory)\StatLight\tools\StatLight.exe</StatLightExePath>
  30. </PropertyGroup>
  31. <!-- **********************************************************************************************
  32. Target Versions
  33. *********************************************************************************************** -->
  34. <PropertyGroup Condition=" '$(TargetVersion)' == 'NET20' ">
  35. <BuildTools>3.5</BuildTools>
  36. <TestFramework>NUNIT</TestFramework>
  37. <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
  38. </PropertyGroup>
  39. <PropertyGroup Condition=" '$(TargetVersion)' == 'NET35' ">
  40. <BuildTools>3.5</BuildTools>
  41. <TestFramework>NUNIT</TestFramework>
  42. <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  43. </PropertyGroup>
  44. <PropertyGroup Condition=" '$(TargetVersion)' == 'NET40' ">
  45. <BuildTools>4.0</BuildTools>
  46. <TestFramework>NUNIT</TestFramework>
  47. <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  48. </PropertyGroup>
  49. <PropertyGroup Condition=" '$(TargetVersion)' == 'CF20' ">
  50. <BuildTools>3.5</BuildTools>
  51. <TestFramework>NONE</TestFramework>
  52. <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
  53. </PropertyGroup>
  54. <PropertyGroup Condition=" '$(TargetVersion)' == 'CF35' ">
  55. <BuildTools>3.5</BuildTools>
  56. <TestFramework>NONE</TestFramework>
  57. <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  58. </PropertyGroup>
  59. <PropertyGroup Condition=" '$(TargetVersion)' == 'SL20' ">
  60. <BuildTools>3.5</BuildTools>
  61. <TestFramework>SILVERLIGHT</TestFramework>
  62. <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
  63. </PropertyGroup>
  64. <PropertyGroup Condition=" '$(TargetVersion)' == 'SL30' ">
  65. <BuildTools>3.5</BuildTools>
  66. <TestFramework>SILVERLIGHT</TestFramework>
  67. <TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
  68. </PropertyGroup>
  69. <PropertyGroup Condition=" '$(TargetVersion)' == 'SL40' ">
  70. <BuildTools>4.0</BuildTools>
  71. <TestFramework>SILVERLIGHT</TestFramework>
  72. <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  73. </PropertyGroup>
  74. <PropertyGroup Condition=" '$(TargetVersion)' == 'PL40' ">
  75. <BuildTools>4.0</BuildTools>
  76. <TestFramework>SILVERLIGHT</TestFramework>
  77. <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
  78. <BuildOutputDirectory>$(ProjectDirectory)\build_output\$(Configuration)\portable-net40+sl4+sl5+wp7+wp8+win8</BuildOutputDirectory>
  79. </PropertyGroup>
  80. <!-- **********************************************************************************************
  81. File Groups
  82. *********************************************************************************************** -->
  83. <ItemGroup>
  84. <WorkingDirectories Include="$(BuildTempDirectory)" />
  85. <WorkingDirectories Include="$(BuildOutputDirectory)" />
  86. <TestContainer Include="$(SourceDirectory)\ProtocolBuffers.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Test.dll" />
  87. <TestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Test.dll" />
  88. <TestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersMixedLite.Test.dll" />
  89. <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffers.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Test.xap" />
  90. <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Test.xap" />
  91. <StatLightTestContainer Include="$(SourceDirectory)\ProtocolBuffersLite.Test\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersMixedLite.Test.xap" />
  92. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.dll" />
  93. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.pdb" />
  94. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.xml" />
  95. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.dll" />
  96. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.pdb" />
  97. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.xml" />
  98. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.dll" />
  99. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.pdb" />
  100. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffers.Serialization.xml" />
  101. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.dll" />
  102. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.pdb" />
  103. <PublishItem Include="$(SourceDirectory)\ProtocolBuffers.Serialization\bin\$(TargetVersion)\$(Configuration)\Google.ProtocolBuffersLite.Serialization.xml" />
  104. </ItemGroup>
  105. <!-- **********************************************************************************************
  106. Targets For Build
  107. *********************************************************************************************** -->
  108. <Target Name="_Configured">
  109. <Message Text="Building $(TargetVersion) for configuration $(Configuration), platform $(Platform)" Importance="normal" />
  110. <Error Text="Unknown or missing value for TargetVersion=[value]" Condition=" '$(BuildTools)' == '' " />
  111. </Target>
  112. <Target Name="_Clean" DependsOnTargets="_Configured">
  113. <RemoveDir Directories="@(WorkingDirectories)" Condition="Exists(%(WorkingDirectories.Identity))" />
  114. <MSBuild Targets="Clean" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)"
  115. Properties="Configuration=$(Configuration);Platform=$(Platform);"
  116. />
  117. </Target>
  118. <Target Name="_Compile" DependsOnTargets="_Configured">
  119. <MSBuild Targets="Build" Projects="$(SolutionFile)" ToolsVersion="$(BuildTools)"
  120. Properties="Configuration=$(Configuration);Platform=$(Platform);$(BuildParams)"
  121. />
  122. </Target>
  123. <Target Name="_Publish" DependsOnTargets="_Configured">
  124. <MakeDir Directories="$(BuildOutputDirectory)" />
  125. <Copy SourceFiles="@(PublishItem)" DestinationFolder="$(BuildOutputDirectory)" />
  126. </Target>
  127. <!-- **********************************************************************************************
  128. Targets For Test
  129. *********************************************************************************************** -->
  130. <Target Name="_Test" DependsOnTargets="_Configured">
  131. <MakeDir Directories="$(BuildTempDirectory)" />
  132. <CallTarget Targets="_RunNunit" Condition=" '$(TestFramework)'=='NUNIT' " />
  133. <CallTarget Targets="_RunStatLight" Condition=" '$(TestFramework)'=='SILVERLIGHT' " />
  134. </Target>
  135. <Target Name="_RunNunit">
  136. <Copy SourceFiles="$(LibDirectory)\NUnit-config\nunit-console.$(TargetFrameworkVersion).config" DestinationFiles="$(NUnitExePath).config" />
  137. <Exec Command="&quot;$(NUnitExePath)&quot; /nologo /noshadow &quot;%(TestContainer.Identity)&quot; /xml:&quot;$(BuildTempDirectory)\%(TestContainer.Filename).xml&quot;" />
  138. </Target>
  139. <Target Name="_RunStatLight">
  140. <Exec
  141. Command="&quot;$(StatLightExePath)&quot; -x %(StatLightTestContainer.Identity) --ReportOutputFileType=NUnit --ReportOutputFile=$(BuildTempDirectory)\%(StatLightTestContainer.Filename).xml" />
  142. </Target>
  143. </Project>