【问题标题】:How do I build an exe in VS 17 Mac to run in Windows如何在 VS 17 Mac 中构建 exe 以在 Windows 中运行
【发布时间】:2020-06-06 00:31:24
【问题描述】:

我在 VS 2017 for mac 上用 C# 编写了一个控制台应用程序,生成的构建文件是一个 .dll。我可以在 IDE 和终端中使用“dotnet blah.dll”正常运行。

我真正想要的是将我的小控制台应用程序提供给可以运行它的 Windows 朋友。

我没有在网上或这里找到关于如何告诉 VS2017 mac 让我成为 Windows exe 的详细信息。

【问题讨论】:

    标签: c# visual-studio-2017


    【解决方案1】:

    假设您的朋友有 .net 核心运行时,则有一个依赖于框架的部署,他们也可以使用“dotnet blah.dll”运行

    否则您需要使用dotnet publish -c release -r win10-x64 命令和一些项目配置来配置自包含部署。更多详情请访问dotnet publish MSDN articledeployment strategies 整体

    【讨论】:

    • 感谢您提供的文章链接,我将阅读它们。我也会试试你的技术,它看起来很简单。我会报告它的进展情况。谢谢。
    • 我使用了这种方法,有无“--self-contained”,.我得到了一个 exe(耶!),我还得到了一个包含 218 个文件的“netcoreapp2.0”文件夹。这些是对“使用”的引用。陈述。我尝试在 Windows 10 x86 pc 上运行该文件,但我收到与“未找到应用程序依赖项清单 (test.deps.json) 中指定的程序集..”相关的错误。这可能很愚蠢,但是当我在 Win box 上执行 C# 时,我只是运行了 exe。从MAC移植时,我就是不能携带那个EXE?我需要打包所有218个文件吗?我在这里遗漏了一些东西。
    • @user9245487 我认为您需要使用这些 dll 部署 exe 文件和文件夹。如果我了解您想要单个 .exe 文件。虽然我没有亲自做过,但看起来 CoreRT 是你需要的,看看这个讨论github.com/dotnet/corefx/issues/13329
    • @user9245487 以前使用经典的 .net 运行时,您会得到一个没有系统 dll 依赖项的 .exe 文件,因为它依赖于 .Net 已经安装在机器上的事实(并且它带有 Windows 更新) ,所以发送单个 .exe 就可以了。使用 .Net Core,您要么期望 Core 已安装并且您的客户可以运行 dotnet yourapp.dll,要么您需要将所有库和 .net 本身与您的应用程序捆绑在一起,这就是为什么您有大量 dll 的原因
    • 这条回复对我来说是最好的答案,我明白它为什么会这样做。谢谢。
    【解决方案2】:

    您的 csproj for Windows 中需要有一个运行时标识符,以便生成与 Windows 兼容的二进制文件。各种 Linux 发行版都类似。

    可以在以下位置找到 ID 列表:https://docs.microsoft.com/en-us/dotnet/core/rid-catalog。例如,要面向 Windows 10 x64,您可以使用 win10-x64

    配置好 csproj 并重新构建后,您应该会在构建输出中看到一个 win10-x64 文件夹,其中包含您需要的文件。

    【讨论】:

    • 好吧,这听起来像是我理解并且可以尝试的事情。我会尽快回复这个问题并附上我的结果。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2017-12-17
    • 1970-01-01
    • 2022-01-06
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多