build.proj 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Project ToolsVersion="4.0" DefaultTargets="Clean;CreatePackage;GenerateHelpFile" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  3. <PropertyGroup>
  4. <Configuration Condition="'$(Configuration)' == ''">Release</Configuration>
  5. <BuildRoot>$(MSBuildThisFileDirectory)</BuildRoot>
  6. <NuGetExe>$(BuildRoot)target\nuget\nuget.exe</NuGetExe>
  7. </PropertyGroup>
  8. <ItemGroup>
  9. <VisualStudioVersion Include="2012">
  10. <SolutionFile>$(MSBuildThisFileDirectory)..\src\Renci.SshNet.VS2012.sln</SolutionFile>
  11. </VisualStudioVersion>
  12. <VisualStudioVersion Include="2015">
  13. <SolutionFile>$(MSBuildThisFileDirectory)..\src\Renci.SshNet.VS2015.sln</SolutionFile>
  14. </VisualStudioVersion>
  15. </ItemGroup>
  16. <ItemGroup>
  17. <TargetFramework Include=".NET Framework 3.5">
  18. <OutputDirectory>Renci.SshNet.NET35\bin\$(Configuration)</OutputDirectory>
  19. <Moniker>net35</Moniker>
  20. </TargetFramework>
  21. <TargetFramework Include=".NET Framework 4.0">
  22. <OutputDirectory>Renci.SshNet\bin\$(Configuration)</OutputDirectory>
  23. <Moniker>net40</Moniker>
  24. </TargetFramework>
  25. <TargetFramework Include=".NETStandard 1.3">
  26. <OutputDirectory>Renci.SshNet.NETCore\bin\$(Configuration)\netstandard1.3</OutputDirectory>
  27. <Moniker>netstandard1.3</Moniker>
  28. </TargetFramework>
  29. <TargetFramework Include="Windows Phone Silverlight 7.1">
  30. <OutputDirectory>Renci.SshNet.WindowsPhone\bin\$(Configuration)</OutputDirectory>
  31. <Moniker>wp71</Moniker>
  32. </TargetFramework>
  33. <TargetFramework Include="Windows Phone Silverlight 8.0">
  34. <OutputDirectory>Renci.SshNet.WindowsPhone8\bin\$(Configuration)</OutputDirectory>
  35. <Moniker>wp8</Moniker>
  36. </TargetFramework>
  37. <TargetFramework Include="Silverlight 4">
  38. <OutputDirectory>Renci.SshNet.Silverlight\bin\$(Configuration)</OutputDirectory>
  39. <Moniker>sl4</Moniker>
  40. </TargetFramework>
  41. <TargetFramework Include="Silverlight 5">
  42. <OutputDirectory>Renci.SshNet.Silverlight5\bin\$(Configuration)</OutputDirectory>
  43. <Moniker>sl5</Moniker>
  44. </TargetFramework>
  45. <TargetFramework Include="Universal Windows Platform 10">
  46. <OutputDirectory>Renci.SshNet.UAP10\bin\$(Configuration)</OutputDirectory>
  47. <Moniker>uap10</Moniker>
  48. </TargetFramework>
  49. </ItemGroup>
  50. <Target Name="Clean">
  51. <RemoveDir Directories="$(MSBuildThisFileDirectory)target"/>
  52. <ItemGroup>
  53. <ProjectToBuild Remove="@(ProjectToBuild)"/>
  54. <ProjectToBuild Include="%(VisualStudioVersion.SolutionFile)">
  55. <Properties>Configuration=Release</Properties>
  56. </ProjectToBuild>
  57. </ItemGroup>
  58. <MSBuild Projects="@(ProjectToBuild)" Targets="Clean"/>
  59. </Target>
  60. <Target Name="DownloadNuGet">
  61. <MakeDir Directories="$(MSBuildThisFileDirectory)target\nuget"/>
  62. <DownloadFile
  63. Address="https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
  64. FileName="$(MSBuildThisFileDirectory)target\nuget\nuget.exe"/>
  65. </Target>
  66. <Target Name="RestoreNuGetPackages" DependsOnTargets="DownloadNuGet" Outputs="%(VisualStudioVersion.Identity)">
  67. <Message Text="Restoring nuget packages for '%(VisualStudioVersion.SolutionFile)'..." Importance="High"/>
  68. <Exec Command="$(NuGetExe) restore &quot;%(VisualStudioVersion.SolutionFile)&quot;"/>
  69. </Target>
  70. <Target Name="Build" DependsOnTargets="RestoreNuGetPackages" Outputs="%(VisualStudioVersion.Identity)">
  71. <ItemGroup>
  72. <ProjectToBuild Remove="@(ProjectToBuild)"/>
  73. <ProjectToBuild Include="%(VisualStudioVersion.SolutionFile)">
  74. <Properties>Configuration=Release</Properties>
  75. </ProjectToBuild>
  76. </ItemGroup>
  77. <MSBuild Projects="@(ProjectToBuild)" Targets="Rebuild"/>
  78. </Target>
  79. <Target Name="CreatePackage" DependsOnTargets="CopyBuildOutputToPackage">
  80. <Exec Command="$(NuGetExe) pack $(MSBuildThisFileDirectory)nuget\SSH.NET.nuspec -OutputDirectory &quot;$(MSBuildThisFileDirectory)target&quot; -BasePath &quot;$(MSBuildThisFileDirectory)target\package&quot; -NonInteractive"/>
  81. </Target>
  82. <Target Name="CopyBuildOutputToPackage" DependsOnTargets="Build" Outputs="%(TargetFramework.Identity)">
  83. <ItemGroup>
  84. <BuildOutput Remove="@(BuildOutput)"/>
  85. <BuildOutput Include="$(MSBuildThisFileDirectory)..\src\%(TargetFramework.OutputDirectory)\Renci.SshNet.dll"/>
  86. <BuildOutput Include="$(MSBuildThisFileDirectory)..\src\%(TargetFramework.OutputDirectory)\Renci.SshNet.xml"/>
  87. </ItemGroup>
  88. <Copy SourceFiles="@(BuildOutput)" DestinationFolder="$(MSBuildThisFileDirectory)target\package\lib\%(TargetFramework.Moniker)"/>
  89. </Target>
  90. <Target Name="GenerateHelpFile" DependsOnTargets="Build">
  91. <Error Text="Please install Sandcastle, and ensure the SHFBFolder environment variable is set." Condition="'$(SHFBFolder)'==''"/>
  92. <MSBuild Projects="$(MSBuildThisFileDirectory)sandcastle\SSH.NET.shfbproj"/>
  93. </Target>
  94. <UsingTask TaskName="DownloadFile" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
  95. <ParameterGroup>
  96. <Address ParameterType="System.String" Required="true"/>
  97. <FileName ParameterType="System.String" Required="true" />
  98. </ParameterGroup>
  99. <Task>
  100. <Reference Include="System" />
  101. <Code Type="Fragment" Language="cs">
  102. <![CDATA[
  103. new System.Net.WebClient().DownloadFile(Address, FileName);
  104. ]]>
  105. </Code>
  106. </Task>
  107. </UsingTask>
  108. </Project>