This commit is contained in:
Bartosz Sypytkowski 2016-11-24 11:52:29 +01:00
Родитель 27c2d8808f
Коммит 3163dd3f69
13 изменённых файлов: 731 добавлений и 74 удалений

1
.gitignore поставляемый
Просмотреть файл

@ -21,6 +21,7 @@ build/
bld/
[Bb]in/
[Oo]bj/
.fake/
# Visual Studo 2015 cache/options directory
.vs/

9
.nuget/NuGet.Config Normal file
Просмотреть файл

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<solution>
<add key="disableSourceControlIntegration" value="true" />
</solution>
<packageSources>
<add key="nuget.org" value="https://www.nuget.org/api/v2/" />
</packageSources>
</configuration>

Двоичные данные
.nuget/NuGet.exe Normal file

Двоичный файл не отображается.

144
.nuget/NuGet.targets Normal file
Просмотреть файл

@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">$(MSBuildProjectDirectory)\..\</SolutionDir>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">false</RestorePackages>
<!-- Property that enables building a package from a project -->
<BuildPackage Condition=" '$(BuildPackage)' == '' ">false</BuildPackage>
<!-- Determines if package restore consent is required to restore packages -->
<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>
<!-- Download NuGet.exe if it does not already exist -->
<DownloadNuGetExe Condition=" '$(DownloadNuGetExe)' == '' ">false</DownloadNuGetExe>
</PropertyGroup>
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://www.nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<!--
<PackageSource Include="https://www.nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
-->
</ItemGroup>
<PropertyGroup Condition=" '$(OS)' == 'Windows_NT'">
<!-- Windows specific commands -->
<NuGetToolsPath>$([System.IO.Path]::Combine($(SolutionDir), ".nuget"))</NuGetToolsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(OS)' != 'Windows_NT'">
<!-- We need to launch nuget.exe with the mono command if we're not on windows -->
<NuGetToolsPath>$(SolutionDir).nuget</NuGetToolsPath>
</PropertyGroup>
<PropertyGroup>
<PackagesProjectConfig Condition=" '$(OS)' == 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName.Replace(' ', '_')).config</PackagesProjectConfig>
<PackagesProjectConfig Condition=" '$(OS)' != 'Windows_NT'">$(MSBuildProjectDirectory)\packages.$(MSBuildProjectName).config</PackagesProjectConfig>
</PropertyGroup>
<PropertyGroup>
<PackagesConfig Condition="Exists('$(MSBuildProjectDirectory)\packages.config')">$(MSBuildProjectDirectory)\packages.config</PackagesConfig>
<PackagesConfig Condition="Exists('$(PackagesProjectConfig)')">$(PackagesProjectConfig)</PackagesConfig>
</PropertyGroup>
<PropertyGroup>
<!-- NuGet command -->
<NuGetExePath Condition=" '$(NuGetExePath)' == '' ">$(NuGetToolsPath)\NuGet.exe</NuGetExePath>
<PackageSources Condition=" $(PackageSources) == '' ">@(PackageSource)</PackageSources>
<NuGetCommand Condition=" '$(OS)' == 'Windows_NT'">"$(NuGetExePath)"</NuGetCommand>
<NuGetCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(NuGetExePath)"</NuGetCommand>
<PackageOutputDir Condition="$(PackageOutputDir) == ''">$(TargetDir.Trim('\\'))</PackageOutputDir>
<RequireConsentSwitch Condition=" $(RequireRestoreConsent) == 'true' ">-RequireConsent</RequireConsentSwitch>
<NonInteractiveSwitch Condition=" '$(VisualStudioVersion)' != '' AND '$(OS)' == 'Windows_NT' ">-NonInteractive</NonInteractiveSwitch>
<PaddedSolutionDir Condition=" '$(OS)' == 'Windows_NT'">"$(SolutionDir) "</PaddedSolutionDir>
<PaddedSolutionDir Condition=" '$(OS)' != 'Windows_NT' ">"$(SolutionDir)"</PaddedSolutionDir>
<!-- Commands -->
<RestoreCommand>$(NuGetCommand) install "$(PackagesConfig)" -source "$(PackageSources)" $(NonInteractiveSwitch) $(RequireConsentSwitch) -solutionDir $(PaddedSolutionDir)</RestoreCommand>
<BuildCommand>$(NuGetCommand) pack "$(ProjectPath)" -Properties "Configuration=$(Configuration);Platform=$(Platform)" $(NonInteractiveSwitch) -OutputDirectory "$(PackageOutputDir)" -symbols</BuildCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'true'">
RestorePackages;
$(BuildDependsOn);
</BuildDependsOn>
<!-- Make the build depend on restore packages -->
<BuildDependsOn Condition="$(BuildPackage) == 'true'">
$(BuildDependsOn);
BuildPackage;
</BuildDependsOn>
</PropertyGroup>
<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate nuget.exe -->
<Error Condition="'$(DownloadNuGetExe)' != 'true' AND !Exists('$(NuGetExePath)')" Text="Unable to locate '$(NuGetExePath)'" />
<!--
Take advantage of MsBuild's build dependency tracking to make sure that we only ever download nuget.exe once.
This effectively acts as a lock that makes sure that the download operation will only happen once and all
parallel builds will have to wait for it to complete.
-->
<MsBuild Targets="_DownloadNuGet" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadNuGetExe=$(DownloadNuGetExe)" />
</Target>
<Target Name="_DownloadNuGet">
<DownloadNuGet OutputFilename="$(NuGetExePath)" Condition=" '$(DownloadNuGetExe)' == 'true' AND !Exists('$(NuGetExePath)')" />
</Target>
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)"
Condition="'$(OS)' != 'Windows_NT' And Exists('$(PackagesConfig)')" />
<Exec Command="$(RestoreCommand)"
LogStandardErrorAsError="true"
Condition="'$(OS)' == 'Windows_NT' And Exists('$(PackagesConfig)')" />
</Target>
<Target Name="BuildPackage" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(BuildCommand)"
Condition=" '$(OS)' != 'Windows_NT' " />
<Exec Command="$(BuildCommand)"
LogStandardErrorAsError="true"
Condition=" '$(OS)' == 'Windows_NT' " />
</Target>
<UsingTask TaskName="DownloadNuGet" TaskFactory="CodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.v4.0.dll">
<ParameterGroup>
<OutputFilename ParameterType="System.String" Required="true" />
</ParameterGroup>
<Task>
<Reference Include="System.Core" />
<Using Namespace="System" />
<Using Namespace="System.IO" />
<Using Namespace="System.Net" />
<Using Namespace="Microsoft.Build.Framework" />
<Using Namespace="Microsoft.Build.Utilities" />
<Code Type="Fragment" Language="cs">
<![CDATA[
try {
OutputFilename = Path.GetFullPath(OutputFilename);
Log.LogMessage("Downloading latest version of NuGet.exe...");
WebClient webClient = new WebClient();
webClient.DownloadFile("https://www.nuget.org/nuget.exe", OutputFilename);
return true;
}
catch (Exception ex) {
Log.LogErrorFromException(ex);
return false;
}
]]>
</Code>
</Task>
</UsingTask>
</Project>

3
.nuget/packages.config Normal file
Просмотреть файл

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
</packages>

2
RELEASE_NOTES.md Normal file
Просмотреть файл

@ -0,0 +1,2 @@
### New in 0.9.0 (Released 2016/11/24)
* TODO

8
SharedAssemblyInfo.cs Normal file
Просмотреть файл

@ -0,0 +1,8 @@
// <auto-generated/>
using System.Reflection;
[assembly: AssemblyCompanyAttribute("AsynkronIT")]
[assembly: AssemblyCopyrightAttribute("Copyright <20> 2013-2016 AsynkronIT")]
[assembly: AssemblyTrademarkAttribute("")]
[assembly: AssemblyVersionAttribute("0.9.0.0")]
[assembly: AssemblyFileVersionAttribute("0.9.0.0")]

Просмотреть файл

@ -1,41 +1,18 @@
namespace Wire.FSharpTestTypes.AssemblyInfo
namespace System
open System
open System.Reflection
open System.Runtime.CompilerServices
open System.Runtime.InteropServices
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[<assembly: AssemblyTitle("Wire.FSharpTestTypes")>]
[<assembly: AssemblyDescription("")>]
[<assembly: AssemblyConfiguration("")>]
[<assembly: AssemblyCompany("")>]
[<assembly: AssemblyProduct("Wire.FSharpTestTypes")>]
[<assembly: AssemblyCopyright("Copyright © 2015")>]
[<assembly: AssemblyTrademark("")>]
[<assembly: AssemblyCulture("")>]
[<assembly: AssemblyTitleAttribute("Wire")>]
[<assembly: AssemblyProductAttribute("Wire")>]
[<assembly: AssemblyDescriptionAttribute("Binary serializer for POCO objects")>]
[<assembly: AssemblyCopyrightAttribute("Copyright <EFBFBD> 2013-2016 AsynkronIT")>]
[<assembly: AssemblyCompanyAttribute("AsynkronIT")>]
[<assembly: ComVisibleAttribute(false)>]
[<assembly: CLSCompliantAttribute(true)>]
[<assembly: AssemblyVersionAttribute("0.9.0.0")>]
[<assembly: AssemblyFileVersionAttribute("0.9.0.0")>]
do ()
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[<assembly: ComVisible(false)>]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[<assembly: Guid("2d321671-6320-4dd2-b174-2773192d2a5a")>]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [<assembly: AssemblyVersion("1.0.*")>]
[<assembly: AssemblyVersion("1.0.0.0")>]
[<assembly: AssemblyFileVersion("1.0.0.0")>]
do
()
module internal AssemblyVersionInformation =
let [<Literal>] Version = "0.9.0.0"

Просмотреть файл

@ -13,6 +13,14 @@ Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Wire.FSharpTestTypes", "Wir
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Wire.PerformanceTests", "Wire.PerformanceTests\Wire.PerformanceTests.csproj", "{19E9324E-C3E9-4751-8B8F-5A456CA98E8C}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{2F3D4EC4-3A41-48C2-9DEA-0510B0FF89B4}"
ProjectSection(SolutionItems) = preProject
build.cmd = build.cmd
build.fsx = build.fsx
build.sh = build.sh
RELEASE_NOTES.md = RELEASE_NOTES.md
EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU

Просмотреть файл

@ -2715,7 +2715,6 @@
"NETStandard.Library/1.6.0": {
"sha512": "ypsCvIdCZ4IoYASJHt6tF2fMo7N30NLgV1EbmC+snO490OMl9FvVxmumw14rhReWU3j3g7BYudG6YCrchwHJlA==",
"type": "package",
"path": "NETStandard.Library/1.6.0",
"files": [
"NETStandard.Library.1.6.0.nupkg.sha512",
"NETStandard.Library.nuspec",
@ -3152,7 +3151,6 @@
"runtime.native.System.IO.Compression/4.1.0": {
"sha512": "Ob7nvnJBox1aaB222zSVZSkf4WrebPG4qFscfK7vmD7P7NxoSxACQLtO7ytWpqXDn2wcd/+45+EAZ7xjaPip8A==",
"type": "package",
"path": "runtime.native.System.IO.Compression/4.1.0",
"files": [
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
@ -3162,9 +3160,8 @@
]
},
"runtime.native.System.Net.Http/4.0.1": {
"sha512": "mBsKYpKLQUYz4a8NpS0VxC4DQNCcYVYOjtz9UdyVQAxL6CBRI6FBZoqwly+k1JBbcl7GZ4OS1N/xLaV5UIAteQ==",
"sha512": "Nh0UPZx2Vifh8r+J+H2jxifZUD3sBrmolgiFWJd2yiNrxO0xTa6bAw3YwRn1VOiSen/tUXMS31ttNItCZ6lKuA==",
"type": "package",
"path": "runtime.native.System.Net.Http/4.0.1",
"files": [
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
@ -3176,7 +3173,6 @@
"runtime.native.System.Security.Cryptography/4.0.0": {
"sha512": "2CQK0jmO6Eu7ZeMgD+LOFbNJSXHFVQbCJJkEyEwowh1SCgYnrn9W9RykMfpeeVGw7h4IBvYikzpGUlmZTUafJw==",
"type": "package",
"path": "runtime.native.System.Security.Cryptography/4.0.0",
"files": [
"ThirdPartyNotices.txt",
"dotnet_library_license.txt",
@ -3353,7 +3349,6 @@
"System.Buffers/4.0.0": {
"sha512": "msXumHfjjURSkvxUjYuq4N2ghHoRi2VpXcKMA7gK6ujQfU3vGpl+B6ld0ATRg+FZFpRyA6PgEPA+VlIkTeNf2w==",
"type": "package",
"path": "System.Buffers/4.0.0",
"files": [
"System.Buffers.4.0.0.nupkg.sha512",
"System.Buffers.nuspec",
@ -3600,7 +3595,6 @@
"System.Diagnostics.DiagnosticSource/4.0.0": {
"sha512": "YKglnq4BMTJxfcr6nuT08g+yJ0UxdePIHxosiLuljuHIUR6t4KhFsyaHOaOc1Ofqp0PUvJ0EmcgiEz6T7vEx3w==",
"type": "package",
"path": "System.Diagnostics.DiagnosticSource/4.0.0",
"files": [
"System.Diagnostics.DiagnosticSource.4.0.0.nupkg.sha512",
"System.Diagnostics.DiagnosticSource.nuspec",
@ -3674,7 +3668,6 @@
"System.Diagnostics.Tracing/4.1.0": {
"sha512": "vDN1PoMZCkkdNjvZLql592oYJZgS7URcJzJ7bxeBgGtx5UtR5leNm49VmfHGqIffX4FKacHbI3H6UyNSHQknBg==",
"type": "package",
"path": "System.Diagnostics.Tracing/4.1.0",
"files": [
"System.Diagnostics.Tracing.4.1.0.nupkg.sha512",
"System.Diagnostics.Tracing.nuspec",
@ -3897,7 +3890,6 @@
"System.Globalization.Calendars/4.0.1": {
"sha512": "L1c6IqeQ88vuzC1P81JeHmHA8mxq8a18NUBNXnIY/BVb+TCyAaGIFbhpZt60h9FJNmisymoQkHEFSE9Vslja1Q==",
"type": "package",
"path": "System.Globalization.Calendars/4.0.1",
"files": [
"System.Globalization.Calendars.4.0.1.nupkg.sha512",
"System.Globalization.Calendars.nuspec",
@ -3933,7 +3925,6 @@
"System.Globalization.Extensions/4.0.1": {
"sha512": "KKo23iKeOaIg61SSXwjANN7QYDr/3op3OWGGzDzz7mypx0Za0fZSeG0l6cco8Ntp8YMYkIQcAqlk8yhm5/Uhcg==",
"type": "package",
"path": "System.Globalization.Extensions/4.0.1",
"files": [
"System.Globalization.Extensions.4.0.1.nupkg.sha512",
"System.Globalization.Extensions.nuspec",
@ -4051,7 +4042,6 @@
"System.IO.Compression/4.1.0": {
"sha512": "TjnBS6eztThSzeSib+WyVbLzEdLKUcEHN69VtS3u8aAsSc18FU6xCZlNWWsEd8SKcXAE+y1sOu7VbU8sUeM0sg==",
"type": "package",
"path": "System.IO.Compression/4.1.0",
"files": [
"System.IO.Compression.4.1.0.nupkg.sha512",
"System.IO.Compression.nuspec",
@ -4120,7 +4110,6 @@
"System.IO.Compression.ZipFile/4.0.1": {
"sha512": "hBQYJzfTbQURF10nLhd+az2NHxsU6MU7AB8RUf4IolBP5lOAm4Luho851xl+CqslmhI5ZH/el8BlngEk4lBkaQ==",
"type": "package",
"path": "System.IO.Compression.ZipFile/4.0.1",
"files": [
"System.IO.Compression.ZipFile.4.0.1.nupkg.sha512",
"System.IO.Compression.ZipFile.nuspec",
@ -4382,7 +4371,6 @@
"System.Net.Http/4.1.0": {
"sha512": "ULq9g3SOPVuupt+Y3U+A37coXzdNisB1neFCSKzBwo182u0RDddKJF8I5+HfyXqK6OhJPgeoAwWXrbiUXuRDsg==",
"type": "package",
"path": "System.Net.Http/4.1.0",
"files": [
"System.Net.Http.4.1.0.nupkg.sha512",
"System.Net.Http.nuspec",
@ -4462,7 +4450,6 @@
"System.Net.NameResolution/4.0.0": {
"sha512": "JdqRdM1Qym3YehqdKIi5LHrpypP4JMfxKQSNCJ2z4WawkG0il+N3XfNeJOxll2XrTnG7WgYYPoeiu/KOwg0DQw==",
"type": "package",
"path": "System.Net.NameResolution/4.0.0",
"files": [
"System.Net.NameResolution.4.0.0.nupkg.sha512",
"System.Net.NameResolution.nuspec",
@ -4502,7 +4489,6 @@
"System.Net.Primitives/4.0.11": {
"sha512": "hVvfl4405DRjA2408luZekbPhplJK03j2Y2lSfMlny7GHXlkByw1iLnc9mgKW0GdQn73vvMcWrWewAhylXA4Nw==",
"type": "package",
"path": "System.Net.Primitives/4.0.11",
"files": [
"System.Net.Primitives.4.0.11.nupkg.sha512",
"System.Net.Primitives.nuspec",
@ -4579,7 +4565,6 @@
"System.Net.Sockets/4.1.0": {
"sha512": "xAz0N3dAV/aR/9g8r0Y5oEqU1JRsz29F5EGb/WVHmX3jVSLqi2/92M5hTad2aNWovruXrJpJtgZ9fccPMG9uSw==",
"type": "package",
"path": "System.Net.Sockets/4.1.0",
"files": [
"System.Net.Sockets.4.1.0.nupkg.sha512",
"System.Net.Sockets.nuspec",
@ -4833,7 +4818,7 @@
]
},
"System.Reflection.Emit.Lightweight/4.0.1": {
"sha512": "tqPJ0LLLpQKsVGQqVqKe4i1KVq6m6TJjeYQLygDovNsVtyI8dWFvZC+CQQrfqo1AnbbDq/7S+TQNkOfzxNqPvw==",
"sha512": "sSzHHXueZ5Uh0OLpUQprhr+ZYJrLPA2Cmr4gn0wj9+FftNKXx8RIMKvO9qnjk2ebPYUjZ+F2ulGdPOsvj+MEjA==",
"type": "package",
"path": "System.Reflection.Emit.Lightweight/4.0.1",
"files": [
@ -5408,7 +5393,6 @@
"System.Runtime.Numerics/4.0.1": {
"sha512": "+XbKFuzdmLP3d1o9pdHu2nxjNr2OEPqGzKeegPLCUMM71a0t50A/rOcIRmGs9wR7a8KuHX6hYs/7/TymIGLNqg==",
"type": "package",
"path": "System.Runtime.Numerics/4.0.1",
"files": [
"System.Runtime.Numerics.4.0.1.nupkg.sha512",
"System.Runtime.Numerics.nuspec",
@ -5463,7 +5447,6 @@
"System.Security.Claims/4.0.1": {
"sha512": "4Jlp0OgJLS/Voj1kyFP6MJlIYp3crgfH8kNQk2p7+4JYfc1aAmh9PZyAMMbDhuoolGNtux9HqSOazsioRiDvCw==",
"type": "package",
"path": "System.Security.Claims/4.0.1",
"files": [
"System.Security.Claims.4.0.1.nupkg.sha512",
"System.Security.Claims.nuspec",
@ -5500,7 +5483,6 @@
"System.Security.Cryptography.Algorithms/4.2.0": {
"sha512": "8JQFxbLVdrtIOKMDN38Fn0GWnqYZw/oMlwOUG/qz1jqChvyZlnUmu+0s7wLx7JYua/nAXoESpHA3iw11QFWhXg==",
"type": "package",
"path": "System.Security.Cryptography.Algorithms/4.2.0",
"files": [
"System.Security.Cryptography.Algorithms.4.2.0.nupkg.sha512",
"System.Security.Cryptography.Algorithms.nuspec",
@ -5536,9 +5518,8 @@
]
},
"System.Security.Cryptography.Cng/4.2.0": {
"sha512": "k4YzVPC/8jwgmiwLGRteetYrd/qp+us5CpagrPJ5XmCj8JrwtZnD3c6wQ0Qv3kK02nc0x15vVIxp+yL4EGjAsA==",
"sha512": "cUJ2h+ZvONDe28Szw3st5dOHdjndhJzQ2WObDEXAWRPEQBtVItVoxbXM/OEsTthl3cNn2dk2k0I3y45igCQcLw==",
"type": "package",
"path": "System.Security.Cryptography.Cng/4.2.0",
"files": [
"System.Security.Cryptography.Cng.4.2.0.nupkg.sha512",
"System.Security.Cryptography.Cng.nuspec",
@ -5562,9 +5543,8 @@
]
},
"System.Security.Cryptography.Csp/4.0.0": {
"sha512": "RskCiZVzL8Ygo/MB4SNsNVch5fRtWyCPdpkxcIEYAPdVV7fWZW2HABm67773xUsQr+hsbQg2KN5H9RlPt0NquA==",
"sha512": "/i1Usuo4PgAqgbPNC0NjbO3jPW//BoBlTpcWFD1EHVbidH21y4c1ap5bbEMSGAXjAShhMH4abi/K8fILrnu4BQ==",
"type": "package",
"path": "System.Security.Cryptography.Csp/4.0.0",
"files": [
"System.Security.Cryptography.Csp.4.0.0.nupkg.sha512",
"System.Security.Cryptography.Csp.nuspec",
@ -5594,7 +5574,6 @@
"System.Security.Cryptography.Encoding/4.0.0": {
"sha512": "FbKgE5MbxSQMPcSVRgwM6bXN3GtyAh04NkV8E5zKCBE26X0vYW0UtTa2FIgkH33WVqBVxRgxljlVYumWtU+HcQ==",
"type": "package",
"path": "System.Security.Cryptography.Encoding/4.0.0",
"files": [
"System.Security.Cryptography.Encoding.4.0.0.nupkg.sha512",
"System.Security.Cryptography.Encoding.nuspec",
@ -5631,9 +5610,8 @@
]
},
"System.Security.Cryptography.OpenSsl/4.0.0": {
"sha512": "tINzoEUUUftkzGRK17WhXpx9W6ntHQqpgUg80pnR03Ix+vbME7s4BBV7AykYn2HNq6x8TelCJQ7wgX0p3y6ozg==",
"sha512": "HUG/zNUJwEiLkoURDixzkzZdB5yGA5pQhDP93ArOpDPQMteURIGERRNzzoJlmTreLBWr5lkFSjjMSk8ySEpQMw==",
"type": "package",
"path": "System.Security.Cryptography.OpenSsl/4.0.0",
"files": [
"System.Security.Cryptography.OpenSsl.4.0.0.nupkg.sha512",
"System.Security.Cryptography.OpenSsl.nuspec",
@ -5647,7 +5625,6 @@
"System.Security.Cryptography.Primitives/4.0.0": {
"sha512": "Wkd7QryWYjkQclX0bngpntW5HSlMzeJU24UaLJQ7YTfI8ydAVAaU2J+HXLLABOVJlKTVvAeL0Aj39VeTe7L+oA==",
"type": "package",
"path": "System.Security.Cryptography.Primitives/4.0.0",
"files": [
"System.Security.Cryptography.Primitives.4.0.0.nupkg.sha512",
"System.Security.Cryptography.Primitives.nuspec",
@ -5674,7 +5651,6 @@
"System.Security.Cryptography.X509Certificates/4.1.0": {
"sha512": "4HEfsQIKAhA1+ApNn729Gi09zh+lYWwyIuViihoMDWp1vQnEkL2ct7mAbhBlLYm+x/L4Rr/pyGge1lIY635e0w==",
"type": "package",
"path": "System.Security.Cryptography.X509Certificates/4.1.0",
"files": [
"System.Security.Cryptography.X509Certificates.4.1.0.nupkg.sha512",
"System.Security.Cryptography.X509Certificates.nuspec",
@ -5728,7 +5704,6 @@
"System.Security.Principal/4.0.1": {
"sha512": "On+SKhXY5rzxh/S8wlH1Rm0ogBlu7zyHNxeNBiXauNrhHRXAe9EuX8Yl5IOzLPGU5Z4kLWHMvORDOCG8iu9hww==",
"type": "package",
"path": "System.Security.Principal/4.0.1",
"files": [
"System.Security.Principal.4.0.1.nupkg.sha512",
"System.Security.Principal.nuspec",
@ -5785,7 +5760,6 @@
"System.Security.Principal.Windows/4.0.0": {
"sha512": "iFx15AF3RMEPZn3COh8+Bb2Thv2zsmLd93RchS1b8Mj5SNYeGqbYNCSn5AES1+gq56p4ujGZPrl0xN7ngkXOHg==",
"type": "package",
"path": "System.Security.Principal.Windows/4.0.0",
"files": [
"System.Security.Principal.Windows.4.0.0.nupkg.sha512",
"System.Security.Principal.Windows.nuspec",
@ -6094,7 +6068,6 @@
"System.Threading.Overlapped/4.0.1": {
"sha512": "f7aLuLkBoCQM2kng7zqLFBXz9Gk48gDK8lk1ih9rH/1arJJzZK9gJwNvPDhL6Ps/l6rwOr8jw+4FCHL0KKWiEg==",
"type": "package",
"path": "System.Threading.Overlapped/4.0.1",
"files": [
"System.Threading.Overlapped.4.0.1.nupkg.sha512",
"System.Threading.Overlapped.nuspec",
@ -6203,7 +6176,6 @@
"System.Threading.Timer/4.0.1": {
"sha512": "saGfUV8uqVW6LeURiqxcGhZ24PzuRNaUBtbhVeuUAvky1naH395A/1nY0P2bWvrw/BreRtIB/EzTDkGBpqCwEw==",
"type": "package",
"path": "System.Threading.Timer/4.0.1",
"files": [
"System.Threading.Timer.4.0.1.nupkg.sha512",
"System.Threading.Timer.nuspec",
@ -6397,7 +6369,5 @@
"Microsoft.CSharp >= 4.0.1",
"NETStandard.Library >= 1.6.0"
]
},
"tools": {},
"projectFileToolGroups": {}
}
}

Просмотреть файл

@ -1,4 +1,42 @@
@echo off
pushd %~dp0
echo Placehold build.cmd untill we fix CI
SETLOCAL
SET CACHED_NUGET=%LocalAppData%\NuGet\NuGet.exe
IF EXIST %CACHED_NUGET% goto copynuget
echo Downloading latest version of NuGet.exe...
IF NOT EXIST %LocalAppData%\NuGet md %LocalAppData%\NuGet
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "$ProgressPreference = 'SilentlyContinue'; Invoke-WebRequest 'https://www.nuget.org/nuget.exe' -OutFile '%CACHED_NUGET%'"
:copynuget
IF EXIST .nuget\nuget.exe goto restore
md .nuget
copy %CACHED_NUGET% .nuget\nuget.exe > nul
:restore
.nuget\NuGet.exe update -self
pushd %~dp0
.nuget\NuGet.exe update -self
.nuget\NuGet.exe install FAKE -ConfigFile .nuget\Nuget.Config -OutputDirectory packages -ExcludeVersion -Version 4.16.1
.nuget\NuGet.exe install NUnit.Console -ConfigFile .nuget\Nuget.Config -OutputDirectory packages\FAKE -ExcludeVersion -Version 3.2.1
.nuget\NuGet.exe install xunit.runner.console -ConfigFile .nuget\Nuget.Config -OutputDirectory packages\FAKE -ExcludeVersion -Version 2.0.0
.nuget\NuGet.exe install NBench.Runner -OutputDirectory packages -ExcludeVersion -Version 0.3.1
.nuget\NuGet.exe install Microsoft.SourceBrowser -OutputDirectory packages -ExcludeVersion
if not exist packages\SourceLink.Fake\tools\SourceLink.fsx (
.nuget\nuget.exe install SourceLink.Fake -ConfigFile .nuget\Nuget.Config -OutputDirectory packages -ExcludeVersion
)
rem cls
set encoding=utf-8
packages\FAKE\tools\FAKE.exe build.fsx %*
popd

452
build.fsx Normal file
Просмотреть файл

@ -0,0 +1,452 @@
#I @"packages/FAKE/tools"
#r "FakeLib.dll"
#r "System.Xml.Linq"
open System
open System.IO
open System.Text
open Fake
open Fake.FileUtils
open Fake.TaskRunnerHelper
open Fake.ProcessHelper
cd __SOURCE_DIRECTORY__
//--------------------------------------------------------------------------------
// Information about the project for Nuget and Assembly info files
//--------------------------------------------------------------------------------
let product = "Wire"
let authors = [ "Roger Johansson" ]
let copyright = "Copyright © 2013-2016 AsynkronIT"
let company = "AsynkronIT"
let description = "Binary serializer for POCO objects"
let tags = [ "serializer" ]
let configuration = "Release"
let toolDir = "tools"
let CloudCopyDir = toolDir @@ "CloudCopy"
let AzCopyDir = toolDir @@ "AzCopy"
// Read release notes and version
let root = @".\"
let solutionName = "Wire.sln"
let solutionPath = root @@ solutionName
let parsedRelease =
File.ReadLines "RELEASE_NOTES.md"
|> ReleaseNotesHelper.parseReleaseNotes
let envBuildNumber = System.Environment.GetEnvironmentVariable("BUILD_NUMBER")
let buildNumber = if String.IsNullOrWhiteSpace(envBuildNumber) then "0" else envBuildNumber
let version = parsedRelease.AssemblyVersion + "." + buildNumber
let preReleaseVersion = version + "-beta"
let isUnstableDocs = hasBuildParam "unstable"
let isPreRelease = hasBuildParam "nugetprerelease"
let release = if isPreRelease then ReleaseNotesHelper.ReleaseNotes.New(version, version + "-beta", parsedRelease.Notes) else parsedRelease
printfn "Assembly version: %s\nNuget version; %s\n" release.AssemblyVersion release.NugetVersion
//--------------------------------------------------------------------------------
// Directories
let binDir = "bin"
let testOutput = FullName "TestResults"
let perfOutput = FullName "PerfResults"
let nugetDir = binDir @@ "nuget"
let workingDir = binDir @@ "build"
let libDir = workingDir @@ @"lib\net45\"
let nugetExe = FullName (root @@ @".nuget\NuGet.exe")
let docDir = "bin" @@ "doc"
let sourceBrowserDocsDir = binDir @@ "sourcebrowser"
let msdeployPath = "C:\Program Files (x86)\IIS\Microsoft Web Deploy V3\msdeploy.exe"
open Fake.RestorePackageHelper
Target "RestorePackages" (fun _ ->
solutionPath
|> RestoreMSSolutionPackages (fun p ->
{ p with
OutputPath = root + "packages"
Retries = 4 })
)
//--------------------------------------------------------------------------------
// Clean build results
Target "Clean" <| fun _ ->
DeleteDir binDir
//--------------------------------------------------------------------------------
// Generate AssemblyInfo files with the version for release notes
open AssemblyInfoFile
Target "AssemblyInfo" <| fun _ ->
CreateCSharpAssemblyInfoWithConfig (root + "SharedAssemblyInfo.cs") [
Attribute.Company company
Attribute.Copyright copyright
Attribute.Trademark ""
Attribute.Version version
Attribute.FileVersion version ] <| AssemblyInfoFileConfig(false)
for file in !! (root @@ "**/AssemblyInfo.fs") do
let title =
file
|> Path.GetDirectoryName
|> Path.GetDirectoryName
|> Path.GetFileName
CreateFSharpAssemblyInfo file [
Attribute.Title title
Attribute.Product product
Attribute.Description description
Attribute.Copyright copyright
Attribute.Company company
Attribute.ComVisible false
Attribute.CLSCompliant true
Attribute.Version version
Attribute.FileVersion version ]
//--------------------------------------------------------------------------------
// Build the solution
Target "Build" <| fun _ ->
!! solutionPath
|> MSBuildRelease "" "Rebuild"
|> ignore
//--------------------------------------------------------------------------------
// Build the docs
Target "Docs" <| fun _ ->
!! "documentation/wiredoc.shfbproj"
|> MSBuildRelease "" "Rebuild"
|> ignore
//--------------------------------------------------------------------------------
// Push DOCs content to Windows Azure blob storage
Target "AzureDocsDeploy" (fun _ ->
let rec pushToAzure docDir azureUrl container azureKey trialsLeft =
let tracing = enableProcessTracing
enableProcessTracing <- false
let arguments = sprintf "/Source:%s /Dest:%s /DestKey:%s /S /Y /SetContentType" (Path.GetFullPath docDir) (azureUrl @@ container) azureKey
tracefn "Pushing docs to %s. Attempts left: %d" (azureUrl) trialsLeft
try
let result = ExecProcess(fun info ->
info.FileName <- AzCopyDir @@ "AzCopy.exe"
info.Arguments <- arguments) (TimeSpan.FromMinutes 120.0) //takes a very long time to upload
if result <> 0 then failwithf "Error during AzCopy.exe upload to azure."
with exn ->
if (trialsLeft > 0) then (pushToAzure docDir azureUrl container azureKey (trialsLeft-1))
else raise exn
let canPush = hasBuildParam "azureKey" && hasBuildParam "azureUrl"
if (canPush) then
printfn "Uploading API docs to Azure..."
let azureUrl = getBuildParam "azureUrl"
let azureKey = (getBuildParam "azureKey") + "==" //hack, because it looks like FAKE arg parsing chops off the "==" that gets tacked onto the end of each Azure storage key
if(isUnstableDocs) then
pushToAzure docDir azureUrl "unstable" azureKey 3
if(not isUnstableDocs) then
pushToAzure docDir azureUrl "stable" azureKey 3
pushToAzure docDir azureUrl release.NugetVersion azureKey 3
if(not canPush) then
printfn "Missing required parameters to push docs to Azure. Run build HelpDocs to find out!"
)
Target "PublishDocs" DoNothing
//--------------------------------------------------------------------------------
// Build the SourceBrowser docs
//--------------------------------------------------------------------------------
Target "GenerateSourceBrowser" <| (fun _ ->
DeleteDir sourceBrowserDocsDir
let htmlGeneratorPath = root @@ "packages/Microsoft.SourceBrowser/tools/HtmlGenerator.exe"
let arguments = sprintf "/out:%s %s" sourceBrowserDocsDir solutionPath
printfn "Using SourceBrowser: %s %s" htmlGeneratorPath arguments
let result = ExecProcess(fun info ->
info.FileName <- htmlGeneratorPath
info.Arguments <- arguments) (System.TimeSpan.FromMinutes 20.0)
if result <> 0 then failwithf "SourceBrowser failed. %s %s" htmlGeneratorPath arguments
)
//--------------------------------------------------------------------------------
// Publish the SourceBrowser docs
//--------------------------------------------------------------------------------
Target "PublishSourceBrowser" <| (fun _ ->
let canPublish = hasBuildParam "publishsettings"
if (canPublish) then
let sourceBrowserPublishSettingsPath = getBuildParam "publishsettings"
let arguments = sprintf "-verb:sync -source:contentPath=\"%s\" -dest:contentPath=sourcebrowser,publishSettings=\"%s\"" (Path.GetFullPath sourceBrowserDocsDir) sourceBrowserPublishSettingsPath
printfn "Using MSDeploy: %s %s" msdeployPath arguments
let result = ExecProcess(fun info ->
info.FileName <- msdeployPath
info.Arguments <- arguments) (System.TimeSpan.FromMinutes 30.0) //takes a long time to upload
if result <> 0 then failwithf "MSDeploy failed. %s %s" msdeployPath arguments
else
printfn "Missing required parameter to publish SourceBrowser docs. Run build HelpSourceBrowserDocs to find out!"
)
//--------------------------------------------------------------------------------
// Copy the build output to bin directory
//--------------------------------------------------------------------------------
Target "CopyOutput" <| fun _ ->
let copyOutput project =
let src = root @@ project @@ @"bin/Release/"
let dst = binDir @@ project
CopyDir dst src allFiles
[ "Wire" ]
|> List.iter copyOutput
Target "BuildRelease" DoNothing
//--------------------------------------------------------------------------------
// Clean test output
Target "CleanTests" <| fun _ ->
DeleteDir testOutput
//--------------------------------------------------------------------------------
// Run tests
open Fake.Testing
Target "RunTests" <| fun _ ->
let testAssemblies = !! (root @@ "**/bin/Release/Wire.Tests.dll")
mkdir testOutput
let xunitToolPath = findToolInSubPath "xunit.console.exe" (root @@ "packages/xunit.runner.console*/tools")
printfn "Using XUnit runner: %s" xunitToolPath
xUnit2
(fun p -> { p with XmlOutputPath = Some (testOutput + @"\XUnitTestResults.xml"); HtmlOutputPath = Some (testOutput + @"\XUnitTestResults.HTML"); ToolPath = xunitToolPath; TimeOut = System.TimeSpan.FromMinutes 30.0; Parallel = ParallelMode.NoParallelization })
testAssemblies
//--------------------------------------------------------------------------------
// Nuget targets
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
// Clean nuget directory
Target "CleanNuget" <| fun _ ->
CleanDir nugetDir
//--------------------------------------------------------------------------------
// Pack nuget for all projects
// Publish to nuget.org if nugetkey is specified
let createNugetPackages _ =
let removeDir dir =
let del _ =
DeleteDir dir
not (directoryExists dir)
runWithRetries del 3 |> ignore
let mutable dirId = 1
ensureDirectory nugetDir
for nuspec in !! (root @@ "**/Wire.nuspec") do
printfn "Creating nuget packages for %s" nuspec
let tempBuildDir = workingDir + dirId.ToString()
ensureDirectory tempBuildDir
CleanDir tempBuildDir
let project = Path.GetFileNameWithoutExtension nuspec
let projectDir = Path.GetDirectoryName nuspec
let projectFile = (!! (projectDir @@ project + ".*sproj")) |> Seq.head
let releaseDir = projectDir @@ @"bin\Release"
let packages = projectDir @@ "packages.config"
let packageDependencies = if (fileExists packages) then (getDependencies packages) else []
let pack outputDir symbolPackage =
NuGetHelper.NuGet
(fun p ->
{ p with
Description = description
Authors = authors
Copyright = copyright
Project = project
Properties = ["Configuration", "Release"]
ReleaseNotes = release.Notes |> String.concat "\n"
Version = release.NugetVersion
Tags = tags |> String.concat " "
OutputPath = outputDir
WorkingDir = tempBuildDir
SymbolPackage = symbolPackage
Dependencies = packageDependencies })
nuspec
// Copy dll, pdb and xml to libdir = tempBuildDir/lib/net45/
let tempLibDir = tempBuildDir @@ @"lib\net45\"
ensureDirectory tempLibDir
!! (releaseDir @@ project + ".dll")
++ (releaseDir @@ project + ".pdb")
++ (releaseDir @@ project + ".xml")
++ (releaseDir @@ project + ".ExternalAnnotations.xml")
|> CopyFiles tempLibDir
// Copy all src-files (.cs and .fs files) to tempBuildDir/src
let nugetSrcDir = tempBuildDir @@ root
// CreateDir nugetSrcDir
let isCs = hasExt ".cs"
let isFs = hasExt ".fs"
let isAssemblyInfo f = (filename f).Contains("AssemblyInfo")
let isSrc f = (isCs f || isFs f) && not (isAssemblyInfo f)
CopyDir nugetSrcDir projectDir isSrc
//Remove tempBuildDir/src/obj and tempBuildDir/src/bin
removeDir (nugetSrcDir @@ "obj")
removeDir (nugetSrcDir @@ "bin")
// Create both normal nuget package and symbols nuget package.
// Uses the files we copied to workingDir and outputs to nugetdir
pack nugetDir NugetSymbolPackage.Nuspec
dirId <- dirId + 1
let publishNugetPackages _ =
let rec publishPackage url accessKey trialsLeft packageFile =
let tracing = enableProcessTracing
enableProcessTracing <- false
let args p =
match p with
| (pack, key, "") -> sprintf "push \"%s\" %s" pack key
| (pack, key, url) -> sprintf "push \"%s\" %s -source %s" pack key url
tracefn "Pushing %s Attempts left: %d" (FullName packageFile) trialsLeft
try
let result = ExecProcess (fun info ->
info.FileName <- nugetExe
info.WorkingDirectory <- (Path.GetDirectoryName (FullName packageFile))
info.Arguments <- args (packageFile, accessKey,url)) (System.TimeSpan.FromMinutes 1.0)
enableProcessTracing <- tracing
if result <> 0 then failwithf "Error during NuGet symbol push. %s %s" nugetExe (args (packageFile, "key omitted",url))
with exn ->
if (trialsLeft > 0) then (publishPackage url accessKey (trialsLeft-1) packageFile)
else raise exn
let shouldPushNugetPackages = hasBuildParam "nugetkey"
let shouldPushSymbolsPackages = (hasBuildParam "symbolspublishurl") && (hasBuildParam "symbolskey")
if (shouldPushNugetPackages || shouldPushSymbolsPackages) then
printfn "Pushing nuget packages"
if shouldPushNugetPackages then
let normalPackages=
!! (nugetDir @@ "*.nupkg")
-- (nugetDir @@ "*.symbols.nupkg") |> Seq.sortBy(fun x -> x.ToLower())
for package in normalPackages do
try
publishPackage (getBuildParamOrDefault "nugetpublishurl" "") (getBuildParam "nugetkey") 3 package
with exn ->
printfn "%s" exn.Message
if shouldPushSymbolsPackages then
let symbolPackages= !! (nugetDir @@ "*.symbols.nupkg") |> Seq.sortBy(fun x -> x.ToLower())
for package in symbolPackages do
try
publishPackage (getBuildParam "symbolspublishurl") (getBuildParam "symbolskey") 3 package
with exn ->
printfn "%s" exn.Message
Target "Nuget" <| fun _ ->
createNugetPackages()
publishNugetPackages()
Target "CreateNuget" <| fun _ ->
createNugetPackages()
Target "PublishNuget" <| fun _ ->
publishNugetPackages()
//--------------------------------------------------------------------------------
// Help
//--------------------------------------------------------------------------------
Target "Help" <| fun _ ->
List.iter printfn [
"usage:"
"build [target]"
""
" Targets for building:"
" * Build Builds"
" * Nuget Create and optionally publish nugets packages"
" * RunTests Runs tests"
" * All Builds, run tests, creates and optionally publish nuget packages"
""
" Other Targets"
" * Help Display this help"
" * HelpNuget Display help about creating and pushing nuget packages"
""]
Target "HelpNuget" <| fun _ ->
List.iter printfn [
"usage: "
"build Nuget [nugetkey=<key> [nugetpublishurl=<url>]] "
" [symbolskey=<key> symbolspublishurl=<url>] "
" [nugetprerelease=<prefix>]"
""
"Arguments for Nuget target:"
" nugetprerelease=<prefix> Creates a pre-release package."
" The version will be version-prefix<date>"
" Example: nugetprerelease=dev =>"
" 0.6.3-dev1408191917"
""
"In order to publish a nuget package, keys must be specified."
"If a key is not specified the nuget packages will only be created on disk"
"After a build you can find them in bin/nuget"
""
"For pushing nuget packages to nuget.org and symbols to symbolsource.org"
"you need to specify nugetkey=<key>"
" build Nuget nugetKey=<key for nuget.org>"
""
"For pushing the ordinary nuget packages to another place than nuget.org specify the url"
" nugetkey=<key> nugetpublishurl=<url> "
""
"For pushing symbols packages specify:"
" symbolskey=<key> symbolspublishurl=<url> "
""
"Examples:"
" build Nuget Build nuget packages to the bin/nuget folder"
""
" build Nuget nugetprerelease=dev Build pre-release nuget packages"
""
" build Nuget nugetkey=123 Build and publish to nuget.org and symbolsource.org"
""
" build Nuget nugetprerelease=dev nugetkey=123 nugetpublishurl=http://abc"
" symbolskey=456 symbolspublishurl=http://xyz"
" Build and publish pre-release nuget packages to http://abc"
" and symbols packages to http://xyz"
""]
//--------------------------------------------------------------------------------
// Target dependencies
//--------------------------------------------------------------------------------
// build dependencies
"Clean" ==> "AssemblyInfo" ==> "RestorePackages" ==> "Build" ==> "CopyOutput" ==> "BuildRelease"
// tests dependencies
"CleanTests" ==> "RunTests"
// nuget dependencies
"CleanNuget" ==> "CreateNuget"
"CleanNuget" ==> "BuildRelease" ==> "Nuget"
Target "All" DoNothing
"BuildRelease" ==> "All"
"RunTests" ==> "All"
"Nuget" ==> "All"
RunTargetOrDefault "Help"

45
build.sh Normal file
Просмотреть файл

@ -0,0 +1,45 @@
#!/bin/bash
SCRIPT_PATH="${BASH_SOURCE[0]}";
if ([ -h "${SCRIPT_PATH}" ]) then
while([ -h "${SCRIPT_PATH}" ]) do SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
pushd . > /dev/null
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`;
popd > /dev/null
if ! [ -f $SCRIPT_PATH/.nuget/nuget.exe ]
then
wget "https://www.nuget.org/nuget.exe" -P $SCRIPT_PATH/.nuget/
fi
mono $SCRIPT_PATH/.nuget/nuget.exe update -self
SCRIPT_PATH="${BASH_SOURCE[0]}";
if ([ -h "${SCRIPT_PATH}" ]) then
while([ -h "${SCRIPT_PATH}" ]) do SCRIPT_PATH=`readlink "${SCRIPT_PATH}"`; done
fi
pushd . > /dev/null
cd `dirname ${SCRIPT_PATH}` > /dev/null
SCRIPT_PATH=`pwd`;
popd > /dev/null
mono $SCRIPT_PATH/.nuget/NuGet.exe update -self
mono $SCRIPT_PATH/.nuget/NuGet.exe install FAKE -OutputDirectory $SCRIPT_PATH/packages -ExcludeVersion -Version 4.16.1
mono $SCRIPT_PATH/.nuget/NuGet.exe install xunit.runner.console -OutputDirectory $SCRIPT_PATH/packages/FAKE -ExcludeVersion -Version 2.0.0
mono $SCRIPT_PATH/.nuget/NuGet.exe install NUnit.Console -OutputDirectory $SCRIPT_PATH/packages/FAKE -ExcludeVersion -Version 3.2.1
mono $SCRIPT_PATH/.nuget/NuGet.exe install NBench.Runner -OutputDirectory $SCRIPT_PATH/packages -ExcludeVersion -Version 0.3.1
if ! [ -e $SCRIPT_PATH/packages/SourceLink.Fake/tools/SourceLink.fsx ] ; then
mono $SCRIPT_PATH/.nuget/NuGet.exe install SourceLink.Fake -OutputDirectory $SCRIPT_PATH/packages -ExcludeVersion
fi
export encoding=utf-8
mono $SCRIPT_PATH/packages/FAKE/tools/FAKE.exe build.fsx "$@"