不同的DLL,在控制台应用程序和网站中应该是相同的。

12
我有一个控制台应用程序和网站,它们都使用相同的 System.Runtime.Serialization.Primitives.dll 组件。但是,当我运行网站时,我的程序集在右侧,但如果我运行慰问应用程序,则网站的 DLL 转到左侧并导致错误。两个项目都是 v4.7,并且在将所有项目升级到该框架之后才开始出现此问题。
这两个项目都包含此内容
  <dependentAssembly>
    <assemblyIdentity name="System.Runtime.Serialization.Primitives" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
  </dependentAssembly>

在此输入图像描述


你标记了编译器警告吗?你有任何警告吗?有很多事情需要检查,你需要提供更多信息,但是你可能会将目标对准错误的地方。 - Keith Nicholas
这似乎是包管理器出现了错误。其他人也遇到了类似的错误,但似乎没有什么作用。我在两个项目中使用完全相同的DLL并进行引用,但在编译时DLL却不同。 - Mike Flynn
这两个项目是否针对相同版本的 .net framework? - Keith Nicholas
相同的架构类型吗?等等。 - Keith Nicholas
配置文件中没有被覆盖吗? - Keith Nicholas
显示剩余4条评论
2个回答

8

解决同一DLL不同引用的问题的方法:

步骤1:在Visual Studio 2015上创建一个新的Web应用程序。

步骤2:检查是否在这个新的Web应用程序项目中仍然存在该问题。


如果答案是“否”,并且问题不再存在,则:
步骤1:在原始网站(第一个/有缺陷的Web应用程序)项目的“引用”部分中跟踪导致问题的程序集引用。
步骤2:删除该引用
步骤3:添加新引用,并从“浏览”选项中引用程序集,而不是检查已经可用的引用。(最好可以从工作的控制台项目中复制程序集DLL引用路径)
步骤4:清理然后重新构建项目。
如果问题仍然存在,则是您执行的框架升级的问题。
如果问题已解决,则太棒了,您已经解决了它!
现在,如果问题在您创建的新Web应用程序项目中没有持续存在,但仅存在于旧网站/应用程序中,则意味着在框架升级到v4.7后,初始问题是由于DLL引用损坏造成的。即使在您的网站/应用程序和新创建的Web应用程序中更新了引用,如果引用DLL的问题仍然存在,则表示您的v4.7框架升级已损坏,并且您可能需要再次卸载和安装(或者仅简单地修复)框架升级,但我更喜欢第一种选择。由于您在安装.Net v4.7后安装了Visual Studio 2017,因此IDE已经自行解决了微妙的问题。而您的Visual Studio 2015已经安装,但框架升级到v4.7出现了某些问题,您的2015 IDE无法在内部解决微妙的问题。如果问题得到解决,则卸载一个版本的IDE,在同一系统上保留Visual Studio 2015和2017没有任何意义。(这只是一个建议)

额外帮助材料:

微软为不同版本的Visual Studio提供了专门的.NET Framework v4.7安装程序页面,可以从这里访问:针对.NET平台。 如果您想继续使用VS2015,您可能需要从上述链接下载一个新的.NET framework v4.7副本并安装它。


3

由于我使用的是2015版,因此我升级到了Visual Studio 2017。 升级后,一切都开始正常工作,并且很多这些引用问题都消失了。


你是否尝试从目标.NET平台网站安装全新的.NET v4.7版本,就像我在解决方案中提到的那样?如果你想继续使用Visual Studio 2015,请尝试一下并告诉我结果。 - Somdip Dey
你明白我已经解决了这个问题,所以不需要再评论了。 - Mike Flynn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接