我试图使用InternalsVisibleTo assembly属性在一个.NET类库对我的单元测试项目可见.出于某种原因,我一直收到一条错误消息,上面写着:

"MyClassName"由于其保护级别而无法访问

两个程序集都已签名,并且我在属性声明中列出了正确的密钥.有什么 idea 吗?

推荐答案

是否绝对确定在属性中指定了正确的公钥?

[assembly: InternalsVisibleTo("MyFriendAssembly,
PublicKey=0024000004800000940000000602000000240000525341310004000001000100F73
F4DDC11F0CA6209BC63EFCBBAC3DACB04B612E04FA07F01D919FB5A1579D20283DC12901C8B66
A08FB8A9CB6A5E81989007B3AA43CD7442BED6D21F4D33FB590A46420FB75265C889D536A9519
674440C3C2FB06C5924360243CACD4B641BE574C31A434CE845323395842FAAF106B234C2C140
6E2F553073FF557D2DB6C5")]

大约是320个十六进制数字.不确定为什么需要指定完整的公钥——可能只需要在其他程序集引用中使用的公钥令牌,就更容易让人伪造朋友程序集的身份.

.net相关问答推荐

使用托管身份而不是检测密钥配置Application Insights

EF Core IEntityTypeConfigurations:从数据库提取数据后相关对象为空

无法在 Blazor Server 应用程序中触发 InputRadio 的 onchange 事件

IIS 发布 ASP.NET Core 应用程序而不关闭 IIS 网站

为什么(真的吗?)List 实现所有这些接口,而不仅仅是 IList

在 ASP.NET MVC 中我可以在哪里放置自定义类?

使用字典作为数据源绑定组合框

将 BitmapImage 转换为 Bitmap,反之亦然

Int32.ToString() 是特定于文化的吗?

不同命名空间中的部分类

使用 Windows 服务和 C# 检测 USB 驱动器插入和移除

简单委托(委托)与多播委托

C# 属性实际上是方法吗?

如果需要,将方案添加到 URL

如何对无法加载的 VSTO 插件进行故障排除?

Visual Studio 类图不显示关系

合并两个(或更多)PDF

在 .Net 中调用 Web 服务时绕过无效的 SSL 证书错误

任何人都知道缺少枚举通用约束的好方法吗?

在 try/catch/finally 中等待的一个很好的解决方案?