-
Notifications
You must be signed in to change notification settings - Fork 585
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
FAKE Dotnetcore #1232
Comments
Is already, fsprojects/Chessie#43 is merged. dunno about the package |
Two possibilities (i prefer the cli command) 1) make a dotnet cli commanduse dotnet cli command, so you can write It's just a console app. and inside a project.json there is a also if paket is a dotnet too, you can 2) publish a different package for each platform, and download+ run itor use |
I feel Otherwise there is food for thought on how to consolidate the very useful tools that Paket and FAKE are toward better user experience / easy cross platform support. For all the paket stuff, it feels like the FAKE script should just reference the tools exposed in Paket.Core (albeit the API is not to be considered stable) rather than introducing some special dialect of what is a F# script. |
Thanks for the feedback, keep it coming!
Yes I imagined using something like this. Like I said, ideally I want to avoid a dependency on
Note that I'm not proposing to add nuget support or anything like that to the F# compiler / fsi. We can change how it would look, but I would force all packages to be listed on top of the file to clearly separate them from the rest of the script. Something like (* package "Fake.IO "*)
(* package "MyBuildLibrary" *)
would work as well. I just want it to be part of the script file to simplify the entry level (like I said on non .net projects). A nice side effect would be that we would no longer require a |
Maybe something which still does the same if called from FSI? #r "fake.exe"
Paket.Install("""
Fake.IO
MyBuildLibrary
""");; |
Problem with that is that the paket command should run before executing the script apparently |
I mean if FAKE contains Paket, I'd expect the above to work as expected. Am I misunderstanding something? |
Yes it probably would but
will probably not work as expected. Especially considering FAKE caching and things like that. |
@enricosada I think we can actually do both of your proposals. Provide standalone packages (to be downloaded and executed via scripts) or let the user use a It could continue the same way from there... |
Okay I'm making some progress with this. However I'm now stuck with:
@enricosada Any Idea whats going on? To reproduce checkout my branch:
|
@matthid i'll check tonight the branch To get more info, you can run all dotnet commands with
to see more info |
@matthid, I haven't yet tried out your branch (nor dotnet core), but I believe ultimately you'd expect to have a In visualfsharp repository, a build step performs similar renaming for fsc.exe and fsi.exe.
Hope this helps |
@smoothdeveloper doing the rename is wrong, the visualfsharp repo do that beacuse doesnt use dotnet sdk (the new name of dotnet cli) and the project.json. Doing that doesnt copy references etc. if you want a clean xcopy executable (with all the references) you should use also an exe should depends on |
@enricosada thanks for the precisions! |
Note that if dotnetcli is extensible we should be able to hook into dot net build and restore etc for these features. |
@isaacabraham Yeah definitely looking forward to the docs of those extension points. Is there a list somewhere? I definitely had this in mind from the beginning. But first step is to make the code run :) |
@enricosada thanks for the tip. Will try it as soon as possible and report back if it gets me somewhere... |
@matthid Nope, I think with everything happening now it's all in a state of flux, but in my personal opinion this will probably happen. |
I managed to get it working with the preview 1 it seems like the old version was giving some additional parameters to the started application. I'm now trying to run with netstandard1.5 (net46 is working as expected now) and get:
@enricosada FYI (maybe for some future docs) I got a weird
|
See https://github.com/dotnet/netcorecli-fsc/ sample and wiki. |
Moving implementation and technical problems to #1281 . Such that people can leave in-line comments and focus here on the discussion of usefulness/design. @enricosada Thanks for the link, I tried some things but couldn't figure out the problem. I did send a request for the fsharp slack channel :). |
Hi. How is progress of this task? |
I hope I can push this further after chrismas... currently I'm thinking about moving some of this functionality to paket and generalizing this concept even further... |
Any updates on this issue? |
sadly not :( The good thing is that netcore has some time to mature ... |
True. Let's hope everything will be mature enough soon :) |
real alpha is coming soon, for now we have https://chocolatey.org/packages/fake and the https://ci.appveyor.com/nuget/fake nuget feed. So I'm closing this. |
TLDR: Lets combine FAKE and Paket to make the head-start awesome in any environment and remove all dependencies.
TODO , see #1523
Old Post (the thing is now real, see #1281)
Why?
This are just some thoughts on how we could widen the F# usage, even in projects outside of the regular .NET scope and across platforms. This issue is to discuss various ideas, get feedback and maybe even start a little POC if the thing does make any kind of sense to somebody :)
The basic idea is to be able to use FAKE everywhere, while this is possible just right now there is a lot of overhead:
You might use nuget.exe but with nuget.exe it's a lot more frustrating in the long run.
Its especially painful because the project we are speaking about might already have some package resolution in place so paket.exe might be quite some overhead on top of that.
Proposal
I propose to make the following possible:
and the following "extensions" to
.fsx
(maybe that would make that a.fake
):#paket
or some other syntax - potentially one to still be a valid.fsx
file)#paket
lines with a#load
of the packages include scripts (see Implement a loading script generator. Paket#1619)Thoughts
This would give us the possibility to completely clean up FAKE and reduce it to its core (everything else can be added easily via nuget packages). I'm not sure if there is any migration path.
In essence this idea would combine FAKE and Paket. We could get back to our
well known
infrastructure by adding additional commands like#enablePaketDependencies
which would make sure that an existingpaket.dependencies
is restored before running the script.It would be a good way to use F# in some alien environments - if we can make it "just work".
Dependencies
Finally we'd need the following:
dotnet
cli.project.json
to bootstrap (but thendotnet
needs to be installed).Roadmap
Moved to #1281
What do you think, would that actually improve anything? Is it feasible?
/cc @forki @tpetricek @enricosada
The text was updated successfully, but these errors were encountered: