Windows 에 관련된 기능이지만 Windows 관련 카테고리는 없어서 여기에 질문합니다.
‘Windows 작업 스케줄러’ 라는 Windows 전용 기능이 있습니다.
‘이벤트 뷰어’ 같은 Windows 전용 APP 인데요.
pc에 dotnet framework를 깔아두고 windows 작업 스케줄러를 이용하여 console 앱을 실행하면 문제없이 잘 됩니다.
하지만 이제 .NET 7으로 Console 앱을 바꿨는데, 작업 스케줄러에는 실행 성공이라고 나오지만 실제로 실행이 안됩니다.
Console APP은 아래 파일이 전부입니다.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<PublishSingleFile>true</PublishSingleFile>
<SelfContained>true</SelfContained>
<DebugType>embedded</DebugType>
</PropertyGroup>
</Project>
using System.Diagnostics;
Process.Start("notepad.exe");
각각 프로젝트 파일과 Program.cs 파일인데요.
프로젝트 속성을 보시면 아시겠지만, .NET 을 포함하여 단일 파일로 빌드했습니다.
그리고 Windows 샌드박스를 열어서 붙여넣고 마우스로 더블클릭하여 실행하면 잘 동작합니다.
하지만 Windows 작업 스케줄러로 실행하니까 동작하지 않습니다.
그럼 batch 파일을 만들어서 batch 파일이 app을 실행하게 해볼까도 했지만, batch 파일을 사용할 때 dotnet 명령어는 PC에 dotnet이 설치되어있어야 동작하므로 이 방법이 아닌 아래 링크의 방법으로 배치파일을 작성했지만, 그래도 실행이 되지 않습니다.
왜 더블클릭해서 실행하면 잘 되고 다른 프로그램 실행해주면 실행되지 않는 걸까요?
Windows 작업 스케줄러를 사용하게 된 이유는,
Console 앱에 Quartz 같은 host를 붙여서 써도 되지만 사용자가 마우스로 실수로 끌 수 있기 때문에 제외했고,
Windows 서비스는 등록과정이 불편했어서
가독성이 좋고 쉽게 이용이 가능하고 프로세스가 항시 hosting 되고 있지 않아도 OS에 의존하여 실행시킬 수 있는 작업 스케줄러를 선택했습니다.