SmartGantt.Util.SyncPlanLite 7.4.82

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
9
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
3
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
1
SmartGantt.Util.SmartGanttLauncher
SmartGantt 업데이트 폼
1
SmartGantt.Util.SmartGanttSettingsManager
SmartGantt Settings Manager
0
SmartGantt.Util.SmartGanttLauncher
SmartGantt 업데이트 폼
0

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