c# - 如何在 Linux 上为 Windows 交叉编译 C# 项目?

标签 c# linux msbuild mono cross-compiling

是否可以使用 monomsbuild(或我不知道的其他一些解决方案)将 C# 代码编译成二进制 for Windows ) 在 Linux 上

这些 C# 项目通常包含以下文件:

  • .cs
  • .csproj
  • .config
  • .manifest

应用配置示例:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <startup>
      <supportedRuntime version="v4.0.30319" sku=".NETFramework,Version=v4.0" />
      <supportedRuntime version="v2.0.50727"/>
    </startup>
</configuration>

示例 .csproj(片段):

<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
    <TargetZone>Internet</TargetZone>
</PropertyGroup>
<ItemGroup>
    <Reference Include="System" />
    <Reference Include="System.Deployment" />
    <Reference Include="System.Web" />
</ItemGroup>
<ItemGroup>
    <BootstrapperPackage Include="Microsoft.Net.Client.3.5">
        <Visible>False</Visible>
        <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
        <Install>false</Install>
    </BootstrapperPackage>
    <BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
        <Visible>False</Visible>
        <ProductName>.NET Framework 3.5 SP1</ProductName>
        <Install>false</Install>
    </BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

免责声明:我真的不太了解 Windows。如果这是 Simply Not Possible™,我可以使用 Windows VM 作为最后的手段。

最佳答案

在 Linux 上,您应该能够仅使用 mono 命令运行您的程序集。 单声道应用程序.exe。不需要交叉编译。 (啊点击一次随处运行的好处)

但是,如果您指的是 AOT 编译或 mkbundle,则使用 linux 机器会更容易。

除非您依赖于 Windows 操作系统,需要在其中找到替代方案或包含配置文件。

关于c# - 如何在 Linux 上为 Windows 交叉编译 C# 项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48582910/

相关文章:

linux - 在 RedHat 5.1 中设置 IGMP 版本 (Tikanga)

linux - 如何从存储库生成 .deb 包

tfs - 使用 MSBuild 从 TFS 结帐

c# - RavenDb 从不同来源导入数据,如 xml、cvs

c# - 通过C#在sql中插入数据

linux - 每线程 Intel MSR 频率缩放

build - VS2012 自定义构建步骤 - 将输出视为内容

.net - 在 TFS 2010 或 msbuild 中触发配置转换

c# - 在sql server数据库中存储不同语言的字符串必须考虑什么?

c# - 在哪里添加 Application Insights 的应用程序名称