Skip to content
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

hello from FAKE! Example script returns Error FS0039: The namespace or module 'Fake' is not defined #2834

Open
LawrenceSpear opened this issue Sep 25, 2024 · 2 comments

Comments

@LawrenceSpear
Copy link

Description

Using the example hello from FAKE! script returns the module 'Fake' is not defined

Repro steps

Just follow the steps described in the FAKE documentation: https://fake.build/guide/getting-started.html

Expected behavior

Expected it to print "hello from FAKE!"

Actual behavior

Script is not valid:
C:\Projects\test\build.fsx (5,5)-(5,9): Error FS0039: The namespace or module 'Fake' is not defined.
C:\Projects\test\build.fsx (8,0)-(8,6): Error FS0039: The value, namespace, type or module 'Target' is not defined.
C:\Projects\test\build.fsx (13,0)-(13,6): Error FS0039: The value, namespace, type or module 'Target' is not defined.

Related information

dotnet --info
.NET SDK:
Version: 8.0.400
Commit: 36fe6dda56
Workload version: 8.0.400-manifests.251308be
MSBuild version: 17.11.3+0c8610977

Runtime Environment:
OS Name: Windows
OS Version: 10.0.22631
OS Platform: Windows
RID: win-x64
Base Path: c:\program files\dotnet\sdk\8.0.400\

.NET workloads installed:
Configured to use loose manifests when installing new manifests.
[aspire]
Installation Source: VS 17.11.35312.102
Manifest Version: 8.1.0/8.0.100
Manifest Path: c:\program files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.aspire\8.1.0\WorkloadManifest.json
Install Type: FileBased

Host:
Version: 8.0.8
Architecture: x64
Commit: 08338fcaa5

.NET SDKs installed:
3.1.426 [c:\program files\dotnet\sdk]
5.0.104 [c:\program files\dotnet\sdk]
6.0.425 [c:\program files\dotnet\sdk]
8.0.400 [c:\program files\dotnet\sdk]

fake --version
FAKE 6 - F# Make (6.1.2.0) (running on .NETCoreApp,Version=v6.0) (this line is written to standard error, see #2066)
FakePath: C:\Users*****.dotnet\tools.store\fake-cli\6.1.2\fake-cli\6.1.2\tools\net6.0\any\Fake.Runtime.dll
Paket.Core: 8.1.0

I've tried setting the FAKE_SDK_RESOLVER_CUSTOM_DOTNET_VERSION to 6.0 and 8.0 with the same results

Copy link
Contributor

Welcome to the FAKE community! Thank you so much for creating your first issue and therefore improving the project!

@nicholas-peterson
Copy link

I think you're trying to use the fake dotnet tool, which honestly I didn't have much luck with (i'm a newbie to FAKE, so I might be missing something obvious).

Instead, I started running my build.fsx file using the following command:
dotnet fsi build.fsx -t Hello

My build.fsx has the following contents:

#r "nuget: Fake.Core.Target"
open Fake.Core 

let fsiArguments = 
    System.Environment.GetCommandLineArgs()
    |> Array.skip 2
    |> Array.toList

Context.FakeExecutionContext.Create false __SOURCE_FILE__ fsiArguments
|> Context.RuntimeContext.Fake
|> Context.setExecutionContext


Target.create "Hello" (fun _ -> 
    Trace.log "--- Hello from Fake! --- "
)

Target.runOrDefault "Hello"

Compared to the first example on the website, this feels clearer to me:

  • It doesn't generate a .fake folder in my project directory full of packet and other intimidating files.
  • The only requirement seems to be having dotnet sdk installed.

I know this question was from awhile ago so I'm sure you've resolved it by now, but maybe for newer devs this might help.

I'd also love to know if there is any huge downside to running Fake this way?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants