SmartGantt.Util.SyncPlanLite 7.4.94

SyncPlanLite

개요

  • 이 프로젝트는 스마트간트 라이브러리 프로젝트입니다.
  • Windows Form 컨트롤 라이브러리(.NET 8)로 생성하였습니다.

속성

  • 솔루션 탐색기에서 프로젝트를 선택 후, 마우스 우클릭 > 속성 메뉴에서 확인할 수 있습니다.

빌드 - 조건부 컴파일 기호

  • 작업 이동시 디버깅을 위해 조건부 컴파일 기호를 사용하였습니다.
  • TRACE_ACTIVITY : 작업 이동시 전파되는 정보를 Console에 기록하는 코드가 있습니다.
  • DEBUG_LOG : 작업 이동시 전파되는 정보를 log 파일에 기록하는 코드가 있습니다. 성능을 위해 배포시에는 포함하지 않고, 디버깅을 위해 사용합니다.
  • AUTO_LOGIN : admin 자동 로그인 코드를 실행합니다.
  • LOCAL_CONFIG : 로컬 설정 파일을 사용합니다.

빌드 전 이벤트

빌드 날짜

<Target Name="PreBuild" BeforeTargets="PreBuildEvent">
  <Exec Command="echo %25date%25 %25time%25 &gt; &quot;$(ProjectDir)\Properties\BuildDate.txt&quot;" />
</Target>
  • SyncPlanLite 빌드 날짜를 form 제목으로 보여주고 있기 때문에 SyncPlanLite 빌드 전 현재 날짜를 BuildDate.txt에 저장합니다.
  • 사용은 SyncPlanLite\Properties\Resources.resx 에 BuildDate.txt파일을 등록해서 코드에서 Properties.Resources.BuildDate 로 사용할 수 있습니다.

버전 업데이트

  • 현재 젠킨스 빌드할때 AutoVersioning을 하고 있는데, 이때 솔루션 디렉토리에 version.json 가 생성됩니다. 이 파일의 버전 정보를 이용해서 간트 버전을 설정하도록 수정했습니다.
  • csproj에서 간단한 Task를 등록해서 작업하려 했는데, json을 불러올때 Nuget 패키지(Newtonsoft.Json)을 사용해야 해서 SyncPlanLiteBuildTask 프로젝트를 생성하여 Task dll을 만들어 사용하도록 구현했습니다.
  • 입력받은 path에 있는 json 파일에서 버전을 불러와서, Version String을 리턴합니다.
    [Required]
    public string JsonFilePath { get; set; }
    
    [Output]
    public string VersionString { get; set; }
    
    public override bool Execute()
    {
        try
        {
            string jsonText = File.ReadAllText(JsonFilePath);
            var jsonObject = JObject.Parse(jsonText);
            VersionString = $"{jsonObject["major"]}.{jsonObject["minor"]}.{jsonObject["patch"]}";
            Log.LogMessage(MessageImportance.High, VersionString);
            return true;
        }
        catch (Exception ex)
        {
            Log.LogErrorFromException(ex);
            return false;
        }
    }
    
  • 사용시에는 csproj에서 Task를 등록하고, 결과 버전값으로 AssemblyVersion, FileVersion, Version, PackageVersion을 설정합니다.
    <UsingTask TaskName="VersionTask" AssemblyFile="..\SyncPlanLite\lib\SyncPlanLiteBuildTask.dll" />
    <Target Name="SetVersion" BeforeTargets="BeforeBuild" Condition=" '$(Configuration)' == 'Release' ">
      <VersionTask JsonFilePath="..\version.json">
        <Output TaskParameter="VersionString" PropertyName="AssemblyVersion" />
      </VersionTask>
      <PropertyGroup>
        <AssemblyVersion>$(AssemblyVersion)</AssemblyVersion>
        <FileVersion>$(AssemblyVersion)</FileVersion>
        <Version>$(AssemblyVersion)</Version>
        <PackageVersion>$(AssemblyVersion)</PackageVersion>
      </PropertyGroup>
    </Target>
    

NuGet 패키지

  • Costura.Fody : 참조 dll을 포함하는 단일 dll파일로 만들어주는 패키지입니다.
  • devExpress.Win.Design : DevExpress 컨트롤을 사용하기 위한 패키지입니다.
  • HardwareInformation : 하드웨어 정보를 가져오는 패키지입니다. 오류보고시 사용합니다.
  • IKVM : java 클래스를 사용할 수 있도록 해주는 패키지입니다. 웹 연결하지 않는 경우, 로그인 하기 위해 사용합니다.
  • Microsoft.EntityFrameworkCore : Entity Framework Core를 사용하기 위한 패키지입니다.
    • Microsoft.EntityFrameworkCore.SqlServer : Entity Framework Core를 사용하여 SQL Server에 연결하기 위한 패키지입니다.
    • Microsoft.EntityFrameworkCore.Tools : Entity Framework Core를 사용하여 데이터베이스를 업데이트하기 위한 패키지입니다.
    • Microsoft.Extensions.Configuration
    • Oracle.EntityFrameworkCore : Entity Framework Core를 사용하여 Oracle에 연결하기 위한 패키지입니다.
    • Pomelo.EntityFrameworkCore.MySql : Entity Framework Core를 사용하여 MySQL에 연결하기 위한 패키지입니다.
  • Microsoft.Web.WebView2 : WebView2 컨트롤을 사용하기 위한 패키지입니다. 하이브리드뷰 기능을 구현하기 위해 사용합니다.
  • Newtonsoft.Json : json 데이터를 다루기 위한 패키지입니다.
  • NLog : log를 기록하는 패키지입니다.
  • RestSharp : REST API를 사용하기 위한 패키지입니다.
  • WebSocketSharp : 엔진 서버 연결시 사용합니다.
  • YamlDotNet : configuration yaml 파일을 읽어오기 위해 사용합니다.

Model 수정

  • Model은 자동 생성되는 코드이기 때문에 직접 수정하지 않고 자동 생성하는 것을 권장하지만, CodeFirst 방식에서 DB로 업데이트하는 방법은 없기 때문에 약간의 수정이 필요합니다.

컬럼 추가

  1. model > codefirst 폴더에서 컬럼이 추가된 테이블 cm_scenario.cs 파일을 열어 추가된 컬럼 segment를 정의합니다.
public partial class cm_scenario
{
  ...
  [StringLength(40)]
  public string segment { get; set; }
  ...
}
  1. model > codefirst 폴더에서 SyncPlanContext 클래스의 OnModelCreating() 메서드에 다음과 같이 추가한다.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
  modelBuilder.Entity<cm_scenario>()
      .Property(e => e.segment)
      .IsUnicode(false);
}

테이블 추가

  1. SmartGantt 프로젝트의 model - codefirst 폴더에 ADO.NET 엔터티 데이터 모델을 추가합니다.
    새 항목 추가
  2. 모델 콘텐츠로 데이터베이스의 Code First를 선택합니다.
    새 항목 추가
  3. 추가하고자 하는 테이블이 위치한 DB를 선택하거나, 추가되어 있지 않다면 새 연결 버튼을 눌러 DB를 설정하여 줍니다. 중요 문자열 포함, App.config 연결 설정 저장 체크 해제한 후 다음 버튼을 선택합니다.
    새 항목 추가
  4. 추가하고자 하는 테이블을 체크한 후 마침 버튼을 선택하면 테이블명과 같은 클래스 파일과, CustomContext 클래스 파일이 자동 생성됩니다.
    새 항목 추가
  5. 자동생성된 context 파일에 OnModelCreating()메서드 내용을 복사하여 SyncPlanContext.cs의 메서드에 붙여넣고, 테이블 DBSet 변수도 복사합니다.
public SyncPlanContext(string name)
    : base($"name={name}Model")
{
  public virtual DbSet<cm_menu> cm_menu { get; set; }
  protected override void OnModelCreating(DbModelBuilder modelBuilder)
  {
    modelBuilder.Entity<cm_menu>>()
        .Property(e => e.id)
        .IsUnicode(false);
    ...
  }
}
  1. CustomContext 클래스 파일은 삭제합니다.
  2. not null 컬럼이지만 empty string을 저장해야 하는 컬럼인 경우 다음과 같이 수정합니다.
public partial class spp_operation_schedule
{
  [Required(AllowEmptyStrings = true)] //필수 컬럼이지만 empty string 허용
  [StringLength(40)]
  public string resource_code { get; set; }
}

Showing the top 20 packages that depend on SmartGantt.Util.SyncPlanLite.

Packages Downloads
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
14
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
8
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
7
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
6
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
5
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
4
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
3
SmartGantt.Util.SmartGanttLauncher
SmartGantt 업데이트 폼
2
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
2

Version Downloads Last updated
7.4.113 0 06/19/2026
7.4.112 1 06/16/2026
7.4.111 3 06/15/2026
7.4.110 0 06/13/2026
7.4.109 1 06/09/2026
7.4.108 2 06/09/2026
7.4.107 1 06/08/2026
7.4.106 2 06/04/2026
7.4.105 0 06/03/2026
7.4.104 0 05/30/2026
7.4.103 0 05/26/2026
7.4.102 1 05/21/2026
7.4.101 0 05/20/2026
7.4.100 1 05/18/2026
7.4.99 3 05/14/2026
7.4.98 2 05/14/2026
7.4.97 3 05/14/2026
7.4.96 3 05/14/2026
7.4.95 3 05/14/2026
7.4.94 3 05/13/2026
7.4.93 2 05/12/2026
7.4.92 2 05/08/2026
7.4.91 1 05/08/2026
7.4.90 1 05/07/2026
7.4.89 3 04/22/2026
7.4.88 1 04/21/2026
7.4.87 2 04/20/2026
7.4.86 2 04/19/2026
7.4.85 2 04/14/2026
7.4.83 5 04/02/2026
7.4.82 2 04/02/2026
7.4.81 3 03/28/2026
7.4.80 5 03/17/2026
7.4.79 4 03/16/2026
7.4.78 2 03/14/2026
7.4.77 3 02/28/2026
7.4.76 5 02/23/2026
7.4.75 4 02/21/2026
7.4.74 3 02/14/2026
7.4.73 4 02/07/2026
7.4.72 4 01/31/2026
7.4.71 5 01/24/2026
7.4.70 5 01/15/2026
7.4.69 5 01/15/2026
7.4.68 5 01/09/2026
7.4.67 5 01/04/2026
7.4.66 10 12/29/2025
7.4.65 5 12/25/2025
7.4.64 6 12/20/2025
7.4.63 6 12/16/2025
7.4.62 5 12/14/2025
7.4.61 7 12/12/2025
7.4.60 7 12/12/2025
7.4.59 7 12/11/2025
7.4.58 6 12/11/2025
7.4.57 7 12/11/2025
7.4.56 5 12/10/2025
7.4.55 7 12/07/2025
7.4.54 5 12/06/2025
7.4.53 5 12/04/2025
7.4.52 8 11/26/2025
7.4.51 7 11/26/2025
7.4.50 8 11/26/2025
7.4.49 5 11/26/2025
7.4.48 5 11/18/2025
7.4.47 5 11/13/2025
7.4.46 6 11/10/2025
7.4.45 5 11/05/2025
7.4.44 7 11/01/2025
7.4.43 8 10/30/2025
7.4.42 6 10/25/2025
7.4.41 7 10/22/2025
7.4.40 8 10/21/2025
7.4.39 8 10/21/2025
7.4.38 7 10/21/2025
7.4.37 9 10/15/2025
7.4.36 8 10/15/2025
7.4.35 7 10/11/2025
7.4.34 7 09/30/2025
7.4.33 7 09/27/2025
7.4.32 8 09/20/2025
7.4.31 9 09/08/2025
7.4.30 8 09/07/2025
7.4.29 8 09/06/2025
7.4.28 10 08/30/2025
7.4.27 8 08/26/2025
7.4.26 8 08/21/2025
7.4.25 13 08/18/2025
7.4.24 9 08/17/2025
7.4.23 8 08/16/2025
7.4.22 10 08/09/2025
7.4.21 10 08/02/2025
7.4.20 9 07/28/2025
7.4.19 14 07/24/2025
7.4.18 12 07/23/2025
7.4.17 11 07/22/2025
7.4.16 10 07/18/2025
7.4.15 10 07/12/2025
7.4.14 11 07/05/2025
7.4.13 13 07/03/2025
7.4.12 12 07/02/2025
7.4.11 11 07/01/2025
7.4.10 10 06/30/2025
7.4.9 12 06/24/2025
7.4.8 11 06/21/2025
7.4.7 11 06/16/2025
7.4.6 13 06/11/2025
7.4.5 11 06/07/2025
7.4.4 12 05/29/2025
7.4.3 12 05/25/2025
7.4.2 13 05/22/2025
7.4.1 11 05/13/2025
7.3.103 14 05/12/2025
7.3.102 12 05/12/2025
7.3.101 12 05/03/2025
7.3.99 12 04/25/2025
7.3.98 12 04/10/2025
7.3.97 16 04/06/2025
7.3.96 13 04/05/2025
7.3.95 14 03/28/2025
7.3.94 13 03/27/2025
7.3.93 12 03/25/2025
7.3.92 11 03/22/2025
7.3.91 11 03/17/2025
7.3.90 11 03/15/2025
7.3.89 11 03/07/2025
7.3.88 13 03/06/2025
7.3.87 11 03/06/2025
7.3.86 11 03/05/2025
7.3.85 12 03/05/2025
7.3.84 12 03/04/2025
7.3.83 14 03/01/2025
7.3.82 14 02/22/2025
7.3.81 13 02/18/2025
7.3.80 13 02/15/2025
7.3.79 12 02/04/2025
7.3.78 12 01/23/2025
7.3.77 26 01/18/2025
7.3.76 16 01/11/2025
7.3.75 12 12/28/2024
7.3.74 28 12/14/2024
7.3.73 13 12/05/2024
7.3.72 26 12/04/2024
7.3.71 13 12/03/2024
7.3.70 14 11/24/2024
7.3.69 12 11/23/2024
7.3.68 60 11/16/2024
7.3.67 12 11/10/2024
7.3.66 12 11/09/2024
7.3.65 13 10/31/2024
7.3.64 12 10/26/2024
7.3.63 13 10/24/2024
7.3.62 29 10/23/2024
7.3.61 13 10/22/2024
7.3.60 12 10/21/2024
7.3.59 29 10/21/2024
7.3.58 27 10/20/2024
7.3.57 16 10/19/2024
7.3.56 14 10/16/2024
7.3.55 14 10/14/2024
7.3.54 12 10/10/2024
7.3.53 15 10/08/2024
7.3.52 13 10/08/2024
7.3.51 12 10/07/2024
7.3.50 15 10/07/2024
7.3.49 13 10/05/2024
7.3.48 12 09/28/2024
7.3.47 12 09/23/2024
7.3.46 12 09/22/2024
7.3.45 12 09/11/2024
7.3.44 15 09/11/2024
7.3.43 13 09/10/2024
7.3.42 13 09/10/2024
7.3.41 12 09/09/2024
7.3.40 12 09/07/2024
7.3.39 13 08/31/2024
7.3.38 12 08/25/2024
7.3.37 13 08/20/2024
7.3.36 13 08/17/2024
7.3.35 14 08/16/2024
7.3.34 13 08/16/2024
7.3.33 12 08/15/2024
7.3.32 13 08/14/2024
7.3.31 13 08/14/2024
7.3.30 14 08/13/2024
7.3.29 13 08/12/2024
7.3.28 12 08/08/2024
7.3.27 12 08/06/2024
7.3.26 12 08/05/2024
7.3.25 13 08/04/2024
7.3.24 13 07/31/2024
7.3.24-dev 13 07/31/2024
7.3.23 12 07/26/2024
7.3.22 13 07/25/2024
7.3.21 14 07/23/2024
7.3.20 12 07/23/2024
7.3.19 12 07/18/2024
7.3.18 13 07/13/2024
7.3.17 13 07/10/2024
7.3.16 12 07/09/2024
7.3.15 12 07/08/2024
7.3.14 12 07/04/2024
7.3.13 14 07/04/2024
7.3.12 13 07/03/2024
7.3.11 13 07/03/2024
7.3.10 13 07/02/2024
7.3.9 12 07/02/2024
7.3.8 12 07/01/2024
7.3.7 12 06/30/2024
7.3.6 20 06/29/2024