我的C#解决方案中有3个项目 .
-
签名
-
结构
-
测试
签名具有公共和内部接口 . 它也有
[assembly: InternalsVisibleTo("Structures")]
[assembly: InternalsVisibleTo("Tests")]
在AssemblyInfo.cs中 .
结构有公共和内部类和
[assembly: InternalsVisibleTo("Tests")]
在AssemblyInfo.cs中 .
测试有下一个来源:
<packages>
<package id="Moq" version="4.2.1409.1722" targetFramework="net45" />
<package id="NUnit" version="2.6.4" targetFramework="net45" />
<package id="NUnitTestAdapter" version="1.2" targetFramework="net45" />
</packages>
在packages.config中作为NuGet包 .
我从Signatures和Structures的内部类中为内部接口编写了一些单元测试 . 运行,并有下一个结果:异常:
Type Signatures.InterfaceX is not visible to DynamicProxy. Can not create proxy for types that are not accessible. Make the type public, or internal and mark your assembly with [assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)] attribute.
似乎合乎逻辑 . 我将[assembly:InternalsVisibleTo(“InternalsVisible.DynamicProxyGenAssembly2”)]添加到Signatures and Structures项目的装配信息中 . 运行,并有下一个结果:异常:
Type 'Castle.Proxies.IReminiscenceableDataTableProxy' from assembly 'DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' is attempting to implement an inaccessible interface.
这是有帮助的,但没有 . 仅更改异常消息 .
如何解决我的问题?
1 回答
建议的修复消息使用const / static字段作为程序集名称:
您使用的字符串与程序集名称不对应:
将其更改为:
您可以在错误消息中看到实际的程序集名称(应显示在
InternalsVisibleTo
中):