Eho*_*ret 3 f# compilation compiler-warnings
我有一个包含以下项目的 .NET 解决方案:
Console:控制台 .NET Core 2.2Domain: .NET 标准 2.0Domain.Tests:控制台 .NET Core 2.2 (XUnit)Infrastructure: .NET 标准 2.0我Domain.Tests.fsproj的定义为:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<IsPackable>false</IsPackable>
<GenerateProgramFile>false</GenerateProgramFile>
<TargetFramework>netcoreapp2.2</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="FsCheck" Version="3.0.0-alpha4" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
</ItemGroup>
<ItemGroup>
<Compile Include="Dsl.fs" />
<Compile Include="OpenAccountTests.fs" />
<Compile Include="CloseAccountTests.fs" />
<Compile Include="DepositCashTests.fs" />
<Compile Include="WithdrawCashTests.fs" />
<Compile Include="WireMoneyTests.fs" />
<Compile Include="RequestAddressChangeTests.fs" />
<Compile Include="RequestEmailChangeTests.fs" />
<Compile Include="RequestPhoneNumberChangeTests.fs" />
<Compile Include="ValidateAddressChangeTests.fs" />
<Compile Include="ValidateEmailChangeTests.fs" />
<Compile Include="ValidatePhoneNumberChangeTests.fs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Domain\Domain.fsproj" />
</ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
但是在编译解决方案时,我有以下警告:
ValidatePhoneNumberChangeTests.fs(102, 35): [FS0988] 程序的主模块为空:运行时什么都不会发生
我在 SO 上检查了该答案,并do()在最后一个文件的末尾添加了Domain.Tests:ValidatePhoneNumberChangeTests.fs没有做任何事情。
我能做些什么来摆脱这个警告?
@rmunn 在评论中走在正确的轨道上。<OutputType>默认为何Library时TargetFramework是netstandardXX或net4XX,Exe何时TargetFramework是netcoreappXX。
设置<OutputType>Library</OutputType>是 IMO 解决此问题的最佳方法,而不是添加不会被调用的入口点。
<TargetFramework>netcoreapp2.2</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
这将 Domain.Tests 项目指定为可执行文件
如果您只需要它是一个类库,那么将其更改为
<TargetFramework>netstandard2.0</TargetFramework>
Run Code Online (Sandbox Code Playgroud)
如果您只是想删除警告,您可以通过在编译顺序的末尾ValidatePhoneNumberChangeTests.fs或末尾添加它来添加一个 main 方法Program.fs
[<EntryPoint>]
let main argv =
0
Run Code Online (Sandbox Code Playgroud)