如何在Linux上交叉编译Windows的C#项目?

时间:2018-02-02 12:39:54

标签: 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作为最后的手段。

1 个答案:

答案 0 :(得分:0)

在linux上,您应该只使用mono命令运行程序集。 mono app.exe。不需要交叉编译。 (啊点击一次运行的好处)

但是,如果你的意思是AOT编译或mkbundle,那么使用linux机器会更容易。

除非你在windows os中依赖于需要找到备选方案或包含配置文件。