gpt4 book ai didi

f# - 但它是 : 'EntryPointAttribute' attribute must be the last declaration in the last file

转载 作者:行者123 更新时间:2023-12-04 07:51:37 24 4
gpt4 key购买 nike

我真的很讨厌问这样一个愚蠢的问题,但我的挫败感已经沸腾了。我按此顺序有 3 个文件:

Work.fs
WorkTests.fs
Main.fs

这就是 Main.fs 的全部内容

module Main 
open Work

[<EntryPoint>]
let main args =
let p = work "some data"
printfn "p : %A" p
0

Work 和 WorkTests (xunit) 首先出现,通过后我添加了 Main.fs

我仍然收到最后的声明/文件错误。

我尝试了很多方法,但都无济于事。

例如,如果我省略“module Main”,我会得到“Only the last source file ... may omit such a declaration”

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
<OutputType>Exe</OutputType>
<IsPackable>false</IsPackable>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<Tailcalls>true</Tailcalls>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
<PackageReference Include="xunit" Version="2.4.1" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3" />
<PackageReference Include="FsUnit.xUnit" Version="4.0.4" />
</ItemGroup>

<ItemGroup>
<Compile Include="Work.fs" />
<Compile Include="WorkTests.fs" />
<Compile Include="Main.fs" />
</ItemGroup>

</Project>

最佳答案

我能够重现该问题。唯一修复它的方法是更改​​ Main.fs 的名称至 Program.fs . Program.fs 以外的任何名称有同样的问题。但我发现如果你删除 Microsoft.NET.Test.Sdk打包构建工程,但仅在 VS 中构建两次之后。离奇。我还不知道为什么会这样。


更新:

当您将名称更改为 Program.fs 时还有另一个构建警告:A 'Program.fs' file can be automatically generated for F# .NET Core test projects. To fix this warning, either delete the file from the project, or set the <GenerateProgramFile> property to 'false'. .

添加<GenerateProgramFile>false</GenerateProgramFile> FSPROJ 修复了此警告并允许您使用任何文件名。

关于f# - 但它是 : 'EntryPointAttribute' attribute must be the last declaration in the last file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66941970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com