【问题标题】:Can I run Visual Studio and .Net Framework in a docker container on Mac?我可以在 Mac 上的 docker 容器中运行 Visual Studio 和 .Net Framework 吗?
【发布时间】:2020-06-03 06:46:42
【问题描述】:

我有一个用于工作的 Visual Studio Code 应用程序(Angular/.Net Core Web Api 应用程序),当我通过 VPN 连接到我的公司网络时,我可以在我的个人 Mac 上开发、调试和运行它。

我的公司站点上还有一台台式电脑和一个远程工作服务器,我可以通过 RDP 访问它来完成我的所有工作,但我更喜欢我的个人 Mac!

我现在需要创建一个 .Net Web Api 应用程序(非 .Net Core),我的 .Net Core 应用程序需要通过 http 调用(对于不会在 .Net Core 上运行的 WCF Web 服务),所以我创建了我的一台 Win PC 工作机器上的 Visual Studio .Net Framework web Api 应用程序,我可以在我的 PC 但不是我的 Mac 上并排运行两个项目(Visual Studio Code 和 Visual Studio)。

有什么方法可以让 .Net Framework 应用程序在我的 Mac 上运行?前任。在 Docker 容器中,或者甚至只是在容器中运行应用程序,以便我的 .Net Core 应用程序可以调用它?

我有另一个想法,但不确定是否可能 - 当我在我的 Mac 上运行 .Net Core 应用程序时,我通过 VPN 连接到我的公司网络。如果我在我的工作桌面或远程服务器上运行 .Net Web 应用程序,我可以从我的 Mac 连接到它吗?

【问题讨论】:

    标签: docker visual-studio-code vpn visual-studio-2019


    【解决方案1】:

    Visual Studio Code 是一个 JavaScript 应用程序,这使它成为可移植的好东西(但也有点慢)。 Visual Studio 框架是另一种动物。一个非常领土的。以 .NET 框架为目标的已编译应用程序绝对不会在 MacOS、Linux、Solaris 或......任何非 Windows 上运行。 .NET 核心可移植到 MacOS。

    根据这篇文章 (Can you install and run apps built on the .NET framework on a Mac?),可以选择使用 Mono 重新编译代码并在 Mac 上运行它。不幸的是,它不支持完整的 .NET Framework,并且可能需要对代码进行一些重要的修改才能使其工作。如果你走这条路,你要么受限于 Mono 支持的框架区域,要么必须维护相同代码库的 2 个不同版本。这两个选项对我来说都不是很好。

    就在 Docker 中运行而言,这是行不通的。由于使用内核命名空间为进程和其他系统资源提供隔离,Docker 从根本上与主机操作系统相关联。它不提供 .NET Framework 所需的相同内核 API。

    如果您绝对确定要在 Mac 上进行开发工作,最好的选择可能是使用运行完整 Windows 副本的厚虚拟机。这有一个明显的缺点,即更昂贵(无论是在系统资源方面,还是在软件许可成本方面),而且你最终还是使用 Windows(所以你还不如只是 RDP 到一台真正的 Windows 机器) .可能不是您希望的答案(我希望有人列出我错过的一些选项),但我认为您最终会在 Windows 中做一些工作。

    【讨论】:

    • 只是好奇,这个链接是关于什么的:hub.docker.com/_/microsoft-dotnet-framework-samples
    • 可以将 .NET 框架容器化,但您需要从 Windows 主机执行此操作。我必须小心地说“不会在 MacOS、Linux 或 Solaris 上运行……”而不是“不会在 Docker 中运行”,因为那是不真实的。但是,对于您的用例,这可能毫无用处。您发布的链接似乎没有提及这一点,但这一个说清楚了:docs.microsoft.com/en-us/dotnet/architecture/microservices/…
    • 带有 .Net Framework 的容器不能在 Mac 上运行?所以基本上,我没有任何选项可以在我的 Mac 上运行 .Net Framework 应用程序?
    • 这是正确的,不幸的是。 .NET 框架与 Windows 紧密耦合,而 docker 与主机上运行的任何操作系统紧密耦合(因此您需要 Windows 来容器化 Windows 应用程序)。唯一真正的选择是获取 Windows 的副本并将其安装在像 Virtual Box 这样的厚虚拟机中,但这样做与您最初想要做的相反,您还不如只是 RDP 到 Windows 机器取而代之(它会更容易、更便宜)。
    • 使用虚拟机并非不可能——我只有一台 2013 年的 Macbook Air,它在运行虚拟机时运行缓慢。我有一段时间安装它并卸载它,因为它太慢了。我想我需要一台新机器......
    【解决方案2】:

    您不能运行 .NET Framework ,因为它与操作系统中的层架构一起使用,运行时,有很多库正在迁移,现在在 .NET core via nuget 中运行,建议使用 oficial net core image from microsoft 或通过 docker 运行微软服务器系统。

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 1970-01-01
      • 2010-12-22
      • 2020-12-06
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多