build 에러 및 linux, window 호환 앱 개발

현재 .NET core 7 개발 환경에서 window WPF 앱을 개발 하고 있습니다.
이후 command 라인에서 실행이 가능하고, Linux에서 사용이 가능하도록 변경이 필요해 dotnet build를 사용하려 docker에 설정을 완료 한 상태입니다.
신규 dotnet console 프로젝트를 생성하여 기존 project library를 참조로 받아 console용으로 프로그램을 만들려고 하는데 dotnet build command이후

/shared/workspace/project/프로젝트이름.csproj : error NU1301: Unable to load the service index for source https://api.nuget.org/v3/index.json. [/shared/workspace/project/프로젝트이름.csproj]

에러가 뜨는데 혹시 해결한 경험이 있거나 관련 내용 공유가 가능하신 분이 있을까요???
그리고, 윈도우 환경에서 기존 윈도우용 .net core7 프로젝트를 linux용으로 빌드가 불가능할까요???

1 Like

WPF는 Window Desktop 앱이여서 안됩니다.
Avalonia나 Uno 를 이용하셔야합니다.

5 Likes
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>

image

library들이 .netstandard + .net5~8 로 만들어 진거면 window전용 함수를 쓴거아니면 linux에서도 빌드가 될거입니다

3 Likes

console 이나 dll 은 타 OS에서 사용 가능 하지만 wpf나 winform은 windows 전용입니다.

5 Likes

위에서 말씀들 해주신 것처럼 WPF는 윈도우를 제외한 환경에서 빌드가 불가능합니다.

<UseWPF>true</UseWPF>

WPF를 사용하기 위해서는 .NET Core임에도 불구하고 타겟 프레임워크에 -windows를 반드시 붙여야 동작을 하죠, Avalonia, Uno, MAUI 등의 크로스플랫폼에서는 -windows 없이도 사용할 수 있는 것을 보실 수 있습니다.

<TargetFramework>net7.0-windows</TargetFramework>

따라서 프로젝트 속성 파일에서 해당 프로젝트의 특성을 TargetFramework 항목을 통해 환경에 대한 정보를 빠르게 파악할 수 있습니다.

결과적으로 UseWPF를 제거하고, TargetFramework에서 -windows도 제거한다면 빌드가 되겠지만 WPF 관련 로직들을 모두 걷어내야 가능 하겠네요.

3 Likes