.NET 5 이상의 프로젝트에서는 Fody.Costura보다 닷넷에서 자체적으로 지원하는 SingleFile Publish를 이용하는 것이 호환성 문제도 없고 더 적합합니다.
자세한 내용은 다음 링크를 참고해주세요: https://learn.microsoft.com/ko-kr/dotnet/core/deploying/single-file/overview?tabs=cli
아래 내용은 .NET Framework 4.8 이하에서 활용하는걸 권장합니다.
Fody.Costura는 참조하는 DLL 파일들이 EXE파일에 내장되게 해주는 라이브러리인데, Debug모드에서 사용할때는 좀 번거로운 일들이 생기는 것 같아 Release 모드에서만 작동하게 했다.
본인의 프로젝트 파일([프로젝트명].csproj)을 텍스트 편집기로 연다.
첫 번째 PropertyGroup 안에 <DisableFody Condition=”‘$(Configuration)’ == ‘Debug'”>true</DisableFody> 를 추가한다. 결과적으론 아래와 비슷하게 추가되어 있으면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 |
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>WinExe</OutputType> <TargetFramework>net8.0-windows</TargetFramework> <ApplicationManifest>app.manifest</ApplicationManifest> <ApplicationIcon>wpfui-icon.ico</ApplicationIcon> <UseWPF>true</UseWPF> <Nullable>enable</Nullable> <ImplicitUsings>enable</ImplicitUsings> <DisableFody Condition="'$(Configuration)' == 'Debug'">true</DisableFody> </PropertyGroup> |
(아래 내용은 3.x.x 같은 예전 버전에서의 해결책입니다만, 자료 보존을 위해 남겨둡니다)
<Import Project=”..\packages\Fody.3.3.5\build\Fody.targets” 처럼 되어있는 줄을 찾아 Condition에 아래 값을 추가한다.
‘$(Configuration)’ == ‘Release’
만일 이미 Condition값이 있다면 아래처럼 AND를 이용해서 위의 조건을 덧붙인다.
Condition=”Exists(‘..\packages\Fody.3.3.5\build\Fody.targets’) AND ‘$(Configuration)’ == ‘Release'”
최종적으로는 아래처럼 되어있어야 한다.
<Import Project=”..\packages\Fody.3.3.5\build\Fody.targets” Condition=”Exists(‘..\packages\Fody.3.3.5\build\Fody.targets’) AND ‘$(Configuration)’ == ‘Release'” />