-
Notifications
You must be signed in to change notification settings - Fork 45
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update projects to .NET sdk, support netstandard2.0
, drop tfms, etc
#38
Conversation
drop support for `.NETPortable`( `portable-net45+win8+wp8+wpa81` ) target framework
…rget framework remove compiler define and code for `PCL_FPARSEC` the compiler defines `PCL` is not used anymore. The code is not yet removed because it's a big change, but because the compiler define is not set, the code is unused
Signed assemblies do not create any problems for unsigned consumers, but unsigned ones are impossible to consume from signed ones. Clear need is when a netstandard assembly A is consumed by another netstandard assembly B which also targets .NET classic and netcore, and the B assembly is consumed by a .NET classic assembly C that is signed. If A (FParsec is this case) is not signed then B cannot be signed and C cannot consume it. Please make all assemblies signed and commit the key to the repo. I believe this is de facto a standard for open projects (e.g. Dapper, Nodatime).
Signed is much easier to maintain not only than than two but also than unsigned - you do it once, forget about it and never get issues/complaints that some signed assembly cannot use yours. |
I'd like to not enter the discussion about strong naming here, because is always really long. Just to be clear, for me is a big no. What matter is that the fparsec net45 is strong signed, that's ok and must continue to be like that (it's out of scope for this PR). I checked the built assemblies and are strong signed
@stephan-tolksdorf as a note, i tried in https://github.com/enricosada/fparsec/tree/split_prop to split the LowTrust in multiple fsproj (so FParsec.fsproj and So @stephan-tolksdorf for me this PR is ready
|
Any discussion about strong naming should involve Paket vs. NuGet, Tabs vs. Spaces, and Vim vs. Emacs 😄 |
Frankly I'm surprised that there is strong opinion not to sign. Not once I
had to build myself (Deedle, Math.NET, R.NET, older Dapper), and wonder if there
is a single person out there who had to rebuild a signed assembly as
non-signed because signed is unusable. What inconvenience one line in a
project file could cause?
You are forcing to multitarget when classic framework signed final consumer
is involved.
But with practice forking+repacking becomes not so difficult. Much easier
than such discussions.
…On Thu, Feb 28, 2019, 1:55 AM Phillip Carter ***@***.***> wrote:
Any discussion about strong naming should involve Paket vs. NuGet, Tabs
vs. Spaces, and Vim vs. Emacs 😄
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#38 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AAd5fKcic2b7X1GoVowLTfpUvU0njCDXks5vRwzGgaJpZM4bFDWN>
.
|
@enricosada Thanks again for your work on this PR! I'm going to review it this weekend so that we can merge it. I'm curious, why did you switch to conditionals based on TargetFramework from TargetFrameworkIdentifier in 63f5049 (after deleting the fallback initialization of TargetFrameworkIdentifier in 5231fbd)? |
Because the strong sign wasn’t enabled. that property TargetFrameworkIdentity is set from a taarget later than the conditional evaluation, so was evaluated to false. |
I think that's why I originally set the Do you still want to add the SourceLink support? |
Yes, i’ll add sourcelink later in another PR |
… "Build", use newer VisualStudioVersion
…ctory.Build.props to FParsec.fsproj
…explicitly set optimization-related flags and defines
Great work @enricosada! I think this PR is ready to be merged. I've made some minor adjustments. Let me know if you find any of them objectionable. If you think the PR is ready, please squash the PR, give it a descriptive commit message and then rebase merge it with master. (I've invited you as a GitHub contributor.) Thank you so much for your contribution! |
Done, thanks @stephan-tolksdorf |
As the one who reported #21, I'm happy to see that someone tackled this. Thanks @enricosada! |
ref #39 to track sourcelink |
Great work @enricosada |
Is it possible to get this released as another RC?. Currently have issues with mixing netframework and netstandard libs. |
create a modern package, use .net sdk, cleanup infra, add ci.
Supported frameworks
add support for
netstandard2.0
drop support for discontinued
net40-client
target framework.it's not used anymore in .NET >= 4.5
ref https://docs.microsoft.com/en-us/dotnet/framework/deployment/client-profile
drop support for
netstandard1.6
, it's useful only in .NET Core v1.replaced by
netstandard2.0
drop support for
.NETPortable
(portable-net45+win8+wp8+wpa81
) target framework.the PCL profiles are replaced by .NET Standard.
PCL
is not used anymore. The code is not yet removedbecause it's a big change, but because the compiler define is not set, the
code is unused
Dependencies
pin
FSharp.Core
to be >= v4.3.4 for all target framework to simplify depsProjects
add
global.json
to pin .net core sdk version to make build deterministicupgrade form FSharp.NET.Sdk style (deprecated in .NET Core Sdk 1.0) to .NET Sdk fsproj
cleanup shared props and fsproj, using conventions of .NET Sdk:
Directory.Build.props
remove old VS11 projects, new projects works in VS
Build script
update
pack.psi
powershell script, to usedotnet
commands instead of msbuild/nugetnupkgs are generated in
~/bin/nupkg
CI
Add appveyor:
pack.ps1
Add travis:
dotnet build
on bothRelease
andRelease-LowTrust
configurationsnetcoreapp
. It can run alsonet45
test using mono but i am too lazy to write the if in the travis script (but the matrix is there)Issues
fix #34 (support
netstandard
andnet
tfms)fix #21 (just run
dotnet
commands, but replacing the powershell is easy too)