Assembly.GetManifestResourceNames() 异常,因为动态程序集



如果我运行单元测试(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()' 被调用,它可以工作。

我无法仅使用静态使其工作,但我确实找到了另一种解决方案。

我的设置:

  1. MVC 项目 (网站) (参考文献 2)
  2. 逻辑项目(参考文献3)
  3. 内容库(仅限文件)

我的网站调用了逻辑项目中的方法,该方法尝试从内容库访问GetManifestResourceNames()。这导致了错误。

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

相关内容

  • 没有找到相关文章

最新更新