2
0

build.proj 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Project ToolsVersion="14.0" DefaultTargets="Clean;Build;Package" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3. <UsingTask TaskName="Zip" AssemblyFile="$(MSBuildThisFileDirectory)target\nuget\packages\$(MSBuildTasksPackageId).$(MSBuildTasksPackageVersion)\tools\MSBuild.Community.Tasks.dll"/>
  4. <PropertyGroup>
  5. <Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
  6. <BuildRoot>$(MSBuildThisFileDirectory)</BuildRoot>
  7. <NuGetExe>$(BuildRoot)target\nuget\nuget.exe</NuGetExe>
  8. <MSBuildTasksPackageId>MSBuildTasks</MSBuildTasksPackageId>
  9. <MSBuildTasksPackageVersion>1.5.0.214</MSBuildTasksPackageVersion>
  10. </PropertyGroup>
  11. <ItemGroup>
  12. <VisualStudioVersion Include="2012">
  13. <SolutionFile>$(MSBuildThisFileDirectory)..\src\Renci.SshNet.VS2012.sln</SolutionFile>
  14. <ToolsVersion>14.0</ToolsVersion>
  15. <VisualStudioVersion>14.0</VisualStudioVersion>
  16. </VisualStudioVersion>
  17. <VisualStudioVersion Include="2015">
  18. <SolutionFile>$(MSBuildThisFileDirectory)..\src\Renci.SshNet.VS2015.sln</SolutionFile>
  19. <ToolsVersion>14.0</ToolsVersion>
  20. <VisualStudioVersion>14.0</VisualStudioVersion>
  21. </VisualStudioVersion>
  22. <VisualStudioVersion Include="2017">
  23. <SolutionFile>$(MSBuildThisFileDirectory)..\src\Renci.SshNet.VS2017.sln</SolutionFile>
  24. <ToolsVersion>15.0</ToolsVersion>
  25. <VisualStudioVersion>15.0</VisualStudioVersion>
  26. </VisualStudioVersion>
  27. </ItemGroup>
  28. <ItemGroup>
  29. <TargetFramework Include=".NET Framework 3.5">
  30. <OutputDirectory>Renci.SshNet.NET35\bin\$(Configuration)</OutputDirectory>
  31. <Moniker>net35</Moniker>
  32. </TargetFramework>
  33. <TargetFramework Include=".NET Framework 4.0">
  34. <OutputDirectory>Renci.SshNet\bin\$(Configuration)</OutputDirectory>
  35. <Moniker>net40</Moniker>
  36. </TargetFramework>
  37. <TargetFramework Include=".NETStandard 1.3">
  38. <OutputDirectory>Renci.SshNet.NETCore\bin\$(Configuration)\netstandard1.3</OutputDirectory>
  39. <Moniker>netstandard1.3</Moniker>
  40. </TargetFramework>
  41. <TargetFramework Include=".NETStandard 2.0">
  42. <OutputDirectory>Renci.SshNet.NETCore\bin\$(Configuration)\netstandard2.0</OutputDirectory>
  43. <Moniker>netstandard2.0</Moniker>
  44. </TargetFramework>
  45. <TargetFramework Include="Windows Phone Silverlight 7.1">
  46. <OutputDirectory>Renci.SshNet.WindowsPhone\bin\$(Configuration)</OutputDirectory>
  47. <Moniker>wp71</Moniker>
  48. </TargetFramework>
  49. <TargetFramework Include="Windows Phone Silverlight 8.0">
  50. <OutputDirectory>Renci.SshNet.WindowsPhone8\bin\$(Configuration)</OutputDirectory>
  51. <Moniker>wp8</Moniker>
  52. </TargetFramework>
  53. <TargetFramework Include="Silverlight 4">
  54. <OutputDirectory>Renci.SshNet.Silverlight\bin\$(Configuration)</OutputDirectory>
  55. <Moniker>sl4</Moniker>
  56. </TargetFramework>
  57. <TargetFramework Include="Silverlight 5">
  58. <OutputDirectory>Renci.SshNet.Silverlight5\bin\$(Configuration)</OutputDirectory>
  59. <Moniker>sl5</Moniker>
  60. </TargetFramework>
  61. <TargetFramework Include="Universal Windows Platform 10">
  62. <OutputDirectory>Renci.SshNet.UAP10\bin\$(Configuration)</OutputDirectory>
  63. <Moniker>uap10</Moniker>
  64. </TargetFramework>
  65. </ItemGroup>
  66. <Target Name="Clean" DependsOnTargets="CleanSolution">
  67. <RemoveDir Directories="$(MSBuildThisFileDirectory)target"/>
  68. </Target>
  69. <Target Name="CleanSolution" Outputs="%(VisualStudioVersion.Identity)">
  70. <ItemGroup>
  71. <ProjectToBuild Remove="@(ProjectToBuild)"/>
  72. <ProjectToBuild Include="%(VisualStudioVersion.SolutionFile)">
  73. <Properties>Configuration=Release;VisualStudioVersion=%(VisualStudioVersion.VisualStudioVersion)</Properties>
  74. </ProjectToBuild>
  75. </ItemGroup>
  76. <MSBuild Projects="@(ProjectToBuild)" ToolsVersion="%(VisualStudioVersion.ToolsVersion)" Targets="Clean"/>
  77. </Target>
  78. <Target Name="DownloadNuGet">
  79. <MakeDir Directories="$(MSBuildThisFileDirectory)target\nuget"/>
  80. <DownloadFile
  81. Address="https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
  82. FileName="$(MSBuildThisFileDirectory)target\nuget\nuget.exe"/>
  83. </Target>
  84. <Target Name="RestoreNuGetPackages" DependsOnTargets="DownloadNuGet" Outputs="%(VisualStudioVersion.Identity)">
  85. <Message Text="Restoring nuget packages for '%(VisualStudioVersion.SolutionFile)'..." Importance="High"/>
  86. <Exec Command="$(NuGetExe) restore &quot;%(VisualStudioVersion.SolutionFile)&quot;"/>
  87. </Target>
  88. <Target Name="Build" DependsOnTargets="RestoreNuGetPackages" Outputs="%(VisualStudioVersion.Identity)">
  89. <ItemGroup>
  90. <ProjectToBuild Remove="@(ProjectToBuild)"/>
  91. <ProjectToBuild Include="%(VisualStudioVersion.SolutionFile)">
  92. <Properties>Configuration=Release;VisualStudioVersion=%(VisualStudioVersion.VisualStudioVersion)</Properties>
  93. </ProjectToBuild>
  94. </ItemGroup>
  95. <MSBuild Projects="@(ProjectToBuild)" ToolsVersion="%(VisualStudioVersion.ToolsVersion)" Targets="Rebuild"/>
  96. </Target>
  97. <Target Name="Package" DependsOnTargets="CreateNuGetPackage;CreateBinPackage;GenerateHelpFile"/>
  98. <Target Name="CreateNuGetPackage" DependsOnTargets="CopyBuildOutputToPackage">
  99. <Exec Command="$(NuGetExe) pack $(MSBuildThisFileDirectory)nuget\SSH.NET.nuspec -OutputDirectory &quot;$(MSBuildThisFileDirectory)target&quot; -BasePath &quot;$(MSBuildThisFileDirectory)target\package&quot; -NonInteractive"/>
  100. </Target>
  101. <Target Name="CopyBuildOutputToPackage" Outputs="%(TargetFramework.Identity)">
  102. <ItemGroup>
  103. <BuildOutput Remove="@(BuildOutput)"/>
  104. <BuildOutput Include="$(MSBuildThisFileDirectory)..\src\%(TargetFramework.OutputDirectory)\Renci.SshNet.dll"/>
  105. <BuildOutput Include="$(MSBuildThisFileDirectory)..\src\%(TargetFramework.OutputDirectory)\Renci.SshNet.xml"/>
  106. </ItemGroup>
  107. <Copy SourceFiles="@(BuildOutput)" DestinationFolder="$(MSBuildThisFileDirectory)target\package\lib\%(TargetFramework.Moniker)"/>
  108. </Target>
  109. <Target Name="GenerateHelpFile" DependsOnTargets="CheckReleaseVersion">
  110. <Error Text="Please install Sandcastle, and ensure the SHFBFolder environment variable is set." Condition="'$(SHFBFolder)'==''"/>
  111. <MSBuild Projects="$(MSBuildThisFileDirectory)sandcastle\SSH.NET.shfbproj"/>
  112. <Move SourceFiles="$(MSBuildThisFileDirectory)target\help\SshNet.Help.chm" DestinationFiles="$(MSBuildThisFileDirectory)target\SSH.NET-$(ReleaseVersion)-help.chm"/>
  113. </Target>
  114. <Target Name="CopyBuildOutputToBin" Outputs="%(TargetFramework.Identity)">
  115. <ItemGroup>
  116. <BuildOutput Remove="@(BuildOutput)"/>
  117. <BuildOutput Include="$(MSBuildThisFileDirectory)..\src\%(TargetFramework.OutputDirectory)\*.dll"/>
  118. <BuildOutput Include="$(MSBuildThisFileDirectory)..\src\%(TargetFramework.OutputDirectory)\*.xml"/>
  119. </ItemGroup>
  120. <Copy SourceFiles="@(BuildOutput)" DestinationFolder="$(MSBuildThisFileDirectory)target\bin\lib\%(TargetFramework.Moniker)"/>
  121. </Target>
  122. <Target Name="CreateBinPackage" DependsOnTargets="PrepareMSBuildTasksPackage;CopyBuildOutputToBin;CheckReleaseVersion">
  123. <ItemGroup>
  124. <Files Remove="@(Files)"/>
  125. <Files Include="$(MSBuildThisFileDirectory)..\LICENSE"/>
  126. </ItemGroup>
  127. <Copy SourceFiles="@(Files)" DestinationFolder="$(MSBuildThisFileDirectory)target\bin\%(RecursiveDir)"/>
  128. <ItemGroup>
  129. <Files Remove="@(Files)"/>
  130. <Files Include="$(MSBuildThisFileDirectory)target\bin\**"/>
  131. </ItemGroup>
  132. <Zip ZipFileName="$(MSBuildThisFileDirectory)target\SSH.NET-$(ReleaseVersion)-bin.zip" Files="@(Files)" WorkingDirectory="$(MSBuildThisFileDirectory)target\bin"/>
  133. </Target>
  134. <Target Name="PrepareMSBuildTasksPackage" DependsOnTargets="DownloadNuGet">
  135. <Exec Command="$(NuGetExe) install $(MSBuildTasksPackageId) -Version $(MSBuildTasksPackageVersion) -OutputDirectory &quot;$(MSBuildThisFileDirectory)target\nuget\packages&quot; -Verbosity quiet"/>
  136. </Target>
  137. <Target Name="CheckReleaseVersion" Condition="'$(ReleaseVersion)'==''">
  138. <Error Text= "Please specify the version number of the release (using the &quot;ReleaseVersion&quot; property)."/>
  139. </Target>
  140. <UsingTask TaskName="DownloadFile" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
  141. <ParameterGroup>
  142. <Address ParameterType="System.String" Required="true"/>
  143. <FileName ParameterType="System.String" Required="true" />
  144. </ParameterGroup>
  145. <Task>
  146. <Reference Include="System" />
  147. <Code Type="Fragment" Language="cs">
  148. <![CDATA[
  149. new System.Net.WebClient().DownloadFile(Address, FileName);
  150. ]]>
  151. </Code>
  152. </Task>
  153. </UsingTask>
  154. </Project>