SmartGantt.Util.SyncPlanLite 7.3.75

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

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