【问题标题】:VB.NET Import from assembly failedVB.NET 从程序集中导入失败
【发布时间】:2016-08-09 20:08:13
【问题描述】:

我在我的 Web 项目中向 ASP.NET 文件中添加了一些代码,但我遇到了需要添加引用的错误。我在 VS 菜单 Website -> Add Reference... 中添加了所需的参考。

现在我得到一个错误:

BC31091 Import of type 'ITransactionalMapper' from assembly or module 'MyAssembly.Core.dll' failed. Web(7)  C:\Projects\project\src\PublicWeb\Web\MyFile.aspx.vb

我查看了 Web 项目的引用列表,但我添加的引用不在列表中。我尝试再次添加它,它说:

The Web site is already referencing the assembly 'MyAssembly.Core.dll'

所以我决定要删除它并尝试再次添加它。如果它甚至被添加到某个地方,我找不到删除它的方法。我查看了 Web.config 文件,但在程序集列表中没有看到它。

我不太确定问题出在哪里或为什么会出现问题。我添加的代码正在使用另一个引用的程序集,而 that 程序集也可能正在引用我尝试添加的程序集。据我所知,ITransactionalMapper 甚至不位于 MyAssembly.Core.dll 内,它位于 MyAssembly.Database.dll 内。

我正在使用 VS 2015。该项目的目标是 .NET 4.5


注意:如果我在 VS 2012 中打开项目(该项目实际上是 VS 2012 项目),我反而会收到错误:

Overload resolution failed because no accessible 'Put' accepts this number of arguments.

但它应该接受这个数字。是 Put 有一个无法找到的 ITransactionalMapper 参数(下图中的第一个)。


更新:VS 2015 中显示了两个必要的引用,但当我在 VS 2012 中查看 Web 项目的引用时却没有。知道为什么会发生这种情况吗?


我注意到一堆构建警告说 MyAssembly.Core.dll 有冲突的引用。

Found conflicts between different versions of the same dependent assembly that could not be resolved.

它还提到了版本。但我仍然没有在任何地方看到这些参考资料。

【问题讨论】:

  • VS2012 和 VS2015 使用不同版本的 msbuild,因此会产生不同的错误。如果 ITransactionalMapper 依赖于 MyAssembly.Core 中的某些内容,那么它将需要引用。引用存储在项目文件 .vbproj 中,而不是 web.config 中。如果您想删除或查看重复项,请在此处进行。如果您在解决方案资源管理器中单击“显示所有文件”,则会列出您项目中的引用。
  • @FloatingKiwi 非 Web 项目的引用始终可见。在 Web 项目中没有“显示所有文件”按钮,因为没有隐藏文件。解决方案资源管理器中未显示 Web 的引用。
  • @FloatingKiwi 映射器类在MyAssembly.Core.dll 中,调用Put 的类在MyAssembly.Some.Other.Core.dll 中。会不会是这个原因?
  • @FloatingKiwi 另外,Web 项目没有 vbproj 文件。

标签: .net vb.net visual-studio import reference


【解决方案1】:

我引用的是为不同版本的MyAssembly.Core.dll 构建的MyAssembly.Some.Other.Core.dll 版本。我尝试了另一个版本,它可以工作。

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多