gpt4 book ai didi

c# - 使用NUnit出现不一致的可访问性错误,但仅使用MSTest可以正常编译吗?

转载 作者:行者123 更新时间:2023-12-02 10:46:50 24 4
gpt4 key购买 nike

注意:我检查了“询问问题”页面显示的搜索结果的前两页,但没有一个解决我遇到的问题。

更新:经过一整夜的休息后重新启动VS,这种不一致消失了...

返回到以前没有产生错误的代码的提交,甚至可以删除bin和obj文件夹,现在当然可以忠实地产生错误,而我只能通过更改代码来消除它-应该是。

这让我既:D和:(

我不喜欢这种不一致的行为!

为什么使用MSTest编译的代码会突然抛出

Error 1 Inconsistent accessibility: return type 
'ActualProject.ClassHierarchy.BaseJointer' is less accessible than method
'TestProject.ClassHierarchy.BaseJointer_Tests.MakeJointer()'

将NUnit添加到混合中时?

“访问较少”的类:
class BaseJointer
{
public DoveTailJoint MakeDoveTailJoint(
PieceOfWood woodTails, PieceOfWood woodPins)
{ return null; }
}

比方法:
[TestClass]
public class BaseJointer_Tests
{
protected virtual BaseJointer MakeJointer()
{
return new BaseJointer();
}
}

当没有项目引用NUnit时,不会发生此错误。

在两种情况下确实会发生此错误:
  • 解决方案中有两个项目时:ActualProjectTestProjectTestProject已引用MSTest。将对NUnit的引用添加到TestProject时发生错误。
  • 当解决方案中有三个项目时:ActualProjectTestProject仅引用MSTest和NUnitTestProject仅引用NUnit。

  • 第二个让我特别困惑,因为它在 TestProject(的代码)上产生错误,而该错误根本没有引用NUnit。

    仅供引用:ActualProject已将 InternalsVisibleTo设置为TestProject和NUnitTestProject

    为什么仅通过添加对NUnit测试框架的引用,internal就会比protected变得不那么可见?

    最佳答案

    The error does not occur when none of the projects references NUnit.



    我认为那是不正确的。

    此错误应始终发生。 (返回)类型应至少与方法(成员)具有相同的可访问性。

    在可访问性级别的部分排序中, internalprotected这两个级别不可相互比较。看不见 internal成员的人(同一项目中的非派生类型)可以看到 protected成员。看不到 protected的人(派生类型在不同项目中)可以看到 internal成员。

    因此, internal不像 protected那样“至少可访问”。因此,编译时错误是正确且必需的。

    Why would internal become less visible than protected by sole virtue of adding a reference to the NUnit test framework?



    它不应该。您确定在添加项目引用之前强制编译了所有项目吗?也许直到您对它进行了某些操作(无关)后,才能重新编译该项目?

    关于c# - 使用NUnit出现不一致的可访问性错误,但仅使用MSTest可以正常编译吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29188149/

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