首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Visual Studio 2017 -无法加载文件或程序集“System.Runtime,Version=4.1.0.0”或其依赖项之一

Visual Studio 2017 -无法加载文件或程序集“System.Runtime,Version=4.1.0.0”或其依赖项之一
EN

Stack Overflow用户
提问于 2017-03-13 09:22:36
回答 28查看 144.3K关注 0票数 128

我正在使用Visual Studio2017,并试图创建一个.Net标准1.5库,并在.Net 4.6.2 nUnit测试项目中使用它。

我收到以下错误...

无法加载文件或程序集“System.Runtime,Version=4.1.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。系统找不到指定的文件。

我尝试过以下几种方法:

  1. Reference标准库作为项目引用。错误:为我的标准库提供了一个NuGet包,并引用了它。错误:类型是System.String,应该是System.String。这是因为类型最终被项目引用,并且它有所有标准types.
  2. Reference NuGet pkg NetStandard.Library的定义。错误:给出与#相同的错误(“ is System.String,NetStandard.Library System.String")。注意:在此之前,我从项目中清除了所有NuGet包,然后只添加了nUnit和NetStandard.Library包(这两个包安装了另外45个包)。

这是一个bug吗?有什么变通办法吗?任何帮助都是非常感谢的。

EN

回答 28

Stack Overflow用户

发布于 2018-03-03 07:28:39

我也有同样的问题,但我没有找到有效的建议解决方案。我对这个问题的解决方案是:检查App.config和packages.config,看看版本是否匹配。

最初我的app.config包含:

代码语言:javascript
运行
复制
<dependentAssembly>
  <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
</dependentAssembly>

但packages.config包含:

代码语言:javascript
运行
复制
<package id="System.Runtime" version="4.3.0" targetFramework="net461" requireReinstallation="true" />

我修改了app.config条目以匹配newVersion的packages.config:

代码语言:javascript
运行
复制
<dependentAssembly>
  <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.3.0" />
</dependentAssembly>

更改后,问题得到了解决。

票数 107
EN

Stack Overflow用户

发布于 2018-09-10 09:59:59

我最近遇到了这个问题,我尝试了很多在这个帖子和其他帖子中提到的东西。我通过nuget包管理器为"System.Runtime"添加了包引用,修复了app.config中的绑定声明,并确保app.configpackage.config具有相同的程序集版本。然而,这个问题仍然存在。

最后,我删除了程序集的<dependentAssembly>标记,问题就出现了。因此,尝试删除app.config中的以下内容。

代码语言:javascript
运行
复制
<dependentAssembly>
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.1.0" />
</dependentAssembly>

编辑:在我将.NET框架更新到4.7.2之后,问题再次浮出水面。我尝试了上面的技巧,但没有起作用。在浪费了很多小时之后,我意识到这个问题是由于app.config中的一个旧的System.Linq引用造成的。因此,删除或更新所有Linq引用也可以解决此问题。

票数 40
EN

Stack Overflow用户

发布于 2017-03-13 09:27:33

当您从.NET 4.x项目引用.NET标准项目时会出现此问题:.NET标准项目的任何nuget包引用都不会作为依赖项引入。

要解决这个问题,您需要确保您的.NET 4.x csproj文件指向当前的构建工具(至少14个):

代码语言:javascript
运行
复制
<Project ToolsVersion="15.0">...

在VS15.3版本中,不再需要了:

在VS2017中有一个known bug,特别是在NuGet 4.0中。

要解决此错误,您需要打开.NET 4.x项目的.csproj文件并添加以下代码片段:

代码语言:javascript
运行
复制
<ItemGroup>
  <PackageReference Include="Legacy2CPSWorkaround" Version="1.0.0">
    <PrivateAssets>All</PrivateAssets>
  </PackageReference>
</ItemGroup>

VS4.x带来了“包参考”--不再有packages.config --但旧的4.x流水线在NuGet 2017发布时并没有完全更新。上面的代码片段似乎“唤醒”了构建系统,使其能够正确地包含依赖项中的包引用。

票数 38
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42755274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档