C# 我可以在Linux中编译.net Core 3 WPF应用程序吗?

C# 我可以在Linux中编译.net Core 3 WPF应用程序吗?,c#,wpf,.net-core-3.0,C#,Wpf,.net Core 3.0,在.NETCore3.0中添加了WPF支持 我可以在Linux上或在基于Linux的docker容器中编译wpf应用程序吗?你不能-我只是在WSL2中尝试过这个。如果键入dotnet new,WPF模板将显示在中,但 dotnet new wpf 在还原步骤中失败 The template "WPF Application" was created successfully. Processing post-creation actions... Running 'dotnet restor

在.NETCore3.0中添加了WPF支持


我可以在Linux上或在基于Linux的docker容器中编译wpf应用程序吗?

你不能-我只是在WSL2中尝试过这个。如果键入
dotnet new
,WPF模板将显示在中,但

dotnet new wpf
在还原步骤中失败

The template "WPF Application" was created successfully.

Processing post-creation actions...
Running 'dotnet restore' on wpftest/wpftest.csproj...
/usr/share/dotnet/sdk/3.0.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(59,5): 
error NETSDK1100: Windows is required to build Windows desktop applications. 
此错误由SDK的目标文件本身引发,因此条件编译没有帮助。该错误在编译开始之前抛出


一个好主意是将项目一分为二,一个可以在任何操作系统中编译、重用和测试的“无头”库和一个可以在Windows上构建的UI库

很抱歉,即使在使用.NET Core时,WinForms和WPF的UI框架也只是Windows

相关的:


可能是编译。测试?很可能不会,除非您确保大多数可测试代码不在WPF应用程序中,并且不依赖于任何特定于Windows的内容。如果在Windows计算机上启用了WSL,则可以测试此问题。仅适用于Windows的“WPF支持已添加到.net Core 3.0中”。@dymanoid问题询问是否可以编译。通过使用正确的运行时标识,您可以在windows上为Ubuntu编译您可以在Linux服务器上的windows容器中运行msbuild-我过去曾以这种方式使用CI工具。我没有尝试过,但我怀疑您是否能够安装并使用Microsoft.NET.Sdk.WindowsDesktop所需的
在Windows以外的任何平台上在.NET Core 3上构建WPF应用程序。如果您运行Windows容器,它可能会工作。据您所知,是否有任何方法可以“条件编译”(包括)仅针对特定操作系统的一段代码?我的意思是创建一个项目库,但在面向Linux时只公开部分API。当遇到WPF项目时,错误由SDK的目标文件本身引发。您必须将项目分成两部分,一个“无头”项目和一个UI项目。无论如何,这是一个很好的设计,使测试和重用更加容易这就是我正在做的:我也认为这是一个很好的实践。然而,我只是想知道这在技术上是否可行。谢谢谢谢您的错误消息导致了一些有趣的讨论