【发布时间】:2015-03-29 20:08:10
【问题描述】:
我的 C# 解决方案中有 3 个项目。
- 签名
- 结构
- 测试
签名具有公共和内部接口。 此外,它有
[assembly: InternalsVisibleTo("Structures")]
[assembly: InternalsVisibleTo("Tests")]
在 AssemblyInfo.cs 中。
结构具有公共类和内部类,并且
[assembly: InternalsVisibleTo("Tests")]
在 AssemblyInfo.cs 中。
Tests 有下一个来源:
<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 的内部类编写了一个单元测试。运行,得到下一个结果:异常:
类型 Signatures.InterfaceX 对 DynamicProxy 不可见。无法为不可访问的类型创建代理。将类型设为 public 或 internal 并使用 [assembly: InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)] 属性标记您的程序集。
似乎合乎逻辑。我加了
[assembly: InternalsVisibleTo("InternalsVisible.DynamicProxyGenAssembly2")]
到签名和结构项目的装配信息。运行,得到下一个结果:异常:
程序集“DynamicProxyGenAssembly2, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null”中的类型“Castle.Proxies.IReminiscenceableDataTableProxy”正在尝试实现无法访问的接口。
我希望它会有所帮助,但它没有。 它只是更改了异常消息。
如何解决我的问题?
【问题讨论】:
标签: c# unit-testing nunit moq internals