J.D*_*len 7 c# xunit .net-core visual-studio-2017
我将vNext格式的.NET xUnit测试项目(带有project.json)转换为Visual Studio 2017 RC中的新.csproj格式,并开始收到以下错误.这个错误的大多数在线答案都说"你有两个主要方法;摆脱一个." 这似乎是一个明显的解决方案,但这个项目只有一个Main方法.
错误:
CS0017程序定义了多个入口点.使用/ main编译以指定包含入口点的类型.Project.Name C:\ path\to\Program.cs
Program.cs中:
using XunitProgram = Xunit.Runner.DotNet.Program;
namespace My.Namespace.Tests
{
public static class Program
{
public static void Main(string[] args)
{
XunitProgram.Main(args);
}
}
}
Run Code Online (Sandbox Code Playgroud)
老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": {}
}
}
Run Code Online (Sandbox Code Playgroud)
新Project.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>
Run Code Online (Sandbox Code Playgroud)
J.D*_*len 12
这需要一点时间来修补.在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).
因为当你有一个带有测试的控制台应用程序时,我更喜欢这个:
tl;博士;
<GenerateProgramFile>false</GenerateProgramFile> inside a <PropertyGroup>在测试项目的 .csproj 文件中添加元素。
从:
| 归档时间: |
|
| 查看次数: |
3337 次 |
| 最近记录: |