.net 无法在Visual Studio 2015中加载文件或程序集“System.Memory,Version=4.0.1”

qxgroojn  于 2023-05-19  发布在  .NET
关注(0)|答案(7)|浏览(700)

在几个月的时间里,我对通过删除和重新创建从DB生成模型没有任何问题。从git中拉取后,在尝试创建相同的进程时发生了问题。在第二步(用DB创建连接字符串)之后,在第三步没有进一步进行,并且在app.config文件中没有创建与数据库的连接字符串。我尝试用数据库凭据测试连接,得到以下结果。

当我尝试从模型图中更新特定的表作为替代时,我也会得到以下结果:
System.Data.Entity.Core.EntityException:关闭提供程序连接时出错。有关详细信息,请参见内部异常。---> System.IO.FileNotFoundException:未能加载文件或程序集“System.Memory,Version=4.0.1.0,Culture=neutral,PublicKeyToken= cc 7 b13 ffcd 2ddd 51”或它的某一个依赖项。
我已经重新安装了Entity Framework和npgsql包,并尝试添加所有(相同的)程序集,但没有成功。Stack的类似回答并没有解决我的问题。(我被允许使用当前版本,在VS或其任何软件包中没有进一步的更新。
通知:当我使用API调用当前模型时,我从服务中获得了所有适当的数据(与DB进行适当的通信),但我无法从DB生成新模型。
有什么办法吗?
我在用

  • Windows 10系统
  • VS 2015
  • EntityFrameWork 6.2.0
  • Npgsql 3.1.1
  • .Net v.4.6.2
  • Asp.net

先谢谢你了!

aydmsdu9

aydmsdu91#

如果此错误出现在IIS应用程序(如ASP.NET)中,则很可能是web.config中缺少绑定重定向。
从Nuget安装时,您应该在web.config中看到绑定重定向。
如果将应用程序部署到另一台计算机,但未能在该辅助计算机上设置绑定重定向,则可能会出现此错误。

<dependentAssembly>
  <assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
ebdffaop

ebdffaop2#

使用IL反汇编程序(ildasm.exe)检查输出目录中的版本是否与错误消息中的版本匹配。
我们的软件经常会遇到这样的问题,因为不同的nuget包需要不同的版本,还有一堆不属于nuget的库。
构建过程不考虑对同一库的不同版本的需求。
如果版本不匹配确实是问题的原因,那么您可能需要在app.config中查找绑定重定向,以便将该库的所有旧版本转发到最新版本。
需要将类似下面的内容添加到相关库的<dependentAssembly>节点:
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
通常可以在此处找到ildasm(取决于您的Visual Studio版本)
C:\Program Files(x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\ildasm.exe

myss37ts

myss37ts3#

其实这个答案来自一位前辈,他只是帮忙解决了这个问题!他说,因为解决方案保留旧文件->这个错误,你可以尝试打开每个项目的解决方案,然后删除文件夹'bin'和'obj' ->清洁构建一次!只是一个选项,你可以试试!

vsdwdz23

vsdwdz234#

我正在开发的一个控制台应用程序也遇到了类似的问题。昨晚还好好的。今天我收到错误消息“无法加载文件或程序集'系统.内存,版本= 4. 0. 1. 0...”。直到我进入Visual Studio解决方案的配置管理器,并将活动解决方案平台从“任何CPU”更改为“x64”,我才解决了这个问题。重建后,我的程序现在工作,不再抛出异常。

g9icjywg

g9icjywg5#

由于某些原因,特定的nugget包没有正确安装,我没有选择将其与旧文件进行比较,因为我搞砸了备份文件。我再次克隆了存储库(即使我不得不放弃一些进展)。
步骤:
1.我通过nugget包管理器下载时遇到了.Net版本问题,所以我不得不手动操作。
1.我已经从https://www.nuget.org/packages/System.Memory/下载了.nupkg文件
1.已使用在https://gist.github.com/fex80/976ff887acb825171de6中找到的批处理文件提取dll
1.复制到适当项目的bin文件夹。
1.重建这个项目,最后,它成功了。

deyfvvtc

deyfvvtc6#

在Google上搜索了一下,我发现了这个:https://github.com/GrillPhil/ServerlessRealtimeDemo/issues/1
我不知道这是不是过时了,但是你有没有试过将你的目标版本设置为Windows 10,版本1803(10.0; Build 17134)和Windows 10 Fall Creators Update(10.0; Build 16299)在您的项目属性中?

vfwfrxfs

vfwfrxfs7#

对我来说,这就像从引用中删除System.Memory,然后再添加回来一样简单。奇怪,我不知道为什么会这样。

相关问题