多目标 .NET Core 控制台的 Azure DevOps (VSTS) 托管 macOS 代理失败

Posted

技术标签:

【中文标题】多目标 .NET Core 控制台的 Azure DevOps (VSTS) 托管 macOS 代理失败【英文标题】:Azure DevOps (VSTS) Hosted macOS agent fails for Multi-Target .NET Core Console 【发布时间】:2019-03-31 07:06:44 【问题描述】:

我有跨平台的控制台包,它多目标 .NET Full 和 .NET Core,我成功地使用 Azure DevOps Hosted VS2017 代理来触发 CI 构建。托管 VS2017 代理一切正常。

但是,一旦我选择托管 macOS 代理来触发构建并测试 macOS,它在构建步骤中就会失败,并出现以下错误。

错误 MSB3644:未找到框架“.NETFramework,Version=v4.6.1”的参考程序集。要解决此问题,请为此框架版本安装 SDK 或 Targeting Pack,或者将您的应用程序重新定位到已安装 SDK 或 Targeting Pack 的框架版本。

我可以在构建管道中安装 .NET 核心 SDK。但是如何在我的构建管道中安装 .NETFramework SDK 作为构建任务?

还有其他方法可以解决托管 macOS 构建代理的构建问题吗?

【问题讨论】:

【参考方案1】:

还有其他方法可以解决托管 macOS 构建代理的构建问题吗?

恐怕没有办法解决托管 macOS 构建代理、AFAIK 的构建问题,.net 框架仅适用于 Windows,无法在 Windows 之外使用完整框架。

查看类似线程here:

在 Mac 上构建 ASP.NET MVC 项目是不可能的 基于 .NET Core 或 Mono。因此,如果您的项目当前正在定位 .NET Framework 4.x 上的 ASP.NET,您要么必须继续使用 窗户。

this document 可能有助于解释。

希望这会有所帮助。

【讨论】:

谢谢,现在说得通了。我一直在尝试将 .NET Full 和 .NET Core 用于多目标控制台应用程序。这仅适用于 Windows,对于非 Windows,此应用程序将失败,因为 .NET full 不是跨平台的。我想为了测试,我必须创建一个仅针对 .NET 核心的并行控制台,然后在 macOS/Linux 环境中对其进行测试。

以上是关于多目标 .NET Core 控制台的 Azure DevOps (VSTS) 托管 macOS 代理失败的主要内容,如果未能解决你的问题,请参考以下文章

Azure AD 多租户,.Net Core Web API 与 JWT 令牌

.NET Core WebJob 控制台应用程序 CI/CD 使用 Azure DevOps Pipelines

将 .NET Core 控制台应用程序部署到 Azure WebJobs 时加载 hostpolicy.dll 时出错

ASP.NET Core Web 应用程序作为 Azure 服务总线使用者/接收器

ASP.NET Core 3.1 Web API(版本控制)和 Swagger UI 在发布到 Azure 后由于 MvcJsonOptions 而失败

如何在 .NET Core 3.0 SDK 上构建多目标 .NET 5 和 .NET Core 3.1