在我的公司中,我们有一个使用.netcore v 1.1构建的项目。该项目包含Web服务使用的所有类,该类也在v1.1中构建。我试图在aspx项目中编写API的测试器,并希望引用该类集,无论是作为包含的项目,还是作为DLL。
我将跳过我曾试图使其与包含的项目一起使用的地狱,然后跳到让我的Web应用程序引用dll。当我启动应用程序(正在开发中,VS2017)时,它可以编译,但是尝试从该dll创建对象的第一个实例,我得到此错误:
无法加载文件或程序集'System.Runtime,版本= 4.1.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。 (来自HRESULT的异常:0x80131040)
我环顾了网上,各种各样的问题/答案既无关紧要又没有道理。
我确实添加了绑定重定向,但是并没有改变错误:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
在我看来,这应该是直接使用dll,没有云,没有主要花哨的东西,而只是使用引用的dll(1.1核心)的.net(4.6.1)程序。我承认最近这些天并没有精通DLL的复杂性,但我认为Microsoft正在努力使我们摆脱DLL Hell。
答案 0 :(得分:0)
如here所述,您可能需要针对多个框架。
<PropertyGroup><TargetFrameworks>net452;netstandard1.3</TargetFrameworks></PropertyGroup>
您最终可能会更新到最新的.NET Core或标准版本。
来自github的This sample可能会给您一个更清晰的想法,在this article中提到,它解释了使用两个框架组合项目的不同方案,以及有助于保留它们的方案分开。