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