System.Spatial程序集的问题

时间:2014-12-19 20:23:56

标签: c# .net visual-studio-2012

我最近尝试在本地运行我的应用程序以测试某些内容,但由于程序集问题,我无法做到这一点。具体做法是:

  

无法加载文件或程序集&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来更新这个项目的包),或者为什么清单已关闭。

任何人都可以了解这里发生的事情,如何造成这种情况,以及我可以采取的其他可能措施来纠正它?

6 个答案:

答案 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引用,那么就这样做:

  1. 打开packages.config以查看所有包
  2. 保存原始packages.config的副本以供参考
  3. 打开程序包管理器控制台
  4. 在PM&gt;运行Uninstall-Package System.Spatial
  5. 构建并运行或部署以查看问题是否消失。如果真的需要引用,它就不会构建。
  6. 如果项目没有参考而没有建立,PM&gt; Install-Package System.Spatial -Version [version](使用来自packages.config副本的版本号)
  7. Nuget非常适合管理软件包的合法更新,但是当安装了许多未使用的软件包并且去年版本的MVC或.NET中的单个依赖项将您引入DLL地狱时,这很痛苦。

答案 3 :(得分:1)

我通过删除项目中obj文件夹的内容并重建来解决这个问题。

答案 4 :(得分:1)

上述任何内容都没有帮助我。 花了一天时间来解决这个问题,我的解决方案就是以下两个步骤:

  • 打开程序包管理器控制台窗口
  • 输入PM> Install-Package WindowsAzure.Storage -Version [your_version_number]-preview -Pre

这应该自动使所有依赖项适合您当前的azure版本

答案 5 :(得分:1)

我删除了项目中的引用,因为它没有被使用。这为我解决了。