-
Notifications
You must be signed in to change notification settings - Fork 96
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
Using msbuild to package FSharpPlus #49
Conversation
I see all green. Is it Ok to merge on your side? |
Well, we need to set it so that it includes the version in the build, right now it builds |
I see the error on the build. That’s because FSharpPlus is used to generate the docs. |
But I don't get how that change cause that build failure ... since it changes the package prefix, does it also clean the folders perhaps? |
Aa, yes, it was due to fiddling with the build script |
The thing that looks wrong now is that for netstandard2.0 we probably want the FSharpPlus.BaseLib in that folder. |
@@ -21,15 +21,16 @@ | |||
</PackageTags> | |||
<ProjectGuid>1368368e-d2f4-4fef-bb2f-492e05156e0f</ProjectGuid> | |||
<GenerateDocumentationFile>true</GenerateDocumentationFile> | |||
<OtherFlags>--staticlink:FSharpPlus.BaseLib --warnon:1182</OtherFlags> | |||
<OtherFlags Condition=" '$(TargetFramework)' == 'netstandard2.0'">--warnon:1182</OtherFlags> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I couldn't compile netstandard package with static linking with FSharpPlus.BaseLib
is how the nuspec found on appveyor looks like. |
Oh I see, you mean that we can't embed it for netcore ? |
Well if there's nothing we can do about it we should merge it as it is. What do you think? |
I tried to build in my computer. It works but I get some funny warnings:
|
How are you building? the latest commits I've done is in order to tell msbuild about versionprefix and suffix, so at least the versions are as it should |
Well, I just clean up everything, clone the repo and run build. |
I'm currently away from all windows computers, so I can't try it locally. Though you can check the build result from https://ci.appveyor.com/project/wallymathieu/fsharpplus-8q142/branch/pack_for_net45_on_nix and download the artifacts |
It looks good, no warnings. Honestly I don’t care about those warnings. If it’s ok for you we can merge. |
As long as it's ok for you then merge 😉 I will see if I can figure out how msbuild pack works. Perhaps there is some flag to control the reference so that it is included as a private assembly |
When running it locally on an old mac I get:
|
so perhaps it's something that needs to be fixed in relation to paket |
Most likely. But I will merge it in anycase because it builds and it (hopefully) creates the nuget in myget which allows me to release. |
Thanks! One way of solving it would be to publish a version of |
Maybe is the only way to solve it. |
Myget still builds version CI00022 :
But I think is OK, because I'm not releasing and myget keeps incrementing the CI build, the only think I wonder is why he came back from 89 to 22. |
When I look at the |
Yes, that’s probably the way to go. I will think what’s the best way to split it. |
Another possibility is to attempt to write it in F# and see if we can get the same performance. |
No, I just wanted to make sure that the nuget package is done done efter the change to netstandard2.0. |
What's the reason for |
No, I think it's because of the Endianess. I believe those implementations define the Endianess based on the architecture it runs, so they are no referential transparent. As many other functions in the .NET framework they are context dependent. |
Aaa, so even more reason to put it in a separate nuget package. So in other words, if you try to build a serialiser on top of the standard .net class then it will give you headaches when dealing with different machines. |
I think so. I had a project that needed to use Bid Endian regardless of the architecture in order to talk to a third party component. |
@wallymathieu maybe there's a way to code those unsafe blocks in F# , see for example this https://gist.github.com/vietnt/84c7532d70e83dee2545df7507158856 I will give it a try. |
Look at this dotnet/fsharp#3924 So, it seems to be a known issue, to be solved soon. AFAIK I am the only one using the classes in BaseLib in a performance critical project but at the same time I know I won't be updated anytime soon. So I propose, in order to avoid duplicate efforts, to go back to the code as it was before adding the optimized version in BaseLib, then release to nuget. Later when this issue is solved we can use again the code from the BaseLib. |
Sounds like a good plan, since then the deliverable will be simple enough for use in .net core et.c. |
Cool, I'll try to have the code adapted ASAP. |
I managed to translate the code in the Baselib to F#, using the same techniques and taking advantage of the new See 6983947 A quick test showed equivalent performance, so now we can safely get rid of the C# BaseLib project. |
Sweet! 👍 |
Note also build status on appveyor:
Need to verify that the package is generated as it should.