【发布时间】: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