如何解决更改解决方案中项目的目标版本的错误?

How to resolve the error from changing target version of a project in a solution?

在我目前做的项目中,解决方案中有几个项目。我不得不更改特定项目的目标版本,该项目负责处理项目的特定 API,以安装某些 Nuget 包。

现在,当我尝试 运行 项目时,会出现一些 .dll 未找到的错误。

我该如何解决这个问题?
我的项目基于 .net 框架,我使用的是 Visual Studio 2017.

我的实际 Target 版本是 .NET Framwork 4.5.1。 我不得不将它更改为 4.6.1,因为我试图安装 IBM.Watson.NaturalLanguageUnderstanding.v1 -Version 4.2.1 包。

错误是这样的:

Metadata file 'location\ProjectName.dll' could not be found.

My actual Target version was .NET Framwork 4.5.1. I had to change it to 4.6.1 since the package I was trying to install IBM.Watson.NaturalLanguageUnderstanding.v1 -Version 4.2.1 package.

我通过尝试在针对 .netframework 4.6.1 的新控制台应用程序上安装 nuget 来重现该问题,但失败了

这就是问题所在,IBM Watson NaturalLanguageUnderstanding兼容.NETStandard 2.0 Specification 这意味着理想情况下您需要以 4.6.1 (*2) 为目标,但这里有问题(如此处所解释 MSDN




2种解决方法

  • 目标 .NetFramework 4.7.1 按照上述 MSDN 的建议 OR
  • 如果您想使用 4.6.1,则需要将其添加到您的 .CSPROJ 文件中
<PropertyGroup>
     .
     .
  <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
  <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
</PropertyGroup>

要解决这些问题,请更改依赖于已更改目标框架的项目的项目的目标框架。在大多数情况下,不会有太大问题,因为 Microsoft 提供了向后兼容性。第三方 NuGet 包可能存在一些问题。此外,部署时可能会出现一些参考错误。