我最近尝试在本地运行我的应用程序以测试某些内容,但由于程序集问题,我无法做到这一点。具体做法是:
无法加载文件或程序集&SystemSpatial,Version = 5.2.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个 依赖。系统找不到指定的文件。
所以,我在这里逛了一圈,发现了一个引用,要么手动添加配置文件,要么通过NuGet卸载并重新安装。我们不使用NuGet来处理任何事情,因此我担心更改应用程序以开始这样做。因此,我开始编辑配置文件以尝试解决此问题。 我添加了以下行,并解决了无法加载System.Spatial问题:
<dependentAssembly>
<assemblyIdentity name="Microsoft.Data.Edm" publicKeyToken="31bf3856ad364e35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0" />
</dependentAssembly>
但现在我收到了这条消息:
无法加载文件或程序集&#39; Microsoft.Data.Edm&#39;或其中一个 依赖。定位程序集的清单定义没有 匹配程序集引用。 (HRESULT异常:0x80131040)
对于版本更改,publicKeyToken可能不准确吗?我不确定首先打破程序集发生了什么(因为我没有修改代码,也没有使用NuGet来更新这个项目的包),或者为什么清单已关闭。
任何人都可以了解这里发生的事情,如何造成这种情况,以及我可以采取的其他可能措施来纠正它?
答案 0 :(得分:2)
我遇到了同样的问题。删除System.Spatial(版本5.6.3)引用并添加System.Spatial(版本5.6.4)将解决此问题。
答案 1 :(得分:1)
我认为您正在使用手动安装的共享库(使用gac-util),如果是这样,您可以通过单击引用包含库 - >添加引用 - >浏览然后浏览到此位置 C:\ WINDOWS \ Microsoft.NET \装配\ GAC_32 \ yourlibrary 无论如何,你可能应该避免更改.config文件,除非你知道你正在做什么。
答案 2 :(得分:1)
MVC 4项目所需的最小数量包应该是大约20个。如果你有很多未使用的引用,例如System.Spatial引用,那么就这样做:
Nuget非常适合管理软件包的合法更新,但是当安装了许多未使用的软件包并且去年版本的MVC或.NET中的单个依赖项将您引入DLL地狱时,这很痛苦。
答案 3 :(得分:1)
我通过删除项目中obj文件夹的内容并重建来解决这个问题。
答案 4 :(得分:1)
上述任何内容都没有帮助我。 花了一天时间来解决这个问题,我的解决方案就是以下两个步骤:
PM> Install-Package WindowsAzure.Storage -Version [your_version_number]-preview -Pre
这应该自动使所有依赖项适合您当前的azure版本。
答案 5 :(得分:1)
我删除了项目中的引用,因为它没有被使用。这为我解决了。