是否可以使用 mono
或 msbuild
(或我不知道的其他一些解决方案)将 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/