我现在一直在研究这个问题并且没有得到解决。我收到以下错误消息:
Compiler Error Message: CS1705: Assembly 'My.Model, Version=1.1.4422.23773, Culture=neutral,
PublicKeyToken=bfde95ba233094b2' uses
'Common, Version=3.3.4273.24368, Culture=neutral, PublicKeyToken=bfde95ba233094b2'
which has a higher version than referenced assembly
'Common, Version=3.3.4269.17112, Culture=neutral, PublicKeyToken=bfde95ba233094b2'
c:\WINDOWS\assembly\GAC_MSIL\Common\3.3.4269.17112__bfde95ba233094b2\Common.dll:
(Location of symbol related to previous error)
Web服务器正在运行Server 2003.我去了c:\ windows \ assembly并且确实注意到列出了3个版本的Common.dll。列出的最高版本是3.3.4269.17112
我将版本号为3.3.4273.24368的dll复制到汇编目录中。然后我重新编译并重新部署了我的代码(可能是矫枉过正但是很好)。当我在新会话中打开浏览器并再次访问网站URL时,我仍然收到相同的消息。
我可以使用Windows资源管理器并验证现在还列出了更高版本的Common.dll。
我还可以考虑解决此问题?我不想更改程序集中的引用以指向旧版本。
答案 0 :(得分:41)
(除了Jakub的想法)
我遇到了这个错误,因为“Rebuild”并没有真正重建 关闭Visual Studio,真的去删除bin文件夹,然后重建,它可能会更好。
此外,有时Visual Studio会引用引用,因此请检查HintPath
文件中的.csproj
。
答案 1 :(得分:33)
3个想法让你尝试:
答案 2 :(得分:30)
如果你正在使用NuGet,那么值得去'管理解决方案的NuGet包,找到导致问题和更新的软件包。然后它应该将所有软件包带到最新版本并解决问题。
值得一试,因为它快速而简单。
答案 3 :(得分:25)
我的问题是我有2个项目引用了具有不同版本的同一个dll的2个不同副本。我通过删除它们并确保它们引用相同的dll文件来修复它。
答案 4 :(得分:11)
一个可能的原因是第二个程序集安装在GAC中,而具有更高版本号的第一个程序集添加到项目的引用中。要验证这一点,请双击项目引用中的程序集,并检查对象浏览器中是否有另一个具有相同名称的程序集。
如果是这种情况,请使用gacutil.exe实用程序从GAC卸载第二个程序集。例如,如果这些是64位程序集:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64\gacutil.exe -u <assembly_name>
答案 5 :(得分:2)
转到参考并添加导致问题的dll文件的新引用,并确保所有dll都是针对相同版本编译的。它适用于我,我希望它也适合你。
答案 6 :(得分:1)
我的团队刚刚在构建环境中遇到了这个问题。问题是由于&lt; HintPath&gt;的差异造成的。 .csproj文件的元素。
我们的通用程序集具有指向包含引用程序集的目录的正确相对路径。依赖程序集具有来自以前的目录结构的路径。该解决方案在dev机器上成功编译,因为GAC解决了依赖对C:\ Program Files中安装的正确版本的引用。构建环境有一个传统的程序集安装(即使它应该没有),它会回落到错误状态。更新&lt; HintPath&gt;在文本编辑器中纠正了这个问题。
答案 7 :(得分:1)
如果解决方案中的多个项目中的nuget包有所不同,就会出现问题。
您可以通过将 nuget软件包更新为通用版本 并使用解决方案中的所有项目来解决此问题
答案 8 :(得分:0)
我手动删除了 bin 和 obj 文件夹,重新构建,并且成功
答案 9 :(得分:0)
在我的方案中,我为dotnetCore应用程序编辑了.csproj文件。我注意到 TargetFramework 标签的值为 netcoreapp2.1 ,而 RuntimeFrameworkVersion 标签的值为 2.0.0 。因此,我将 RuntimeFrameworkVersion 更改为 2.1.0 ,保存,重新启动VS并重新构建,然后它解决了错误。
希望这对您有帮助...
祝你好运
杉山
答案 10 :(得分:0)
在将Episerver Find添加到我们的站点并为Episerver Find安装了相应的NuGet软件包之后,我得到了这个。
修复很容易:还要更新所有与Episerver相关的加载项(即使它们似乎无关:CMS,CMS.TinyMCE,CMS.UI等)
更新所有可能的Episerver附加组件并重新编译后,错误消失了。
答案 11 :(得分:0)
我有同样的错误。在将Microsoft.AspNetCore.ALL
安装到测试项目中后,我修复了该错误。
答案 12 :(得分:0)
我在UnitTestingProject中遇到了相同的问题,在MainProject中我使用的是“ System.Web.Mvc,版本= 3.0.0.0”,在UnitTestingProject中我使用的是“ System.Web.Mvc,版本= 3.0.0.1”
在
<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.Mvc.3.0.50813.1\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
答案 13 :(得分:0)
网站项目中的引用存储在其web.config文件中。更新那里的引用以修复错误。
在意识到我忘记了web.config文件中的引用之前,我花了一些时间查看解决方案中的所有引用。
答案 14 :(得分:0)
对于SharePoint,请确保在根文件夹下没有带有DLL的“bin”文件夹,如果是这样,只需将其删除即可。 (并在VS中将“复制本地”更改为false。)
答案 15 :(得分:0)
手工制作的dll集合文件夹
如果解决方案有来自不同库的dll文件的垃圾文件夹
lib
,source
,libs
等
如果您在Visual Studio中打开解决方案(第一次),则可能会遇到此问题。并且你的dll收集文件夹会以某种方式丢失,或者错过了具体的dll文件。
Visual Studio将以静默方式尝试将dll的引用替换为自己的内容。如果VS将成功,那么新的引用将持续用于本地解决方案。不适用于其他克隆/结账。
即。您的<HintPath>
将被忽略,您的项目文件(.csproj)将不会被更改
作为我的一个例子
<Reference Include="DocumentFormat.OpenXml, Version=2.0.5022.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\lib\DocumentFormat.OpenXml.dll</HintPath>
</Reference>
DocumentFormat.OpenXml
将引用C:\Program Files (x86)\Open XML SDK\V2.5\lib
而不是solution\..\lib
文件夹。
快速解决方法
正确的解决方法是迁移到NuGet包管理器。
答案 16 :(得分:0)
答案 17 :(得分:0)
有类似的问题。我的问题是我在同一个解决方案中有几个项目,每个项目都引用了DLL的特定版本,但版本不同。解决方案是设置特定版本&#39;在所有引用的所有属性中为false。
答案 18 :(得分:-1)
在我们的团队中,我们使用git在不同的计算机上工作。有人更新了dll
而我没有。我刚刚更新了我的依赖项引用并解决了问题。
答案 19 :(得分:-1)
在您的项目中找到引用 System.Web.Mvc 检查版本。
然后右键单击引用 - &gt;程序集并搜索system.web.mvc和设置它。
问题导致这些程序集的不同版本。
编辑:然后选择管理NuGet包并安装更新 (如果您有多个项目也会安装更新。)
重要更新 Microsoft.AspNet.Mvc 和 Microsoft.Net.Compilers 不要忘记!
答案 20 :(得分:-3)
我遇到了类似的问题,我创建了一个DLL,即A.dll,它引用了其他DLL,即B.dll。
我创建了一个应用程序C.exe并引用了DLL A.dll和B.dll。
解决方案 - 在从c.exe中删除B.dll的引用时,我能够解决问题。
希望这有帮助。