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

dre*_*oso 6 c# unit-testing visual-studio

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

using System.Runtime.CompilerServices;

[assembly: InternalsVisibleTo("UnitTests")]

namespace Foobar
{
    internal class Foo
    {
      //...
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我的测试项目可以为类创建测试Foo.问题是我有很多内部类,我不想用它来assembly表达它们.还有另一种方法InternalsVisibleTo("UnitTests")可以为整个项目做这件事吗?

Cod*_*ter 11

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

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

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


Ala*_*anT 5

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

AssemblyInfo.cs
Run Code Online (Sandbox Code Playgroud)

在项目的"属性"部分中

例如

[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: InternalsVisibleTo("UnitTests")]
Run Code Online (Sandbox Code Playgroud)

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

例如

[assembly: InternalsVisibleTo("Foo.Bar.UnitTests")]
Run Code Online (Sandbox Code Playgroud)