【问题标题】:Multi-Target .NET Standard 2.0 and .NET 4.5 fails due to missing .net 4.5 framework由于缺少 .net 4.5 框架,多目标 .NET Standard 2.0 和 .NET 4.5 失败
【发布时间】:2018-07-23 23:30:08
【问题描述】:

在我的开发盒上,我安装了 .net 4.6.2 和 dotnet-sdk-2.1。我最初有 4.0,然后是 4.5,然后是 4.6.2

我能够在一个同时针对 netstandard2.0 和 net45 的项目上运行 dotnet build,如下所示:

<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>

我能够成功构建它并运行单元测试等。我看到 bin 目录包含每个目标框架的子目录并包含所有 DLL。

当我尝试将我的 CI 构建放在基于 Windows Server 2016 构建的 teamcity 代理上时。我收到一个错误:

找不到框架“.NETFramework,Version=v4.5”的参考程序集。

这让我很困惑,因为这台机器安装了 .NET 4.6.2 SDK。 (它还安装了 dotnet sdk 2.1)

做一些谷歌搜索,我看到很多人提到框架应该在字典中:

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\

当我检查 Server 2016 机器时,我看到目录和子目录:v4.6.2 no subdirectories for 4.5

但在我的开发盒上,我看到了各种目录:4.5、4.0、3.5、4.6.2 ...

我无法在 Server 2016 机器上安装 framework 4.5 SDK,因为它已经安装了更高版本。所以看来我不能在那台机器上构建目标 .NET 4.5。

作为健全性检查,我将我的 csproj 文件更改为:

<TargetFrameworks>netstandard2.0;net462</TargetFrameworks>

我能够成功地构建项目。所以构建确实有效,但它需要该机器上的 4.6.2。如果我以net46为目标,它也不起作用。

我在这里做错了什么?
有没有办法让我能够在 Server 2016 机器上将我的项目多定位到 net45?

【问题讨论】:

  • 附带说明,我需要以 .NET 4.5 为目标,因为一些遗留应用程序将使用这个库,所以不幸的是我不能满足于 4.6.2。
  • 您需要为 4.5 安装定位包。我不知道在哪里单独下载它们,但您可以作为 Visual Studio 构建工具的一部分获取它们。

标签: c# .net .net-standard


【解决方案1】:

TL;DR:安装 .NET Framework 4.5 Developer Pack 以构建 .NET Framework 4.5 项目。

您说您的服务器安装了 .NET Framework 4.6.2 开发包,并且您正在尝试使用它构建一个 .NET Framework 4.5 项目。

与每个版本都包含(可以说)以前版本的运行时包不同,您需要为您所针对的框架的确切版本提供开发人员包。

【讨论】:

  • 这是我尝试做的第一件事。但是,每当我尝试安装 .NET 4.5 SDK Developer Pack 时,安装程​​序都会告诉我它无法安装,因为已经安装了更新版本的框架。
  • 看来我正在尝试安装完整的 .NET 4.5 框架,这就是为什么我收到消息说我无法安装它,因为 4.6 已经存在。我找到了这个链接:microsoft.com/net/download/thank-you/net452-developer-pack,它有 4.5.2 开发包。我能够安装它并将我的应用程序构建到 4.5.2。这更好,但现在问题仍然存在,是否可以为 4.5.0 安装开发人员包,或者这只是完整框架的一部分(我无法安装)?
  • @DKhanaf 好像微软把4.5和4.5.1的下载链接都给撤了,所以官方能做的不多。检查 Visual Studio 安装程序是否没有提供下载选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-30
相关资源
最近更新 更多