我知道可以通过以下方式更改可见性:
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("UnitTests")]
namespace Foobar
{
internal class Foo
{
//...
}
}
所以我的测试项目可以为类Foo
创建测试。问题是我有很多内部类,我不想用assembly
表达式弄脏它们。是否有另一种方法可以为整个项目执行此操作InternalsVisibleTo("UnitTests")
?
答案 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")]