.csproj
InternalsVisibleToInternalsVisibleTo
是一个 C# 编译器属性,用于控制程序集中内部成员(internal
)的可见性。通过 InternalsVisibleTo
,你可以允许其他程序集访问当前程序集中的内部成员。
在 Visual Studio 2017 及更高版本中,.csproj
文件格式有所变化,支持更灵活的项目配置和依赖管理。
InternalsVisibleTo
,你可以精确控制哪些程序集可以访问内部成员,从而提高代码的封装性和安全性。InternalsVisibleTo
可以方便地实现这一点,而无需修改类的访问修饰符。InternalsVisibleTo
是一个编译器属性,通常在 .csproj
文件中配置。
假设你有一个类库项目 MyLibrary
,其中有一个内部类 InternalClass
,你想让一个单元测试项目 MyLibrary.Tests
访问这个内部类。
在 MyLibrary.csproj
文件中添加以下配置:
<PropertyGroup>
<AssemblyName>MyLibrary</AssemblyName>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<InternalsVisibleTo Include="MyLibrary.Tests" />
</ItemGroup>
问题: 在配置 InternalsVisibleTo
后,单元测试仍然无法访问内部成员。
原因:
InternalsVisibleTo
中的程序集名称拼写正确。InternalsVisibleTo
需要包含程序集的公钥。解决方法:
InternalsVisibleTo
中的程序集名称与实际项目名称一致。InternalsVisibleTo
包含正确的公钥。例如:<InternalsVisibleTo Include="MyLibrary.Tests, PublicKey=0024000004800000940000000602000000240000525341310004000008000000002400005253413100040000080000000010001000f33f33f33f33f33f33f33f33f33f33f" />
通过以上配置和解决方法,你应该能够顺利地在 Visual Studio 2017 中使用 InternalsVisibleTo
属性,并解决相关问题。
领取专属 10元无门槛券
手把手带您无忧上云