如果我运行单元测试(mstest),如果我调用assembly.GetManifestResourceNames()
,我会得到异常:
动态程序集不支持调用的成员。
这是有问题的代码:
Dim assembly As Assembly = Assembly.GetAssembly(Me.GetType())
Dim names = assembly.GetManifestResourceNames()
但是,如果我正确理解文档,它应该可以工作,并且只有当我使用AssemblyBuilder.GetManifestResourceNames()
我才应该得到这个异常。
如果我尝试单步执行 .NET 源,则会收到以下消息:
没有可用的来源 mscorlib.dll!System.Reflection.Emit.InternalAssemblyBuilder.GetManifestResourceNames()
为什么会引发此异常? 我错过了什么吗?
我忘了提到我在测试中使用 Moq(带有选项 mock.CallBase = True
)。
我找到了一个解决方法:如果我使过程共享(在 c# 中是静态的),其中"程序集。GetManifestResourceNames()' 被调用,它可以工作。
我无法仅使用静态使其工作,但我确实找到了另一种解决方案。
我的设置:
- MVC 项目 (网站) (参考文献 2)
- 逻辑项目(参考文献3)
- 内容库(仅限文件)
我的网站调用了逻辑项目中的方法,该方法尝试从内容库访问GetManifestResourceNames()
。这导致了错误。
然后,我从逻辑项目中删除了内容引用,并将其直接添加到我的网站。没有其他变化,现在它起作用了。