Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net Assembly.GetManifestResourceNames()因动态程序集而发生异常_.net_Unit Testing_Exception Handling_Dynamic Assemblies - Fatal编程技术网

.net Assembly.GetManifestResourceNames()因动态程序集而发生异常

.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

如果运行单元测试(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#中是静态的),其中调用了“assembly.GetManifestResourceNames()”,它就可以工作。

我不能让它只使用静态,但我找到了另一个解决方案

我的设置:

  • MVC项目(网站)(参考文献2)
  • 逻辑项目(参考文献3)
  • 内容库(仅限文件)
  • 我的网站调用了logic项目中的一个方法,该方法试图从内容库访问
    GetManifestResourceNames()
    。这导致了错误


    然后,我从logic项目中删除了内容引用,并将其直接添加到我的网站中。没有其他更改,现在它起作用了。

    我找到了一个解决办法:如果我让过程共享(在c#中是静态的),在调用“assembly.GetManifestResourceNames()”的地方,它就起作用了。你应该把它作为问题的答案发布,然后接受它!:)这对我也有帮助,但是如果有人能解释为什么这个方法需要是静态的,那就太好了。