.net Assembly.GetManifestResourceNames()因动态程序集而发生异常
如果运行单元测试(mstest),如果调用.net Assembly.GetManifestResourceNames()因动态程序集而发生异常,.net,unit-testing,exception-handling,dynamic-assemblies,.net,Unit Testing,Exception Handling,Dynamic Assemblies,如果运行单元测试(mstest),如果调用assembly.GetManifestResourceNames(),则会出现异常: 动态程序集中不支持调用的成员 这是有问题的代码: Dim assembly As Assembly = Assembly.GetAssembly(Me.GetType()) Dim names = assembly.GetManifestResourceNames() 但如果我理解正确,它应该可以工作,并且只有在我使用AssemblyBuilder.GetManif
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#中是静态的),其中调用了“assembly.GetManifestResourceNames()”,它就可以工作。我不能让它只使用静态,但我找到了另一个解决方案
我的设置:
GetManifestResourceNames()
。这导致了错误
然后,我从logic项目中删除了内容引用,并将其直接添加到我的网站中。没有其他更改,现在它起作用了。我找到了一个解决办法:如果我让过程共享(在c#中是静态的),在调用“assembly.GetManifestResourceNames()”的地方,它就起作用了。你应该把它作为问题的答案发布,然后接受它!:)这对我也有帮助,但是如果有人能解释为什么这个方法需要是静态的,那就太好了。