gpt4 book ai didi

c# - 只有 1 个 Main 方法的 XUnit 测试项目 : "Program has more than one entry point defined."

转载 作者:太空狗 更新时间:2023-10-29 19:58:02 24 4
gpt4 key购买 nike

我在 Visual Studio 2017 RC 中将 vNext 格式的 .NET xUnit 测试项目(带有 project.json)转换为新的 .csproj 格式并开始出现以下错误。大多数对此错误的在线回答都是“您有两个主要方法;去掉一个”。这似乎是一个显而易见的解决方案,但该项目只有一个 Main 方法。

错误:

CS0017 Program has more than one entry point defined. Compile with /main to specify the type that contains the entry point. Project.Name C:\path\to\Program.cs

程序.cs:

using XunitProgram = Xunit.Runner.DotNet.Program;

namespace My.Namespace.Tests
{
public static class Program
{
public static void Main(string[] args)
{
XunitProgram.Main(args);
}
}
}

旧的 project.json:

{
"version": "1.0.0-*",
"testRunner": "xunit",
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"debugType": "full"
},

"dependencies": {
"dotnet-test-xunit": "2.2.0",
"xunit": "2.2.0",
"Microsoft.DotNet.InternalAbstractions": "1.0.0"
},
"frameworks": {
"net462": {}
}
}

新项目.csproj:

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

<PropertyGroup>
<TargetFramework>net462</TargetFramework>
<RuntimeIdentifier>win7-x86</RuntimeIdentifier>
<DebugType>full</DebugType>
<PreserveCompilationContext>true</PreserveCompilationContext>
<AssemblyName>My.Project.Tests</AssemblyName>
<OutputType>Exe</OutputType>
<PackageId>My.Project.Tests</PackageId>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<GenerateAssemblyConfigurationAttribute>false</GenerateAssemblyConfigurationAttribute>
<GenerateAssemblyCompanyAttribute>false</GenerateAssemblyCompanyAttribute>
<GenerateAssemblyProductAttribute>false</GenerateAssemblyProductAttribute>
<RootNamespace>My.Project.Tests</RootNamespace>
<StartupObject />
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0-preview-20170106-08" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
<PackageReference Include="xunit" Version="2.2.0" />
</ItemGroup>

<ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>

<ItemGroup>
<Folder Include="SampleInput\" />
</ItemGroup>

</Project>

最佳答案

这需要一些修补才能弄清楚。迁移到 VS 2017 中的新项目格式后,Microsoft 悄悄地添加了对 Microsoft.NET.Test.Sdk 的依赖项,我相信它有自己的 Main 方法。

如果您在 VS 2017 RC 中创建一个新的 xUnit 测试项目以及您已迁移的项目,您会注意到它不再使用调用 XUnit 运行器的 Main 方法创建 Program.cs。

要解决此问题,请删除您唯一可见的 Main 方法。如果您具有上述包引用 (Microsoft.NET.Test.Sdk, xunit.runner.visualstudio, xunit).

关于c# - 只有 1 个 Main 方法的 XUnit 测试项目 : "Program has more than one entry point defined.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42372342/

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