是否可以使用某些配置使所有内部类对C#中的另一个程序集可见?

时间:2016-11-21 14:15:35

标签: c# visual-studio unit-testing

我知道可以通过以下方式更改可见性:

using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("UnitTests")]

namespace Foobar
{
    internal class Foo
    {
      //...
    }
}

所以我的测试项目可以为类Foo创建测试。问题是我有很多内部类,我不想用assembly表达式弄脏它们。是否有另一种方法可以为整个项目执行此操作InternalsVisibleTo("UnitTests")

2 个答案:

答案 0 :(得分:10)

[InternalsVisibleTo]属性是一个程序集级属性,这意味着如果您定义一次,它就已经应用于整个程序集。

因此,您展示的行只需要在项目中只包含一次以应用于所有内部类型。

我建议将其移动到指定其他程序集级属性的位置:在项目的Properties文件夹中的AssemblyInfo.cs文件中。

答案 1 :(得分:5)

要扩展@CodeCaster的注释,该属性应放在

AssemblyInfo.cs

在项目的“属性”部分中

e.g。

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: InternalsVisibleTo("UnitTests")]

您还需要完全限定程序集名称

e.g。

[assembly: InternalsVisibleTo("Foo.Bar.UnitTests")]