Closed ForNeVeR closed 3 years ago
I thought it builds fine with 3.1 sdk?
uint
was only included into F# 5, which isn't available in 3.1 SDK.
Thanks.
I just double checked the fsproj, it says netcoreapp3.1, and there's no explicit reference to FSharp.Core, so it should default to 4.7.
The azure build pipeline was updated a while ago to use 5.0 SDK though.
I'll need to actually do a build with 3.1 to see what happens. IIRC uint has been around since a long time ago.
I was experimenting with a .Net 5 build, but reverted to netcoreapp3.1 due to performance issues.
I do remember this RFC, and was confused a bit back then -- I must have been using uint32 or just int 😅😅
Builds fine with SDK 3.1 -- not sure why/how:
.\dotnet-install.ps1 -Channel 3.1 -InstallDir 'C:\Users\Yatao\git\.dotnet'
-- get 3.1 SDK, I've got 3.1.404global.json
to project root and specify sdk 3.1.404Base Path: C:\Users\Yatao\git\.dotnet\sdk\3.1.404\
Do you have a repro where 3.1 SDK doesn't work?
Yes. I have .NET SDK 3.1.301 installed (dotnet info
→ 3.1.301
, among others. including 5.0.101), and the global.json
I've generated says the following:
{
"sdk": {
"version": "3.1.301"
}
}
dotnet build
says this:
C:\Temp\fvim\Views\Editor.xaml.fs(85,34): error FS0039: The type 'uint' is not defined. Maybe you want one of the following: uint8 UInt16 UInt32 UInt64 uint16 [C:\Temp\fvim\fvim.fsproj]
For the record:
$ dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 3.1.301
Commit: 7feb845744
Runtime Environment:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\3.1.301\
Host (useful for support):
Version: 5.0.1
Commit: b02e13abab
.NET SDKs installed:
2.1.801 [C:\Program Files\dotnet\sdk]
2.2.203 [C:\Program Files\dotnet\sdk]
3.0.100 [C:\Program Files\dotnet\sdk]
3.1.101 [C:\Program Files\dotnet\sdk]
3.1.301 [C:\Program Files\dotnet\sdk]
5.0.101 [C:\Program Files\dotnet\sdk]
You may try switching to 3.1 on CI to check if that works. Anyway, I think it's a good idea to state actual requirements you have on CI (i.e. the tool versions you're checking against).
Oh gosh. Tried the same in 3.1.404
: it works, indeed. Seems F# 5 compiler was included somewhere in the middle of 3.1 then?
I suggest we state that 3.1.404 is required, then. There's another user here who had 3.1.108 installed, and they were thinking it would be enough to build fvim, while it actually is not.
I've updated the PR to reflect these findings.
Thank you!
I was hesitating on stating SDK 5.0 requirement because installing a 5.0 package (host+runtime+sdk) alone is not enough to build for TFM netcoreapp3.1
-- I want to remove such complexity to avoid scaring people new to dotnet away.
The uint
thing probably happened recent enough during the rune refactoring -- that the transition did not raise an alert for me.
I'll merge this one now. We will move to 5.0 when I have sufficient test data.
Since some parts of the new syntax (say,
uint
) are used here, the project cannot be built using an older SDK.