Convert to Paket; Update API
Pushing towards a full release of this library with complete CUID functionality
This commit is contained in:
parent
e88d9cf3f4
commit
d5e0dcfab3
461
.paket/Paket.Restore.targets
Normal file
461
.paket/Paket.Restore.targets
Normal file
|
@ -0,0 +1,461 @@
|
||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<!-- Prevent dotnet template engine to parse this file -->
|
||||||
|
<!--/-:cnd:noEmit-->
|
||||||
|
<PropertyGroup>
|
||||||
|
<!-- make MSBuild track this file for incremental builds. -->
|
||||||
|
<!-- ref https://blogs.msdn.microsoft.com/msbuild/2005/09/26/how-to-ensure-changes-to-a-custom-target-file-prompt-a-rebuild/ -->
|
||||||
|
<MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildThisFileFullPath)</MSBuildAllProjects>
|
||||||
|
|
||||||
|
<DetectedMSBuildVersion>$(MSBuildVersion)</DetectedMSBuildVersion>
|
||||||
|
<DetectedMSBuildVersion Condition="$(MSBuildVersion) == ''">15.0.0</DetectedMSBuildVersion>
|
||||||
|
<MSBuildSupportsHashing>false</MSBuildSupportsHashing>
|
||||||
|
<MSBuildSupportsHashing Condition=" '$(DetectedMSBuildVersion)' > '15.8.0' ">true</MSBuildSupportsHashing>
|
||||||
|
<!-- Mark that this target file has been loaded. -->
|
||||||
|
<IsPaketRestoreTargetsFileLoaded>true</IsPaketRestoreTargetsFileLoaded>
|
||||||
|
<PaketToolsPath>$(MSBuildThisFileDirectory)</PaketToolsPath>
|
||||||
|
<PaketRootPath>$(MSBuildThisFileDirectory)..\</PaketRootPath>
|
||||||
|
<PaketRestoreCacheFile>$(PaketRootPath)paket-files\paket.restore.cached</PaketRestoreCacheFile>
|
||||||
|
<PaketLockFilePath>$(PaketRootPath)paket.lock</PaketLockFilePath>
|
||||||
|
<PaketBootstrapperStyle>classic</PaketBootstrapperStyle>
|
||||||
|
<PaketBootstrapperStyle Condition="Exists('$(PaketToolsPath)paket.bootstrapper.proj')">proj</PaketBootstrapperStyle>
|
||||||
|
<PaketExeImage>assembly</PaketExeImage>
|
||||||
|
<PaketExeImage Condition=" '$(PaketBootstrapperStyle)' == 'proj' ">native</PaketExeImage>
|
||||||
|
<MonoPath Condition="'$(MonoPath)' == '' And Exists('/Library/Frameworks/Mono.framework/Commands/mono')">/Library/Frameworks/Mono.framework/Commands/mono</MonoPath>
|
||||||
|
<MonoPath Condition="'$(MonoPath)' == ''">mono</MonoPath>
|
||||||
|
|
||||||
|
<!-- PaketBootStrapper -->
|
||||||
|
<PaketBootStrapperExePath Condition=" '$(PaketBootStrapperExePath)' == '' AND Exists('$(PaketRootPath)paket.bootstrapper.exe')">$(PaketRootPath)paket.bootstrapper.exe</PaketBootStrapperExePath>
|
||||||
|
<PaketBootStrapperExePath Condition=" '$(PaketBootStrapperExePath)' == '' ">$(PaketToolsPath)paket.bootstrapper.exe</PaketBootStrapperExePath>
|
||||||
|
<PaketBootStrapperExeDir Condition=" Exists('$(PaketBootStrapperExePath)') " >$([System.IO.Path]::GetDirectoryName("$(PaketBootStrapperExePath)"))\</PaketBootStrapperExeDir>
|
||||||
|
|
||||||
|
<!-- Paket -->
|
||||||
|
|
||||||
|
<!-- windows, root => tool => proj style => bootstrapper => global -->
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' == 'Windows_NT' AND Exists('$(PaketRootPath)paket.exe') ">$(PaketRootPath)paket.exe</PaketExePath>
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' == 'Windows_NT' AND Exists('$(PaketToolsPath)paket.exe') ">$(PaketToolsPath)paket.exe</PaketExePath>
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' == 'Windows_NT' AND '$(PaketBootstrapperStyle)' == 'proj' ">$(PaketToolsPath)paket.exe</PaketExePath>
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' == 'Windows_NT' AND Exists('$(PaketBootStrapperExeDir)') ">$(_PaketBootStrapperExeDir)paket.exe</PaketExePath>
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' == 'Windows_NT' ">paket.exe</PaketExePath>
|
||||||
|
|
||||||
|
<!-- no windows, try native paket as default, root => tool => proj style => mono paket => bootstrpper => global -->
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' != 'Windows_NT' AND Exists('$(PaketRootPath)paket') ">$(PaketRootPath)paket</PaketExePath>
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' != 'Windows_NT' AND Exists('$(PaketToolsPath)paket') ">$(PaketToolsPath)paket</PaketExePath>
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' != 'Windows_NT' AND '$(PaketBootstrapperStyle)' == 'proj' ">$(PaketToolsPath)paket</PaketExePath>
|
||||||
|
|
||||||
|
<!-- no windows, try mono paket -->
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' != 'Windows_NT' AND Exists('$(PaketRootPath)paket.exe') ">$(PaketRootPath)paket.exe</PaketExePath>
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' != 'Windows_NT' AND Exists('$(PaketToolsPath)paket.exe') ">$(PaketToolsPath)paket.exe</PaketExePath>
|
||||||
|
|
||||||
|
<!-- no windows, try bootstrapper -->
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' != 'Windows_NT' AND Exists('$(PaketBootStrapperExeDir)') ">$(PaketBootStrapperExeDir)paket.exe</PaketExePath>
|
||||||
|
|
||||||
|
<!-- no windows, try global native paket -->
|
||||||
|
<PaketExePath Condition=" '$(PaketExePath)' == '' AND '$(OS)' != 'Windows_NT' ">paket</PaketExePath>
|
||||||
|
|
||||||
|
<!-- Paket command -->
|
||||||
|
<_PaketExeExtension>$([System.IO.Path]::GetExtension("$(PaketExePath)"))</_PaketExeExtension>
|
||||||
|
<PaketCommand Condition=" '$(PaketCommand)' == '' AND '$(_PaketExeExtension)' == '.dll' ">dotnet "$(PaketExePath)"</PaketCommand>
|
||||||
|
<PaketCommand Condition=" '$(PaketCommand)' == '' AND '$(OS)' != 'Windows_NT' AND '$(_PaketExeExtension)' == '.exe' ">$(MonoPath) --runtime=v4.0.30319 "$(PaketExePath)"</PaketCommand>
|
||||||
|
<PaketCommand Condition=" '$(PaketCommand)' == '' ">"$(PaketExePath)"</PaketCommand>
|
||||||
|
|
||||||
|
|
||||||
|
<PaketBootStrapperCommand Condition=" '$(OS)' == 'Windows_NT'">"$(PaketBootStrapperExePath)"</PaketBootStrapperCommand>
|
||||||
|
<PaketBootStrapperCommand Condition=" '$(OS)' != 'Windows_NT' ">$(MonoPath) --runtime=v4.0.30319 "$(PaketBootStrapperExePath)"</PaketBootStrapperCommand>
|
||||||
|
|
||||||
|
<!-- Disable automagic references for F# dotnet sdk -->
|
||||||
|
<!-- This will not do anything for other project types -->
|
||||||
|
<!-- see https://github.com/fsharp/fslang-design/blob/master/RFCs/FS-1032-fsharp-in-dotnet-sdk.md -->
|
||||||
|
<DisableImplicitFSharpCoreReference>true</DisableImplicitFSharpCoreReference>
|
||||||
|
<DisableImplicitSystemValueTupleReference>true</DisableImplicitSystemValueTupleReference>
|
||||||
|
|
||||||
|
<!-- Disable Paket restore under NCrunch build -->
|
||||||
|
<PaketRestoreDisabled Condition="'$(NCrunch)' == '1'">True</PaketRestoreDisabled>
|
||||||
|
|
||||||
|
<PaketIntermediateOutputPath Condition=" '$(PaketIntermediateOutputPath)' == '' ">$(BaseIntermediateOutputPath.TrimEnd('\').TrimEnd('\/'))</PaketIntermediateOutputPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<Target Name="PaketBootstrapping" Condition="Exists('$(PaketToolsPath)paket.bootstrapper.proj')">
|
||||||
|
<MSBuild Projects="$(PaketToolsPath)paket.bootstrapper.proj" Targets="Restore" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<!-- Official workaround for https://docs.microsoft.com/en-us/visualstudio/msbuild/getfilehash-task?view=vs-2019 -->
|
||||||
|
<UsingTask TaskName="Microsoft.Build.Tasks.GetFileHash" AssemblyName="Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Condition=" '$(MSBuildSupportsHashing)' == 'true' And '$(DetectedMSBuildVersion)' < '16.0.360' " />
|
||||||
|
<UsingTask TaskName="Microsoft.Build.Tasks.VerifyFileHash" AssemblyName="Microsoft.Build.Tasks.Core, Version=15.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" Condition=" '$(MSBuildSupportsHashing)' == 'true' And '$(DetectedMSBuildVersion)' < '16.0.360' " />
|
||||||
|
<Target Name="PaketRestore" Condition="'$(PaketRestoreDisabled)' != 'True'" BeforeTargets="_GenerateDotnetCliToolReferenceSpecs;_GenerateProjectRestoreGraphPerFramework;_GenerateRestoreGraphWalkPerFramework;CollectPackageReferences" DependsOnTargets="PaketBootstrapping">
|
||||||
|
|
||||||
|
<!-- Step 1 Check if lockfile is properly restored (if the hash of the lockfile and the cache-file match) -->
|
||||||
|
<PropertyGroup>
|
||||||
|
<PaketRestoreRequired>true</PaketRestoreRequired>
|
||||||
|
<NoWarn>$(NoWarn);NU1603;NU1604;NU1605;NU1608</NoWarn>
|
||||||
|
<CacheFilesExist>false</CacheFilesExist>
|
||||||
|
<CacheFilesExist Condition=" Exists('$(PaketRestoreCacheFile)') And Exists('$(PaketLockFilePath)') ">true</CacheFilesExist>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Read the hash of the lockfile -->
|
||||||
|
<GetFileHash Condition=" '$(MSBuildSupportsHashing)' == 'true' And '$(CacheFilesExist)' == 'true' " Files="$(PaketLockFilePath)" Algorithm="SHA256" HashEncoding="hex" >
|
||||||
|
<Output TaskParameter="Hash" PropertyName="PaketRestoreLockFileHash" />
|
||||||
|
</GetFileHash>
|
||||||
|
<!-- Read the hash of the cache, which is json, but a very simple key value object -->
|
||||||
|
<PropertyGroup Condition=" '$(MSBuildSupportsHashing)' == 'true' And '$(CacheFilesExist)' == 'true' ">
|
||||||
|
<PaketRestoreCachedContents>$([System.IO.File]::ReadAllText('$(PaketRestoreCacheFile)'))</PaketRestoreCachedContents>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemGroup Condition=" '$(MSBuildSupportsHashing)' == 'true' And '$(CacheFilesExist)' == 'true' ">
|
||||||
|
<!-- Parse our simple 'paket.restore.cached' json ...-->
|
||||||
|
<PaketRestoreCachedSplitObject Include="$([System.Text.RegularExpressions.Regex]::Split(`$(PaketRestoreCachedContents)`, `{|}|,`))"></PaketRestoreCachedSplitObject>
|
||||||
|
<!-- Keep Key, Value ItemGroup-->
|
||||||
|
<PaketRestoreCachedKeyValue Include="@(PaketRestoreCachedSplitObject)"
|
||||||
|
Condition=" $([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`).Length) > 1 ">
|
||||||
|
<Key>$([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[0].Replace(`"`, ``).Replace(` `, ``))</Key>
|
||||||
|
<Value>$([System.Text.RegularExpressions.Regex]::Split(`%(Identity)`, `": "`)[1].Replace(`"`, ``).Replace(` `, ``))</Value>
|
||||||
|
</PaketRestoreCachedKeyValue>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Condition=" '$(MSBuildSupportsHashing)' == 'true' And '$(CacheFilesExist)' == 'true' ">
|
||||||
|
<!-- Retrieve the hashes we are interested in -->
|
||||||
|
<PackagesDownloadedHash Condition=" '%(PaketRestoreCachedKeyValue.Key)' == 'packagesDownloadedHash' ">%(PaketRestoreCachedKeyValue.Value)</PackagesDownloadedHash>
|
||||||
|
<ProjectsRestoredHash Condition=" '%(PaketRestoreCachedKeyValue.Key)' == 'projectsRestoredHash' ">%(PaketRestoreCachedKeyValue.Value)</ProjectsRestoredHash>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition=" '$(MSBuildSupportsHashing)' == 'true' And '$(CacheFilesExist)' == 'true' ">
|
||||||
|
<!-- If the restire file doesn't exist we need to restore, otherwise only if hashes don't match -->
|
||||||
|
<PaketRestoreRequired>true</PaketRestoreRequired>
|
||||||
|
<PaketRestoreRequired Condition=" '$(PaketRestoreLockFileHash)' == '$(ProjectsRestoredHash)' ">false</PaketRestoreRequired>
|
||||||
|
<PaketRestoreRequired Condition=" '$(PaketRestoreLockFileHash)' == '' ">true</PaketRestoreRequired>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
This value should match the version in the props generated by paket
|
||||||
|
If they differ, this means we need to do a restore in order to ensure correct dependencies
|
||||||
|
-->
|
||||||
|
<PropertyGroup Condition="'$(PaketPropsVersion)' != '5.185.3' ">
|
||||||
|
<PaketRestoreRequired>true</PaketRestoreRequired>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Do a global restore if required -->
|
||||||
|
<Warning Text="This version of MSBuild (we assume '$(DetectedMSBuildVersion)' or older) doesn't support GetFileHash, so paket fast restore is disabled." Condition=" '$(MSBuildSupportsHashing)' != 'true' " />
|
||||||
|
<Error Text="Stop build because of PAKET_ERROR_ON_MSBUILD_EXEC and we always call the bootstrapper" Condition=" '$(PAKET_ERROR_ON_MSBUILD_EXEC)' == 'true' AND '$(PaketBootstrapperStyle)' == 'classic' AND Exists('$(PaketBootStrapperExePath)') AND !(Exists('$(PaketExePath)'))" />
|
||||||
|
<Exec Command='$(PaketBootStrapperCommand)' Condition=" '$(PaketBootstrapperStyle)' == 'classic' AND Exists('$(PaketBootStrapperExePath)') AND !(Exists('$(PaketExePath)'))" ContinueOnError="false" />
|
||||||
|
<Error Text="Stop build because of PAKET_ERROR_ON_MSBUILD_EXEC and we need a full restore (hashes don't match)" Condition=" '$(PAKET_ERROR_ON_MSBUILD_EXEC)' == 'true' AND '$(PaketRestoreRequired)' == 'true' AND '$(PaketDisableGlobalRestore)' != 'true'" />
|
||||||
|
<Exec Command='$(PaketCommand) restore' Condition=" '$(PaketRestoreRequired)' == 'true' AND '$(PaketDisableGlobalRestore)' != 'true' " ContinueOnError="false" />
|
||||||
|
|
||||||
|
<!-- Step 2 Detect project specific changes -->
|
||||||
|
<ItemGroup>
|
||||||
|
<MyTargetFrameworks Condition="'$(TargetFramework)' != '' " Include="$(TargetFramework)"></MyTargetFrameworks>
|
||||||
|
<!-- Don't include all frameworks when msbuild explicitly asks for a single one -->
|
||||||
|
<MyTargetFrameworks Condition="'$(TargetFrameworks)' != '' AND '$(TargetFramework)' == '' " Include="$(TargetFrameworks)"></MyTargetFrameworks>
|
||||||
|
<PaketResolvedFilePaths Include="@(MyTargetFrameworks -> '$(PaketIntermediateOutputPath)\$(MSBuildProjectFile).%(Identity).paket.resolved')"></PaketResolvedFilePaths>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<PaketReferencesCachedFilePath>$(PaketIntermediateOutputPath)\$(MSBuildProjectFile).paket.references.cached</PaketReferencesCachedFilePath>
|
||||||
|
<!-- MyProject.fsproj.paket.references has the highest precedence -->
|
||||||
|
<PaketOriginalReferencesFilePath>$(MSBuildProjectFullPath).paket.references</PaketOriginalReferencesFilePath>
|
||||||
|
<!-- MyProject.paket.references -->
|
||||||
|
<PaketOriginalReferencesFilePath Condition=" !Exists('$(PaketOriginalReferencesFilePath)')">$(MSBuildProjectDirectory)\$(MSBuildProjectName).paket.references</PaketOriginalReferencesFilePath>
|
||||||
|
<!-- paket.references -->
|
||||||
|
<PaketOriginalReferencesFilePath Condition=" !Exists('$(PaketOriginalReferencesFilePath)')">$(MSBuildProjectDirectory)\paket.references</PaketOriginalReferencesFilePath>
|
||||||
|
|
||||||
|
<DoAllResolvedFilesExist>false</DoAllResolvedFilesExist>
|
||||||
|
<DoAllResolvedFilesExist Condition="Exists(%(PaketResolvedFilePaths.Identity))">true</DoAllResolvedFilesExist>
|
||||||
|
<PaketRestoreRequired>true</PaketRestoreRequired>
|
||||||
|
<PaketRestoreRequiredReason>references-file-or-cache-not-found</PaketRestoreRequiredReason>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Step 2 a Detect changes in references file -->
|
||||||
|
<PropertyGroup Condition="Exists('$(PaketOriginalReferencesFilePath)') AND Exists('$(PaketReferencesCachedFilePath)') ">
|
||||||
|
<PaketRestoreCachedHash>$([System.IO.File]::ReadAllText('$(PaketReferencesCachedFilePath)'))</PaketRestoreCachedHash>
|
||||||
|
<PaketRestoreReferencesFileHash>$([System.IO.File]::ReadAllText('$(PaketOriginalReferencesFilePath)'))</PaketRestoreReferencesFileHash>
|
||||||
|
<PaketRestoreRequiredReason>references-file</PaketRestoreRequiredReason>
|
||||||
|
<PaketRestoreRequired Condition=" '$(PaketRestoreReferencesFileHash)' == '$(PaketRestoreCachedHash)' ">false</PaketRestoreRequired>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<PropertyGroup Condition="!Exists('$(PaketOriginalReferencesFilePath)') AND !Exists('$(PaketReferencesCachedFilePath)') ">
|
||||||
|
<!-- If both don't exist there is nothing to do. -->
|
||||||
|
<PaketRestoreRequired>false</PaketRestoreRequired>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Step 2 b detect relevant changes in project file (new targetframework) -->
|
||||||
|
<PropertyGroup Condition=" '$(DoAllResolvedFilesExist)' != 'true' ">
|
||||||
|
<PaketRestoreRequired>true</PaketRestoreRequired>
|
||||||
|
<PaketRestoreRequiredReason>target-framework '$(TargetFramework)' or '$(TargetFrameworks)' files @(PaketResolvedFilePaths)</PaketRestoreRequiredReason>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<!-- Step 3 Restore project specific stuff if required -->
|
||||||
|
<Message Condition=" '$(PaketRestoreRequired)' == 'true' " Importance="low" Text="Detected a change ('$(PaketRestoreRequiredReason)') in the project file '$(MSBuildProjectFullPath)', calling paket restore" />
|
||||||
|
<Error Text="Stop build because of PAKET_ERROR_ON_MSBUILD_EXEC and we detected a change ('$(PaketRestoreRequiredReason)') in the project file '$(MSBuildProjectFullPath)'" Condition=" '$(PAKET_ERROR_ON_MSBUILD_EXEC)' == 'true' AND '$(PaketRestoreRequired)' == 'true' " />
|
||||||
|
<Exec Command='$(PaketCommand) restore --project "$(MSBuildProjectFullPath)" --output-path "$(PaketIntermediateOutputPath)" --target-framework "$(TargetFrameworks)"' Condition=" '$(PaketRestoreRequired)' == 'true' AND '$(TargetFramework)' == '' " ContinueOnError="false" />
|
||||||
|
<Exec Command='$(PaketCommand) restore --project "$(MSBuildProjectFullPath)" --output-path "$(PaketIntermediateOutputPath)" --target-framework "$(TargetFramework)"' Condition=" '$(PaketRestoreRequired)' == 'true' AND '$(TargetFramework)' != '' " ContinueOnError="false" />
|
||||||
|
|
||||||
|
<!-- This shouldn't actually happen, but just to be sure. -->
|
||||||
|
<PropertyGroup>
|
||||||
|
<DoAllResolvedFilesExist>false</DoAllResolvedFilesExist>
|
||||||
|
<DoAllResolvedFilesExist Condition="Exists(%(PaketResolvedFilePaths.Identity))">true</DoAllResolvedFilesExist>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition=" '$(DoAllResolvedFilesExist)' != 'true' AND '$(ResolveNuGetPackages)' != 'False' " Text="One Paket file '@(PaketResolvedFilePaths)' is missing while restoring $(MSBuildProjectFile). Please delete 'paket-files/paket.restore.cached' and call 'paket restore'." />
|
||||||
|
|
||||||
|
<!-- Step 4 forward all msbuild properties (PackageReference, DotNetCliToolReference) to msbuild -->
|
||||||
|
<ReadLinesFromFile Condition="($(DesignTimeBuild) != true OR '$(PaketPropsLoaded)' != 'true') AND '@(PaketResolvedFilePaths)' != ''" File="%(PaketResolvedFilePaths.Identity)" >
|
||||||
|
<Output TaskParameter="Lines" ItemName="PaketReferencesFileLines"/>
|
||||||
|
</ReadLinesFromFile>
|
||||||
|
|
||||||
|
<ItemGroup Condition="($(DesignTimeBuild) != true OR '$(PaketPropsLoaded)' != 'true') AND '@(PaketReferencesFileLines)' != '' " >
|
||||||
|
<PaketReferencesFileLinesInfo Include="@(PaketReferencesFileLines)" >
|
||||||
|
<Splits>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',').Length)</Splits>
|
||||||
|
<PackageName>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[0])</PackageName>
|
||||||
|
<PackageVersion>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[1])</PackageVersion>
|
||||||
|
<AllPrivateAssets>$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[4])</AllPrivateAssets>
|
||||||
|
<CopyLocal Condition="'$(Splits)' == '6'">$([System.String]::Copy('%(PaketReferencesFileLines.Identity)').Split(',')[5])</CopyLocal>
|
||||||
|
</PaketReferencesFileLinesInfo>
|
||||||
|
<PackageReference Include="%(PaketReferencesFileLinesInfo.PackageName)">
|
||||||
|
<Version>%(PaketReferencesFileLinesInfo.PackageVersion)</Version>
|
||||||
|
<PrivateAssets Condition=" ('%(PaketReferencesFileLinesInfo.AllPrivateAssets)' == 'true') Or ('$(PackAsTool)' == 'true') ">All</PrivateAssets>
|
||||||
|
<ExcludeAssets Condition=" '%(PaketReferencesFileLinesInfo.Splits)' == '6' And %(PaketReferencesFileLinesInfo.CopyLocal) == 'false'">runtime</ExcludeAssets>
|
||||||
|
<ExcludeAssets Condition=" '%(PaketReferencesFileLinesInfo.Splits)' != '6' And %(PaketReferencesFileLinesInfo.AllPrivateAssets) == 'exclude'">runtime</ExcludeAssets>
|
||||||
|
<Publish Condition=" '$(PackAsTool)' == 'true' ">true</Publish>
|
||||||
|
<AllowExplicitVersion>true</AllowExplicitVersion>
|
||||||
|
</PackageReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<PaketCliToolFilePath>$(PaketIntermediateOutputPath)/$(MSBuildProjectFile).paket.clitools</PaketCliToolFilePath>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ReadLinesFromFile File="$(PaketCliToolFilePath)" >
|
||||||
|
<Output TaskParameter="Lines" ItemName="PaketCliToolFileLines"/>
|
||||||
|
</ReadLinesFromFile>
|
||||||
|
|
||||||
|
<ItemGroup Condition=" '@(PaketCliToolFileLines)' != '' " >
|
||||||
|
<PaketCliToolFileLinesInfo Include="@(PaketCliToolFileLines)" >
|
||||||
|
<PackageName>$([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[0])</PackageName>
|
||||||
|
<PackageVersion>$([System.String]::Copy('%(PaketCliToolFileLines.Identity)').Split(',')[1])</PackageVersion>
|
||||||
|
</PaketCliToolFileLinesInfo>
|
||||||
|
<DotNetCliToolReference Include="%(PaketCliToolFileLinesInfo.PackageName)">
|
||||||
|
<Version>%(PaketCliToolFileLinesInfo.PackageVersion)</Version>
|
||||||
|
</DotNetCliToolReference>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<!-- Disabled for now until we know what to do with runtime deps - https://github.com/fsprojects/Paket/issues/2964
|
||||||
|
<PropertyGroup>
|
||||||
|
<RestoreConfigFile>$(PaketIntermediateOutputPath)/$(MSBuildProjectFile).NuGet.Config</RestoreConfigFile>
|
||||||
|
</PropertyGroup> -->
|
||||||
|
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="PaketDisableDirectPack" AfterTargets="_IntermediatePack" BeforeTargets="GenerateNuspec" Condition="('$(IsPackable)' == '' Or '$(IsPackable)' == 'true') And Exists('$(PaketIntermediateOutputPath)/$(MSBuildProjectFile).references')" >
|
||||||
|
<PropertyGroup>
|
||||||
|
<ContinuePackingAfterGeneratingNuspec>false</ContinuePackingAfterGeneratingNuspec>
|
||||||
|
</PropertyGroup>
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
<Target Name="PaketOverrideNuspec" AfterTargets="GenerateNuspec" Condition="('$(IsPackable)' == '' Or '$(IsPackable)' == 'true') And Exists('$(PaketIntermediateOutputPath)/$(MSBuildProjectFile).references')" >
|
||||||
|
<ItemGroup>
|
||||||
|
<_NuspecFilesNewLocation Include="$(PaketIntermediateOutputPath)\$(Configuration)\*.nuspec"/>
|
||||||
|
<MSBuildMajorVersion Include="$(DetectedMSBuildVersion.Replace(`-`, `.`).Split(`.`)[0])" />
|
||||||
|
<MSBuildMinorVersion Include="$(DetectedMSBuildVersion.Replace(`-`, `.`).Split(`.`)[1])" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<PaketProjectFile>$(MSBuildProjectDirectory)/$(MSBuildProjectFile)</PaketProjectFile>
|
||||||
|
<ContinuePackingAfterGeneratingNuspec>true</ContinuePackingAfterGeneratingNuspec>
|
||||||
|
<UseMSBuild16_0_Pack>false</UseMSBuild16_0_Pack>
|
||||||
|
<UseMSBuild16_0_Pack Condition=" '@(MSBuildMajorVersion)' >= '16' ">true</UseMSBuild16_0_Pack>
|
||||||
|
<UseMSBuild15_9_Pack>false</UseMSBuild15_9_Pack>
|
||||||
|
<UseMSBuild15_9_Pack Condition=" '@(MSBuildMajorVersion)' == '15' AND '@(MSBuildMinorVersion)' > '8' ">true</UseMSBuild15_9_Pack>
|
||||||
|
<UseMSBuild15_8_Pack>false</UseMSBuild15_8_Pack>
|
||||||
|
<UseMSBuild15_8_Pack Condition=" '$(NuGetToolVersion)' != '4.0.0' AND (! $(UseMSBuild15_9_Pack)) AND (! $(UseMSBuild16_0_Pack)) ">true</UseMSBuild15_8_Pack>
|
||||||
|
<UseNuGet4_Pack>false</UseNuGet4_Pack>
|
||||||
|
<UseNuGet4_Pack Condition=" (! $(UseMSBuild15_8_Pack)) AND (! $(UseMSBuild15_9_Pack)) AND (! $(UseMSBuild16_0_Pack)) ">true</UseNuGet4_Pack>
|
||||||
|
<AdjustedNuspecOutputPath>$(PaketIntermediateOutputPath)\$(Configuration)</AdjustedNuspecOutputPath>
|
||||||
|
<AdjustedNuspecOutputPath Condition="@(_NuspecFilesNewLocation) == ''">$(PaketIntermediateOutputPath)</AdjustedNuspecOutputPath>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<_NuspecFiles Include="$(AdjustedNuspecOutputPath)\*.$(PackageVersion.Split(`+`)[0]).nuspec"/>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<Error Text="Error Because of PAKET_ERROR_ON_MSBUILD_EXEC (not calling fix-nuspecs)" Condition=" '$(PAKET_ERROR_ON_MSBUILD_EXEC)' == 'true' " />
|
||||||
|
<Exec Condition="@(_NuspecFiles) != ''" Command='$(PaketCommand) fix-nuspecs files "@(_NuspecFiles)" project-file "$(PaketProjectFile)" ' />
|
||||||
|
<Error Condition="@(_NuspecFiles) == ''" Text='Could not find nuspec files in "$(AdjustedNuspecOutputPath)" (Version: "$(PackageVersion)"), therefore we cannot call "paket fix-nuspecs" and have to error out!' />
|
||||||
|
|
||||||
|
<ConvertToAbsolutePath Condition="@(_NuspecFiles) != ''" Paths="@(_NuspecFiles)">
|
||||||
|
<Output TaskParameter="AbsolutePaths" PropertyName="NuspecFileAbsolutePath" />
|
||||||
|
</ConvertToAbsolutePath>
|
||||||
|
|
||||||
|
<!-- Call Pack -->
|
||||||
|
<PackTask Condition="$(UseMSBuild16_0_Pack)"
|
||||||
|
PackItem="$(PackProjectInputFile)"
|
||||||
|
PackageFiles="@(_PackageFiles)"
|
||||||
|
PackageFilesToExclude="@(_PackageFilesToExclude)"
|
||||||
|
PackageVersion="$(PackageVersion)"
|
||||||
|
PackageId="$(PackageId)"
|
||||||
|
Title="$(Title)"
|
||||||
|
Authors="$(Authors)"
|
||||||
|
Description="$(Description)"
|
||||||
|
Copyright="$(Copyright)"
|
||||||
|
RequireLicenseAcceptance="$(PackageRequireLicenseAcceptance)"
|
||||||
|
LicenseUrl="$(PackageLicenseUrl)"
|
||||||
|
ProjectUrl="$(PackageProjectUrl)"
|
||||||
|
IconUrl="$(PackageIconUrl)"
|
||||||
|
ReleaseNotes="$(PackageReleaseNotes)"
|
||||||
|
Tags="$(PackageTags)"
|
||||||
|
DevelopmentDependency="$(DevelopmentDependency)"
|
||||||
|
BuildOutputInPackage="@(_BuildOutputInPackage)"
|
||||||
|
TargetPathsToSymbols="@(_TargetPathsToSymbols)"
|
||||||
|
SymbolPackageFormat="symbols.nupkg"
|
||||||
|
TargetFrameworks="@(_TargetFrameworks)"
|
||||||
|
AssemblyName="$(AssemblyName)"
|
||||||
|
PackageOutputPath="$(PackageOutputAbsolutePath)"
|
||||||
|
IncludeSymbols="$(IncludeSymbols)"
|
||||||
|
IncludeSource="$(IncludeSource)"
|
||||||
|
PackageTypes="$(PackageType)"
|
||||||
|
IsTool="$(IsTool)"
|
||||||
|
RepositoryUrl="$(RepositoryUrl)"
|
||||||
|
RepositoryType="$(RepositoryType)"
|
||||||
|
SourceFiles="@(_SourceFiles->Distinct())"
|
||||||
|
NoPackageAnalysis="$(NoPackageAnalysis)"
|
||||||
|
MinClientVersion="$(MinClientVersion)"
|
||||||
|
Serviceable="$(Serviceable)"
|
||||||
|
FrameworkAssemblyReferences="@(_FrameworkAssemblyReferences)"
|
||||||
|
ContinuePackingAfterGeneratingNuspec="$(ContinuePackingAfterGeneratingNuspec)"
|
||||||
|
NuspecOutputPath="$(AdjustedNuspecOutputPath)"
|
||||||
|
IncludeBuildOutput="$(IncludeBuildOutput)"
|
||||||
|
BuildOutputFolders="$(BuildOutputTargetFolder)"
|
||||||
|
ContentTargetFolders="$(ContentTargetFolders)"
|
||||||
|
RestoreOutputPath="$(RestoreOutputAbsolutePath)"
|
||||||
|
NuspecFile="$(NuspecFileAbsolutePath)"
|
||||||
|
NuspecBasePath="$(NuspecBasePath)"
|
||||||
|
NuspecProperties="$(NuspecProperties)"
|
||||||
|
PackageLicenseFile="$(PackageLicenseFile)"
|
||||||
|
PackageLicenseExpression="$(PackageLicenseExpression)"
|
||||||
|
PackageLicenseExpressionVersion="$(PackageLicenseExpressionVersion)" />
|
||||||
|
|
||||||
|
<PackTask Condition="$(UseMSBuild15_9_Pack)"
|
||||||
|
PackItem="$(PackProjectInputFile)"
|
||||||
|
PackageFiles="@(_PackageFiles)"
|
||||||
|
PackageFilesToExclude="@(_PackageFilesToExclude)"
|
||||||
|
PackageVersion="$(PackageVersion)"
|
||||||
|
PackageId="$(PackageId)"
|
||||||
|
Title="$(Title)"
|
||||||
|
Authors="$(Authors)"
|
||||||
|
Description="$(Description)"
|
||||||
|
Copyright="$(Copyright)"
|
||||||
|
RequireLicenseAcceptance="$(PackageRequireLicenseAcceptance)"
|
||||||
|
LicenseUrl="$(PackageLicenseUrl)"
|
||||||
|
ProjectUrl="$(PackageProjectUrl)"
|
||||||
|
IconUrl="$(PackageIconUrl)"
|
||||||
|
ReleaseNotes="$(PackageReleaseNotes)"
|
||||||
|
Tags="$(PackageTags)"
|
||||||
|
DevelopmentDependency="$(DevelopmentDependency)"
|
||||||
|
BuildOutputInPackage="@(_BuildOutputInPackage)"
|
||||||
|
TargetPathsToSymbols="@(_TargetPathsToSymbols)"
|
||||||
|
SymbolPackageFormat="symbols.nupkg"
|
||||||
|
TargetFrameworks="@(_TargetFrameworks)"
|
||||||
|
AssemblyName="$(AssemblyName)"
|
||||||
|
PackageOutputPath="$(PackageOutputAbsolutePath)"
|
||||||
|
IncludeSymbols="$(IncludeSymbols)"
|
||||||
|
IncludeSource="$(IncludeSource)"
|
||||||
|
PackageTypes="$(PackageType)"
|
||||||
|
IsTool="$(IsTool)"
|
||||||
|
RepositoryUrl="$(RepositoryUrl)"
|
||||||
|
RepositoryType="$(RepositoryType)"
|
||||||
|
SourceFiles="@(_SourceFiles->Distinct())"
|
||||||
|
NoPackageAnalysis="$(NoPackageAnalysis)"
|
||||||
|
MinClientVersion="$(MinClientVersion)"
|
||||||
|
Serviceable="$(Serviceable)"
|
||||||
|
FrameworkAssemblyReferences="@(_FrameworkAssemblyReferences)"
|
||||||
|
ContinuePackingAfterGeneratingNuspec="$(ContinuePackingAfterGeneratingNuspec)"
|
||||||
|
NuspecOutputPath="$(AdjustedNuspecOutputPath)"
|
||||||
|
IncludeBuildOutput="$(IncludeBuildOutput)"
|
||||||
|
BuildOutputFolder="$(BuildOutputTargetFolder)"
|
||||||
|
ContentTargetFolders="$(ContentTargetFolders)"
|
||||||
|
RestoreOutputPath="$(RestoreOutputAbsolutePath)"
|
||||||
|
NuspecFile="$(NuspecFileAbsolutePath)"
|
||||||
|
NuspecBasePath="$(NuspecBasePath)"
|
||||||
|
NuspecProperties="$(NuspecProperties)"/>
|
||||||
|
|
||||||
|
<PackTask Condition="$(UseMSBuild15_8_Pack)"
|
||||||
|
PackItem="$(PackProjectInputFile)"
|
||||||
|
PackageFiles="@(_PackageFiles)"
|
||||||
|
PackageFilesToExclude="@(_PackageFilesToExclude)"
|
||||||
|
PackageVersion="$(PackageVersion)"
|
||||||
|
PackageId="$(PackageId)"
|
||||||
|
Title="$(Title)"
|
||||||
|
Authors="$(Authors)"
|
||||||
|
Description="$(Description)"
|
||||||
|
Copyright="$(Copyright)"
|
||||||
|
RequireLicenseAcceptance="$(PackageRequireLicenseAcceptance)"
|
||||||
|
LicenseUrl="$(PackageLicenseUrl)"
|
||||||
|
ProjectUrl="$(PackageProjectUrl)"
|
||||||
|
IconUrl="$(PackageIconUrl)"
|
||||||
|
ReleaseNotes="$(PackageReleaseNotes)"
|
||||||
|
Tags="$(PackageTags)"
|
||||||
|
DevelopmentDependency="$(DevelopmentDependency)"
|
||||||
|
BuildOutputInPackage="@(_BuildOutputInPackage)"
|
||||||
|
TargetPathsToSymbols="@(_TargetPathsToSymbols)"
|
||||||
|
TargetFrameworks="@(_TargetFrameworks)"
|
||||||
|
AssemblyName="$(AssemblyName)"
|
||||||
|
PackageOutputPath="$(PackageOutputAbsolutePath)"
|
||||||
|
IncludeSymbols="$(IncludeSymbols)"
|
||||||
|
IncludeSource="$(IncludeSource)"
|
||||||
|
PackageTypes="$(PackageType)"
|
||||||
|
IsTool="$(IsTool)"
|
||||||
|
RepositoryUrl="$(RepositoryUrl)"
|
||||||
|
RepositoryType="$(RepositoryType)"
|
||||||
|
SourceFiles="@(_SourceFiles->Distinct())"
|
||||||
|
NoPackageAnalysis="$(NoPackageAnalysis)"
|
||||||
|
MinClientVersion="$(MinClientVersion)"
|
||||||
|
Serviceable="$(Serviceable)"
|
||||||
|
FrameworkAssemblyReferences="@(_FrameworkAssemblyReferences)"
|
||||||
|
ContinuePackingAfterGeneratingNuspec="$(ContinuePackingAfterGeneratingNuspec)"
|
||||||
|
NuspecOutputPath="$(AdjustedNuspecOutputPath)"
|
||||||
|
IncludeBuildOutput="$(IncludeBuildOutput)"
|
||||||
|
BuildOutputFolder="$(BuildOutputTargetFolder)"
|
||||||
|
ContentTargetFolders="$(ContentTargetFolders)"
|
||||||
|
RestoreOutputPath="$(RestoreOutputAbsolutePath)"
|
||||||
|
NuspecFile="$(NuspecFileAbsolutePath)"
|
||||||
|
NuspecBasePath="$(NuspecBasePath)"
|
||||||
|
NuspecProperties="$(NuspecProperties)"/>
|
||||||
|
|
||||||
|
<PackTask Condition="$(UseNuGet4_Pack)"
|
||||||
|
PackItem="$(PackProjectInputFile)"
|
||||||
|
PackageFiles="@(_PackageFiles)"
|
||||||
|
PackageFilesToExclude="@(_PackageFilesToExclude)"
|
||||||
|
PackageVersion="$(PackageVersion)"
|
||||||
|
PackageId="$(PackageId)"
|
||||||
|
Title="$(Title)"
|
||||||
|
Authors="$(Authors)"
|
||||||
|
Description="$(Description)"
|
||||||
|
Copyright="$(Copyright)"
|
||||||
|
RequireLicenseAcceptance="$(PackageRequireLicenseAcceptance)"
|
||||||
|
LicenseUrl="$(PackageLicenseUrl)"
|
||||||
|
ProjectUrl="$(PackageProjectUrl)"
|
||||||
|
IconUrl="$(PackageIconUrl)"
|
||||||
|
ReleaseNotes="$(PackageReleaseNotes)"
|
||||||
|
Tags="$(PackageTags)"
|
||||||
|
TargetPathsToAssemblies="@(_TargetPathsToAssemblies->'%(FinalOutputPath)')"
|
||||||
|
TargetPathsToSymbols="@(_TargetPathsToSymbols)"
|
||||||
|
TargetFrameworks="@(_TargetFrameworks)"
|
||||||
|
AssemblyName="$(AssemblyName)"
|
||||||
|
PackageOutputPath="$(PackageOutputAbsolutePath)"
|
||||||
|
IncludeSymbols="$(IncludeSymbols)"
|
||||||
|
IncludeSource="$(IncludeSource)"
|
||||||
|
PackageTypes="$(PackageType)"
|
||||||
|
IsTool="$(IsTool)"
|
||||||
|
RepositoryUrl="$(RepositoryUrl)"
|
||||||
|
RepositoryType="$(RepositoryType)"
|
||||||
|
SourceFiles="@(_SourceFiles->Distinct())"
|
||||||
|
NoPackageAnalysis="$(NoPackageAnalysis)"
|
||||||
|
MinClientVersion="$(MinClientVersion)"
|
||||||
|
Serviceable="$(Serviceable)"
|
||||||
|
AssemblyReferences="@(_References)"
|
||||||
|
ContinuePackingAfterGeneratingNuspec="$(ContinuePackingAfterGeneratingNuspec)"
|
||||||
|
NuspecOutputPath="$(AdjustedNuspecOutputPath)"
|
||||||
|
IncludeBuildOutput="$(IncludeBuildOutput)"
|
||||||
|
BuildOutputFolder="$(BuildOutputTargetFolder)"
|
||||||
|
ContentTargetFolders="$(ContentTargetFolders)"
|
||||||
|
RestoreOutputPath="$(RestoreOutputAbsolutePath)"
|
||||||
|
NuspecFile="$(NuspecFileAbsolutePath)"
|
||||||
|
NuspecBasePath="$(NuspecBasePath)"
|
||||||
|
NuspecProperties="$(NuspecProperties)"/>
|
||||||
|
</Target>
|
||||||
|
<!--/+:cnd:noEmit-->
|
||||||
|
</Project>
|
|
@ -1,20 +1,14 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>Exe</OutputType>
|
<OutputType>Exe</OutputType>
|
||||||
<TargetFramework>netcoreapp2.0</TargetFramework>
|
<TargetFramework>netcoreapp2.2</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Program.fs" />
|
<Compile Include="Program.fs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<PackageReference Include="Expecto" Version="5.1.0" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ProjectReference Include="..\FunctionalCuid\FunctionalCuid.fsproj" />
|
<ProjectReference Include="..\FunctionalCuid\FunctionalCuid.fsproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<Import Project="..\.paket\Paket.Restore.targets" />
|
||||||
</Project>
|
</Project>
|
|
@ -1,17 +1,128 @@
|
||||||
|
|
||||||
|
open Cuid
|
||||||
open Expecto
|
open Expecto
|
||||||
|
|
||||||
// these tests are bad, and I should feel bad...
|
module CuidTests =
|
||||||
let tests =
|
|
||||||
testList "Smoke Tests" [
|
[<Tests>]
|
||||||
test "Generate a CUID" {
|
let generateTests =
|
||||||
Cuid.cuid () |> ignore
|
testList "Cuid.generate" [
|
||||||
|
test "succeeds" {
|
||||||
|
let (Cuid cuid) = Cuid.generate ()
|
||||||
|
Expect.stringHasLength cuid 25 "A CUID should be 25 characters"
|
||||||
|
Expect.stringStarts cuid "c" """A CUID should start with a "c" character"""
|
||||||
}
|
}
|
||||||
test "Generate a slug" {
|
]
|
||||||
Cuid.slug () |> ignore
|
|
||||||
|
[<Tests>]
|
||||||
|
let fromStringTests =
|
||||||
|
testList "Cuid.fromString" [
|
||||||
|
test "fails when string is null" {
|
||||||
|
let x = Cuid.fromString null
|
||||||
|
Expect.isError x "Parsing should have returned an error"
|
||||||
|
let msg = match x with Error y -> y | _ -> ""
|
||||||
|
Expect.equal msg "string was null" "Expected error message not returned"
|
||||||
|
}
|
||||||
|
test "fails when string is not 25 characters" {
|
||||||
|
let x = Cuid.fromString "c12345566677893508"
|
||||||
|
Expect.isError x "Parsing should have returned an error"
|
||||||
|
let msg = match x with Error y -> y | _ -> ""
|
||||||
|
Expect.equal msg "string was not 25 characters (length 18)" "Expected error message not returned"
|
||||||
|
}
|
||||||
|
test "fails when string does not start with c" {
|
||||||
|
let x = Cuid.fromString "djld2cyuq0000t3rmniod1foy"
|
||||||
|
Expect.isError x "Parsing should have returned an error"
|
||||||
|
let msg = match x with Error y -> y | _ -> ""
|
||||||
|
Expect.equal msg """string did not start with "c" ("djld2cyuq0000t3rmniod1foy")"""
|
||||||
|
"Expected error message not returned"
|
||||||
|
}
|
||||||
|
test "succeeds" {
|
||||||
|
let x = Cuid.fromString "cjld2cyuq0000t3rmniod1foy"
|
||||||
|
Expect.isOk x "Parsing should have returned Ok"
|
||||||
|
let cuid = match x with Ok y -> y | _ -> Cuid ""
|
||||||
|
Expect.equal cuid (Cuid "cjld2cyuq0000t3rmniod1foy") "CUID value not correct"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
[<Tests>]
|
||||||
|
let toStringTests =
|
||||||
|
testList "Cuid.toString" [
|
||||||
|
test "succeeds" {
|
||||||
|
let cuidString = (Cuid >> Cuid.toString) "abc123"
|
||||||
|
Expect.equal cuidString "abc123" "The CUID string should have been the string value of the CUID"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
[<Tests>]
|
||||||
|
let generateStringTests =
|
||||||
|
testList "Cuid.generateString" [
|
||||||
|
test "succeeds" {
|
||||||
|
let cuidString = Cuid.generateString ()
|
||||||
|
Expect.stringHasLength cuidString 25 "A CUID string should be 25 characters"
|
||||||
|
Expect.stringStarts cuidString "c" """A CUID string should start with a "c" character"""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
module SlugTests =
|
||||||
|
|
||||||
|
let isProperLength (x : string) = x.Length >= 7 && x.Length <= 10
|
||||||
|
|
||||||
|
[<Tests>]
|
||||||
|
let generateTests =
|
||||||
|
testList "Slug.generate" [
|
||||||
|
test "succeeds" {
|
||||||
|
let (Slug slug) = Slug.generate ()
|
||||||
|
Expect.isTrue (isProperLength slug) "A Slug should be between 7 to 10 characters"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
[<Tests>]
|
||||||
|
let fromStringTests =
|
||||||
|
testList "Slug.fromString" [
|
||||||
|
test "fails when string is null" {
|
||||||
|
let x = Slug.fromString null
|
||||||
|
Expect.isError x "Parsing should have returned an error"
|
||||||
|
let msg = match x with Error y -> y | _ -> ""
|
||||||
|
Expect.equal msg "string was null" "Expected error message not returned"
|
||||||
|
}
|
||||||
|
test "fails when string is less than 7 characters" {
|
||||||
|
let x = Slug.fromString "12345"
|
||||||
|
Expect.isError x "Parsing should have returned an error"
|
||||||
|
let msg = match x with Error y -> y | _ -> ""
|
||||||
|
Expect.equal msg "string must be at least 7 characters (length 5)" "Expected error message not returned"
|
||||||
|
}
|
||||||
|
test "fails when string is more than 10 characters" {
|
||||||
|
let x = Slug.fromString "abcdefghijklmnop"
|
||||||
|
Expect.isError x "Parsing should have returned an error"
|
||||||
|
let msg = match x with Error y -> y | _ -> ""
|
||||||
|
Expect.equal msg "string must not exceed 10 characters (length 16)" "Expected error message not returned"
|
||||||
|
}
|
||||||
|
test "succeeds" {
|
||||||
|
let x = Slug.fromString "cyuq0000t"
|
||||||
|
Expect.isOk x "Parsing should have returned Ok"
|
||||||
|
let slug = match x with Ok y -> y | _ -> Slug ""
|
||||||
|
Expect.equal slug (Slug "cyuq0000t") "Slug value not correct"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
[<Tests>]
|
||||||
|
let toStringTests =
|
||||||
|
testList "Slug.toString" [
|
||||||
|
test "Create a string from a Slug" {
|
||||||
|
let slugString = (Slug >> Slug.toString) "5551234"
|
||||||
|
Expect.equal slugString "5551234" "The Slug string should have been the string value of the Slug"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
[<Tests>]
|
||||||
|
let generateStringTests =
|
||||||
|
testList "Slug.generateString" [
|
||||||
|
test "succeeds" {
|
||||||
|
let slugString = Slug.generateString ()
|
||||||
|
Expect.isTrue (isProperLength slugString) "A Slug string should be between 7 to 10 characaters"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
[<EntryPoint>]
|
[<EntryPoint>]
|
||||||
let main argv =
|
let main argv =
|
||||||
runTestsWithArgs defaultConfig argv tests
|
runTestsInAssembly defaultConfig argv
|
||||||
|
|
1
FunctionalCuid.Tests/paket.references
Normal file
1
FunctionalCuid.Tests/paket.references
Normal file
|
@ -0,0 +1 @@
|
||||||
|
Expecto
|
37
FunctionalCuid.sln
Normal file
37
FunctionalCuid.sln
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 16
|
||||||
|
VisualStudioVersion = 16.0.29123.88
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FunctionalCuid", "FunctionalCuid\FunctionalCuid.fsproj", "{9F049644-0C15-42B2-ABEA-5C0320C1912C}"
|
||||||
|
EndProject
|
||||||
|
Project("{6EC3EE1D-3C4E-46DD-8F32-0CC8E7565705}") = "FunctionalCuid.Tests", "FunctionalCuid.Tests\FunctionalCuid.Tests.fsproj", "{8757631C-2329-484F-BA2F-2ECF12135E18}"
|
||||||
|
EndProject
|
||||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5E45DBE7-484A-4489-BAF4-FD48EB49ADF0}"
|
||||||
|
ProjectSection(SolutionItems) = preProject
|
||||||
|
paket.dependencies = paket.dependencies
|
||||||
|
README.md = README.md
|
||||||
|
EndProjectSection
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{9F049644-0C15-42B2-ABEA-5C0320C1912C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{9F049644-0C15-42B2-ABEA-5C0320C1912C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{9F049644-0C15-42B2-ABEA-5C0320C1912C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{9F049644-0C15-42B2-ABEA-5C0320C1912C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{8757631C-2329-484F-BA2F-2ECF12135E18}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{8757631C-2329-484F-BA2F-2ECF12135E18}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{8757631C-2329-484F-BA2F-2ECF12135E18}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{8757631C-2329-484F-BA2F-2ECF12135E18}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {BA72E07F-F06D-48E0-BC4E-179EA9911226}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
|
@ -1,11 +1,10 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netstandard2.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Library.fs" />
|
<Compile Include="Library.fs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<Import Project="..\.paket\Paket.Restore.targets" />
|
||||||
</Project>
|
</Project>
|
|
@ -1,6 +1,4 @@
|
||||||
module Cuid
|
namespace Cuid
|
||||||
|
|
||||||
open System
|
|
||||||
|
|
||||||
(*
|
(*
|
||||||
Functional CUID
|
Functional CUID
|
||||||
|
@ -10,20 +8,41 @@ open System
|
||||||
MIT License
|
MIT License
|
||||||
*)
|
*)
|
||||||
|
|
||||||
|
/// A Collision-resistant Unique IDentifier
|
||||||
|
type Cuid = Cuid of string
|
||||||
|
|
||||||
|
|
||||||
|
/// A shortened version of the Collision-resistant Unique IDentifier
|
||||||
|
type Slug = Slug of string
|
||||||
|
|
||||||
|
|
||||||
|
/// Functions to support CUID / slug generation
|
||||||
[<AutoOpen>]
|
[<AutoOpen>]
|
||||||
module private Support =
|
module private Support =
|
||||||
|
|
||||||
|
open System
|
||||||
|
|
||||||
|
/// The default block size used for the portion of a CUID
|
||||||
let blockSize = 4
|
let blockSize = 4
|
||||||
|
|
||||||
|
/// The character set of the base representation
|
||||||
let baseSize = 36UL
|
let baseSize = 36UL
|
||||||
|
|
||||||
|
/// The number of discrete values that can occur in a block
|
||||||
let discreteValues = pown baseSize blockSize
|
let discreteValues = pown baseSize blockSize
|
||||||
|
|
||||||
|
/// Left-pad a value with zeroes to make it a given size
|
||||||
let pad size num =
|
let pad size num =
|
||||||
let s = sprintf "000000000%s" num
|
let s = sprintf "000000000%s" num
|
||||||
s.Substring(s.Length - size)
|
s.Substring(s.Length - size)
|
||||||
|
|
||||||
|
/// Left-pad a value to the default block size
|
||||||
let padToSize = pad blockSize
|
let padToSize = pad blockSize
|
||||||
|
|
||||||
|
/// The character set available for a CUID
|
||||||
let base36Chars = "0123456789abcdefghijklmnopqrstuvwxyz"
|
let base36Chars = "0123456789abcdefghijklmnopqrstuvwxyz"
|
||||||
|
|
||||||
|
/// Convert a number to its base-36 representation
|
||||||
let toBase36 nbr =
|
let toBase36 nbr =
|
||||||
let rec convert nbr current =
|
let rec convert nbr current =
|
||||||
match nbr with
|
match nbr with
|
||||||
|
@ -32,29 +51,45 @@ module private Support =
|
||||||
| _ -> convert (nbr / baseSize) (sprintf "%c%s" base36Chars.[int (nbr % baseSize)] current)
|
| _ -> convert (nbr / baseSize) (sprintf "%c%s" base36Chars.[int (nbr % baseSize)] current)
|
||||||
convert nbr ""
|
convert nbr ""
|
||||||
|
|
||||||
|
/// Is a string in a base-36 representation?
|
||||||
|
let isBase36 (x : string) =
|
||||||
|
let rec check idx =
|
||||||
|
match idx with
|
||||||
|
| _ when idx = x.Length -> true
|
||||||
|
| _ ->
|
||||||
|
match (string >> base36Chars.Contains) x.[idx] with
|
||||||
|
| true -> check (idx + 1)
|
||||||
|
| false -> false
|
||||||
|
check 0
|
||||||
|
|
||||||
|
/// Left-pad a base-36 number to the default block size
|
||||||
let padBase36 = toBase36 >> padToSize
|
let padBase36 = toBase36 >> padToSize
|
||||||
|
|
||||||
|
/// A pseudo-random number generator instance
|
||||||
let rnd = Random ()
|
let rnd = Random ()
|
||||||
|
|
||||||
let randomBlock () =
|
/// Create a block of random base-36
|
||||||
(uint64 >> padBase36) (rnd.NextDouble () * float discreteValues)
|
let randomBlock () = rnd.NextDouble () * float discreteValues |> (uint64 >> padBase36)
|
||||||
|
|
||||||
|
/// Counter for the monotonically-increasing counter portion of the CUID
|
||||||
let mutable c = 0UL
|
let mutable c = 0UL
|
||||||
|
|
||||||
|
/// Increment the counter, handling roll-over, and return the previous value
|
||||||
let safeCounter () =
|
let safeCounter () =
|
||||||
c <- if c < discreteValues then c else 0UL
|
c <- if c < discreteValues then c else 0UL
|
||||||
c <- c + 1UL
|
c <- c + 1UL
|
||||||
c - 1UL
|
c - 1UL
|
||||||
|
|
||||||
|
/// The Unix epoch value
|
||||||
let epoch = DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
|
let epoch = DateTime (1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)
|
||||||
|
|
||||||
let timestampNow () =
|
/// The timestamp portion of the CUID
|
||||||
(uint64 >> toBase36) (DateTime.Now - epoch).TotalMilliseconds
|
let timestampNow () = (DateTime.Now - epoch).TotalMilliseconds |> (uint64 >> toBase36)
|
||||||
|
|
||||||
let hostname =
|
/// The host name, or a random string if it cannot be obtained
|
||||||
try Environment.MachineName
|
let hostname = try Environment.MachineName with _ -> string (Random().Next ())
|
||||||
with _ -> string (Random().Next ())
|
|
||||||
|
|
||||||
|
/// The fingerprint (a block made up of 2 characters each from the process ID and hostname)
|
||||||
let fingerprint () =
|
let fingerprint () =
|
||||||
let padTo2 = uint64 >> toBase36 >> pad 2
|
let padTo2 = uint64 >> toBase36 >> pad 2
|
||||||
[ Diagnostics.Process.GetCurrentProcess().Id |> padTo2
|
[ Diagnostics.Process.GetCurrentProcess().Id |> padTo2
|
||||||
|
@ -62,22 +97,27 @@ module private Support =
|
||||||
]
|
]
|
||||||
|> List.reduce (+)
|
|> List.reduce (+)
|
||||||
|
|
||||||
|
/// Obtain the given number of characters from the right of a string
|
||||||
let rightChars chars (str : string) =
|
let rightChars chars (str : string) =
|
||||||
match chars with
|
match chars with
|
||||||
| _ when chars > str.Length -> str
|
| _ when chars > str.Length -> str
|
||||||
| _ -> str.[str.Length - chars..]
|
| _ -> str.[str.Length - chars..]
|
||||||
|
|
||||||
/// Generate a CUID
|
|
||||||
///
|
/// Public functions for the CUID type
|
||||||
/// The CUID is made up of 5 parts:
|
module Cuid =
|
||||||
/// - The letter "c" (is for both cookies and CUIDs; lowercase letter makes it HTML element ID friendly)
|
|
||||||
/// - A timestamp (in milliseconds send the Unix epoch)
|
/// Generate a CUID
|
||||||
/// - A sequential counter, used to prevent same-machine collisions
|
///
|
||||||
/// - A fingerprint, generated from the hostname and process ID
|
/// The CUID is made up of 5 parts:
|
||||||
/// - 8 characters of random gibberish
|
/// - The letter "c" (is for both cookies and CUIDs; lowercase letter makes it HTML element ID friendly)
|
||||||
///
|
/// - A timestamp (in milliseconds send the Unix epoch)
|
||||||
/// The timestamp, fingerprint, and randomness are all encoded in base 36, using 0-9 and a-z.
|
/// - A sequential counter, used to prevent same-machine collisions
|
||||||
let cuid () =
|
/// - A fingerprint, generated from the hostname and process ID
|
||||||
|
/// - 8 characters of random gibberish
|
||||||
|
///
|
||||||
|
/// The timestamp, fingerprint, and randomness are all encoded in base 36, using 0-9 and a-z.
|
||||||
|
let generate () =
|
||||||
[ "c"
|
[ "c"
|
||||||
timestampNow ()
|
timestampNow ()
|
||||||
(safeCounter >> padBase36) ()
|
(safeCounter >> padBase36) ()
|
||||||
|
@ -86,16 +126,44 @@ let cuid () =
|
||||||
randomBlock ()
|
randomBlock ()
|
||||||
]
|
]
|
||||||
|> List.reduce (+)
|
|> List.reduce (+)
|
||||||
|
|> Cuid
|
||||||
|
|
||||||
/// Generate a slug
|
/// Create a CUID from a string
|
||||||
///
|
///
|
||||||
/// The slug is not as collision-resistant as the CUID, and is also not monotonically increasing, which is desirable
|
/// The string must:
|
||||||
/// for indexed database IDs; full CUIDs should be used in this case. A slug is made up of 4 parts:
|
/// - not be null
|
||||||
/// - The two right-most characters of the timestamp
|
/// - be 25 characters long
|
||||||
/// - The non-padded counter value (may be 1 to 4 characters)
|
/// - start with "c"
|
||||||
/// - The first and last characters of the fingerprint
|
/// - be base-36 format ([0-9|a-z])
|
||||||
/// - 2 characters of random gibberish
|
// TODO: extract these validations out so we can provide a "validate" function for C#/VB.NET
|
||||||
let slug () =
|
let fromString (x : string) =
|
||||||
|
match x with
|
||||||
|
| null -> Error "string was null"
|
||||||
|
| _ when x.Length <> 25 -> (sprintf "string was not 25 characters (length %i)" >> Error) x.Length
|
||||||
|
| _ when not (x.StartsWith "c") -> (sprintf """string did not start with "c" ("%s")""" >> Error) x
|
||||||
|
| _ when (not << isBase36) x -> (sprintf """string was not in base-36 format ("%s")""" >> Error) x
|
||||||
|
| _ -> (Cuid >> Ok) x
|
||||||
|
|
||||||
|
/// Get the string representation of a CUID
|
||||||
|
let toString x = match x with Cuid y -> y
|
||||||
|
|
||||||
|
/// Generate a CUID as a string
|
||||||
|
[<CompiledName "GenerateString">]
|
||||||
|
let generateString = generate >> toString
|
||||||
|
|
||||||
|
|
||||||
|
/// Public functions for the Slug type
|
||||||
|
module Slug =
|
||||||
|
|
||||||
|
/// Generate a slug
|
||||||
|
///
|
||||||
|
/// The slug is not as collision-resistant as the CUID, and is also not monotonically increasing, which is desirable
|
||||||
|
/// for indexed database IDs; full CUIDs should be used in this case. A slug is made up of 4 parts:
|
||||||
|
/// - The two right-most characters of the timestamp
|
||||||
|
/// - The non-padded counter value (may be 1 to 4 characters)
|
||||||
|
/// - The first and last characters of the fingerprint
|
||||||
|
/// - 2 characters of random gibberish
|
||||||
|
let generate () =
|
||||||
let print = fingerprint ()
|
let print = fingerprint ()
|
||||||
[ (timestampNow >> rightChars 2) ()
|
[ (timestampNow >> rightChars 2) ()
|
||||||
(safeCounter >> string >> rightChars 4) ()
|
(safeCounter >> string >> rightChars 4) ()
|
||||||
|
@ -104,3 +172,23 @@ let slug () =
|
||||||
(randomBlock >> rightChars 2) ()
|
(randomBlock >> rightChars 2) ()
|
||||||
]
|
]
|
||||||
|> List.reduce (+)
|
|> List.reduce (+)
|
||||||
|
|> Slug
|
||||||
|
|
||||||
|
/// Create a Slug from a string
|
||||||
|
///
|
||||||
|
/// The string must be between 7 and 10 characters long and base-36 format ([0-9|a-z])
|
||||||
|
// TODO: extract these validations out so we can provide a "validate" function for C#/VB.NET
|
||||||
|
let fromString (x : string) =
|
||||||
|
match x with
|
||||||
|
| null -> Error "string was null"
|
||||||
|
| _ when x.Length < 7 -> (sprintf "string must be at least 7 characters (length %i)" >> Error) x.Length
|
||||||
|
| _ when x.Length > 10 -> (sprintf "string must not exceed 10 characters (length %i)" >> Error) x.Length
|
||||||
|
| _ when (not << isBase36) x -> (sprintf """string was not in base-36 format ("%s")""" >> Error) x
|
||||||
|
| _ -> (Slug >> Ok) x
|
||||||
|
|
||||||
|
/// Get the string representation of a Slug
|
||||||
|
let toString x = match x with Slug y -> y
|
||||||
|
|
||||||
|
/// Generate a Slug as a string
|
||||||
|
[<CompiledName "GenerateString">]
|
||||||
|
let generateString = generate >> toString
|
||||||
|
|
1
FunctionalCuid/paket.references
Normal file
1
FunctionalCuid/paket.references
Normal file
|
@ -0,0 +1 @@
|
||||||
|
FSharp.Core
|
47
README.md
47
README.md
|
@ -1,2 +1,47 @@
|
||||||
# FunctionalCuid
|
# FunctionalCuid
|
||||||
A CUID generator written in F#
|
|
||||||
|
`FunctionalCuid` is a CUID generator written in and designed for F#, which can be used from any .NET language.
|
||||||
|
|
||||||
|
## What Is a CUID?
|
||||||
|
|
||||||
|
The best answer to that question can be found on [the README from the author](https://github.com/ericelliott/cuid). The short version is that it's a Collision-resistant Unique IDentifier (CUID) that can be generated wherever it needs to be (similar to GUIDs), but also follows a format that make them ever-increasing, which means that they can be indexed by even the most rudimentary of database systems.
|
||||||
|
|
||||||
|
## Installing
|
||||||
|
|
||||||
|
(nuget link here)
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
For F#, `FunctionalCuid` provides `Cuid` and `Slug` types as single-case discriminated unions, and modules to generate these types and convert them to their string representations. For string-based purposes, both `Cuid` and `Slug` also have a `generateString` function that returns the same value, just as a string.
|
||||||
|
|
||||||
|
In F#...
|
||||||
|
|
||||||
|
```fsharp
|
||||||
|
module Examples
|
||||||
|
|
||||||
|
open Cuid
|
||||||
|
|
||||||
|
/// A CUID generated as the CUID type
|
||||||
|
let generatedCuid = Cuid.generate ()
|
||||||
|
|
||||||
|
/// Creating a CUID from a string you already know. This string must be 25
|
||||||
|
/// characters long and start with "c".
|
||||||
|
let cuidFromString =
|
||||||
|
match Cuid.fromString "cjz362bgd00005cus6t21gba0" with
|
||||||
|
| Error msg -> invalidOp msg
|
||||||
|
| Ok cuid -> cuid
|
||||||
|
|
||||||
|
/// The string representation of a CUID
|
||||||
|
let cuidString = Cuid.generateString ()
|
||||||
|
```
|
||||||
|
|
||||||
|
For the `Slug` type, just replace `Cuid` with `Slug`; the validation rules for `Slug.fromString` are simply that the string has to be between 7 and 10 characters long.
|
||||||
|
|
||||||
|
For C# and VB.NET, the syntax is a bit different. Instead of `Cuid` as it reads above, it will appear as `CuidModule`; and, as `generateString` is the most likely function (method) called from those languages, its compiled name uses Pascal case. The same holds true for the `Slug` modules as well. A C# example...
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
using Cuid;
|
||||||
|
// ...
|
||||||
|
var cuid = CuidModule.GenerateString();
|
||||||
|
var slug = SlugModule.GenerateString();
|
||||||
|
```
|
||||||
|
|
4
paket.dependencies
Normal file
4
paket.dependencies
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
source https://www.nuget.org/api/v2
|
||||||
|
|
||||||
|
nuget FSharp.Core
|
||||||
|
nuget Expecto
|
201
paket.lock
Normal file
201
paket.lock
Normal file
|
@ -0,0 +1,201 @@
|
||||||
|
NUGET
|
||||||
|
remote: https://www.nuget.org/api/v2
|
||||||
|
Expecto (8.11)
|
||||||
|
FSharp.Core (>= 4.3.4) - restriction: || (>= net461) (>= netstandard2.0)
|
||||||
|
Mono.Cecil (>= 0.10.3) - restriction: || (>= net461) (>= netstandard2.0)
|
||||||
|
FSharp.Core (4.7)
|
||||||
|
Microsoft.NETCore.Platforms (2.2.2) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461))
|
||||||
|
Microsoft.NETCore.Targets (2.1) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461))
|
||||||
|
Mono.Cecil (0.10.4) - restriction: || (>= net461) (>= netstandard2.0)
|
||||||
|
System.Collections (>= 4.3) - restriction: && (< net35) (>= netstandard1.3)
|
||||||
|
System.IO.FileSystem (>= 4.3) - restriction: && (< net35) (>= netstandard1.3)
|
||||||
|
System.IO.FileSystem.Primitives (>= 4.3) - restriction: && (< net35) (>= netstandard1.3)
|
||||||
|
System.Reflection (>= 4.3) - restriction: && (< net35) (>= netstandard1.3)
|
||||||
|
System.Runtime.Extensions (>= 4.3) - restriction: && (< net35) (>= netstandard1.3)
|
||||||
|
System.Security.Cryptography.Algorithms (>= 4.3) - restriction: && (< net35) (>= netstandard1.3)
|
||||||
|
System.Security.Cryptography.Csp (>= 4.3) - restriction: && (< net35) (>= netstandard1.3)
|
||||||
|
System.Threading (>= 4.3) - restriction: && (< net35) (>= netstandard1.3)
|
||||||
|
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (>= 4.3.1)
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.debian.9-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.fedora.27-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.fedora.28-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.3)
|
||||||
|
runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.opensuse.42.3-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple (4.3.1) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
runtime.ubuntu.18.04-x64.runtime.native.System.Security.Cryptography.OpenSsl (4.3.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
System.Collections (4.3) - restriction: || (&& (< net35) (>= net461)) (&& (< net35) (>= net463)) (&& (< net35) (>= netstandard2.0))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Collections.Concurrent (4.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6)) (&& (< net35) (>= net463))
|
||||||
|
System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Diagnostics.Tracing (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81))
|
||||||
|
System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81))
|
||||||
|
System.Diagnostics.Debug (4.3) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net35) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net35) (>= net461) (< netstandard1.4)) (&& (< net35) (>= net461) (>= netstandard1.6)) (&& (< net35) (>= net461) (< netstandard1.6)) (&& (< net35) (>= net463))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Diagnostics.Tracing (4.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6)) (&& (< net35) (>= net463))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Globalization (4.3) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net35) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net35) (>= net461) (< netstandard1.4)) (&& (< net35) (>= net461) (>= netstandard1.6)) (&& (< net35) (>= net461) (< netstandard1.6)) (&& (< net35) (>= net463))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.IO (4.3) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Text.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.IO.FileSystem (4.3) - restriction: || (&& (< net35) (>= net461)) (&& (< net35) (>= netstandard2.0))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.IO.FileSystem.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46)
|
||||||
|
System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.IO.FileSystem.Primitives (4.3) - restriction: || (&& (< net35) (>= net461)) (&& (< net35) (>= netstandard2.0))
|
||||||
|
System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Linq (4.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6)) (&& (< net35) (>= net463))
|
||||||
|
System.Collections (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.6) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Reflection (4.3) - restriction: || (&& (< net35) (>= net461)) (&& (< net35) (>= netstandard2.0))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Reflection.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< win8) (< wpa81) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (< netstandard1.3)) (&& (< net35) (>= net461) (>= netstandard1.5)) (&& (< net35) (>= net461) (< netstandard1.5))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Resources.ResourceManager (4.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.0) (< win8) (< wp8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (4.3.1) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.2) (< win8) (< wp8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Runtime.Extensions (4.3.1) - restriction: || (&& (< net35) (>= net461)) (&& (< net35) (>= netstandard2.0))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81))
|
||||||
|
System.Runtime.Handles (4.3) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461)) (&& (>= net461) (>= netcoreapp1.1)) (&& (>= netcoreapp1.1) (>= netstandard2.0))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.InteropServices (4.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1)
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1)
|
||||||
|
System.Reflection (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1)
|
||||||
|
System.Reflection.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1)
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.2) (< win8)) (&& (< monoandroid) (< net45) (>= netstandard1.2) (< netstandard1.3) (< win8) (< wpa81)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= net462) (>= netcoreapp1.1)
|
||||||
|
System.Runtime.Handles (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.5) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.3) (< netstandard1.5) (< win8) (< wpa81)) (>= netcoreapp1.1)
|
||||||
|
System.Runtime.Numerics (4.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6))
|
||||||
|
System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.1) (< netstandard1.3) (< win8) (< wpa81))
|
||||||
|
System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Security.Cryptography.Algorithms (4.3.1) - restriction: || (&& (< net35) (>= net461)) (&& (< net35) (>= netstandard2.0))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
runtime.native.System.Security.Cryptography.Apple (>= 4.3.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3.2) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.IO (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463)
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (>= net463)
|
||||||
|
System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.Numerics (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net463)
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net46) (>= netstandard1.3) (< netstandard1.4)) (&& (< monoandroid) (< net46) (>= netstandard1.4) (< netstandard1.6)) (&& (>= net46) (< netstandard1.4)) (&& (>= net461) (< netstandard1.6)) (>= net463)
|
||||||
|
System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.6) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Security.Cryptography.Csp (4.3) - restriction: || (&& (< net35) (>= net461)) (&& (< net35) (>= netstandard2.0))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Reflection (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Security.Cryptography.Algorithms (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46)
|
||||||
|
System.Security.Cryptography.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (>= net46)
|
||||||
|
System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Security.Cryptography.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461) (>= netstandard1.6)) (&& (< net35) (>= net463))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
runtime.native.System.Security.Cryptography.OpenSsl (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Collections (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Collections.Concurrent (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Linq (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.Extensions (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.Handles (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime.InteropServices (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Security.Cryptography.Primitives (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Text.Encoding (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Security.Cryptography.Primitives (4.3) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.4) (>= netstandard2.0)) (&& (< monoandroid) (< net35) (< netstandard1.6) (>= netstandard2.0)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net46) (< netstandard1.4) (>= netstandard2.0)) (&& (< net35) (>= net461) (< netstandard1.4)) (&& (< net35) (>= net461) (>= netstandard1.6)) (&& (< net35) (>= net461) (< netstandard1.6)) (&& (< net35) (>= net463))
|
||||||
|
System.Diagnostics.Debug (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Globalization (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.IO (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Resources.ResourceManager (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Runtime (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Threading (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Threading.Tasks (>= 4.3) - restriction: && (< monoandroid) (< monotouch) (< net46) (>= netstandard1.3) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)
|
||||||
|
System.Text.Encoding (4.3) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (< netstandard1.5) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Threading (4.3) - restriction: || (&& (< net35) (>= net461)) (&& (< net35) (>= net463)) (&& (< net35) (>= netstandard2.0))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Threading.Tasks (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Threading.Tasks (4.3) - restriction: || (&& (< monoandroid) (< net35) (< netstandard1.3) (>= netstandard2.0) (< win8) (< wpa81)) (&& (< monoandroid) (< net35) (>= netstandard2.0) (< xamarinios) (< xamarinmac)) (&& (< net35) (>= net461))
|
||||||
|
Microsoft.NETCore.Platforms (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
Microsoft.NETCore.Targets (>= 1.1) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
||||||
|
System.Runtime (>= 4.3) - restriction: || (&& (< monoandroid) (< monotouch) (< net45) (>= netstandard1.3) (< win8) (< wpa81) (< xamarinios) (< xamarinmac) (< xamarintvos) (< xamarinwatchos)) (&& (< monoandroid) (< net45) (>= netstandard1.0) (< netstandard1.3) (< win8) (< wp8) (< wpa81))
|
Loading…
Reference in New Issue
Block a user