如何阻止xunit自动生成全局using?适配.Net 8与.Net Core 3.1
解决多框架下Xunit自动生成全局Using导致.Net Core 3.1编译错误的办法
方法1:针对Xunit包单独禁用隐式全局Usings
在测试项目的.csproj文件中,给Xunit相关的包引用添加DisableImplicitUsings="true"属性,精准禁用该包自动生成的全局using:
<PackageReference Include="xunit" Version="2.6.6"> <DisableImplicitUsings>true</DisableImplicitUsings> </PackageReference> <PackageReference Include="xunit.runner.visualstudio" Version="2.5.5"> <DisableImplicitUsings>true</DisableImplicitUsings> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference>
方法2:排除自动生成的GlobalUsings文件
若方法1无效,可在.csproj中添加配置,让构建系统忽略obj文件夹下生成的GlobalUsings文件:
<ItemGroup> <Compile Remove="obj\**\GlobalUsings.g.cs" /> </ItemGroup>
该配置会递归排除所有框架下生成的GlobalUsings.g.cs文件的编译引用,避免.Net Core 3.1处理不支持的全局using语法。
方法3:拆分测试项目(备选方案)
如果上述方法仍有问题,可将针对.Net Core 3.1和.Net 8的测试代码拆分为两个独立项目,分别对应目标框架,从根源上避免跨版本特性冲突。
内容的提问来源于stack exchange,提问作者CaseyHofland
相关产品推荐
相关产品推荐

