SmartGantt.Util.SyncPlanLite 7.4.70

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
0
SmartGantt.Util.SmartGanttLauncher
SmartGantt 업데이트 폼
0

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