Shared Project in VisualStudio


Microsoft 사의 Open 된 Source 를 보던 중 희안한 아이콘의 Project 를 보게 되었습니다.



헙!!! 이게 뭐징? 

하는 궁금증은 바쁜 일에 그냥 넘어갔습니다.


어디에 쓰는 프로젝트 이름으로 짐작하기만 했죠.



어느날 갑자기 그 프로젝트를 써봐야할 듯 해서 찾아 봤습니다.

먼저 Solution 파일을 Editor 로 열어봤습니다.




아니면 그냥 해당 폴더로 가서 프로젝트를 찾아 보시면  shproj 확장자를 가지고 있다는 걸 알수 있습니다.



그리고는 Project 가 있는지 찾아봤습니다.


Solution Explorer 에서 Solution 을 오른쪽 클릭하여 Add.../ New Project 을 클릭하면 Add New Project ... 창이 나타납니다.


하지만 아무리 찾아봐도 비스므레한 프로젝트는 없었습니다.


흠... 우리의 친구 구글... 구글링에 들어갑니다.


그 결과 Shared Project Reference Manager 라는 VisualStudio Extention 이 있다는 걸 발견했습니다.


https://marketplace.visualstudio.com/items?itemName=KieranMockfordMSFT.SharedProjectReferenceManager


화면에 Download 보이시죠?



클릭하여 다운받아 설치합니다.



오호~~ 프로젝트 템플릿이 생겼습니다...

추가해 봅시다.



오호호~~ 여러 프로젝트에서 사용할 수 있는 Class 를 생성하여 공통으로 사용할 수 있는 녀석으로 굳이 Entity 나 Utility 성의 Class 를 굳이 dll 로 떼어서 관리하지 않아도 되겠네요. ^^


음... 그런데 생각해 보면 여러 Project 가 이 Shared Project 를 참조하게 되면 생성되는 각각의 Assembly 들의 크기가 증가하겠네요... dll 을 참조하면 될텐데도 말이죠...


같은 기능을 하지만 여러 플랫폼을 대상으로 하는 dll 을 생성할 때와 같은 상황에서 이용하면 되겠군요.

jumptovb_Utilityx32.dll, jumptovb_Utilityx64.dll 와 같이 말이죠...





행복한 고수되셔요.



woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\








'Tools' 카테고리의 다른 글

[Tools] Shared Project in VisualStudio  (0) 2018.10.18
[Tools] GUID Maker Updated.  (0) 2017.10.31
[Tools] Log4Net  (0) 2017.10.12
[Tools] DotNetZip  (0) 2017.10.10
[Tools] 3 Ways to Change Bitrate on MP3 Files  (0) 2017.09.08
[Tools] NShape  (0) 2017.06.28
Posted by woojja

Node.JS 테스트 중 CentOS 에 rpmforge 를 설치해야만 하게 됐는데요.


찾았던 자료들이 너무 오래되어서 Download Site 가 사라져버려 접속이 안되고 있었습니다.


그래서 업데이트 한 링크를 바탕으로 설치하는 방법입니다.


내용은 

https://centos.pkgs.org/6/repoforge-x86_64/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm.html

에 있습니다.



  1. Download the latest rpmforge-release rpm from
    http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/x86_64/rpmforge/RPMS/
  2. Install rpmforge-release rpm:
    # rpm -Uvh rpmforge-release*rpm
  3. Install rpmforge-release rpm package:
    # yum install rpmforge-release


1. wget http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/x86_64/rpmforge/RPMS/  로 Download 받습니다.

2. sudo rpm -Uvh rpmforge-release*rpm 을 실행하여 설치합니다.

3. sudo yum install rpmforge-release 로 Package 를 설치합니다.


다음 산을 넘으러 가보겠습니다.


행복한 고수되십시요. 


woojja ))*

₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩₩




Posted by woojja

계속 업데이트 됩니다. ^^


Default Application 설정

http://www.rubicode.com/Software/Bundles.html#RCDefaultApp




행복한 고수되셔요~ ^^


woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




Posted by woojja

 

 

 

Visual Studio 의 Extention 을 소개하려고 합니다.

 

Go To Definition 이라는 Extention 인데요.

Class 나 변수를 Ctrl 과 함께 클릭을 하면 정의한 곳으로 이동 시켜줍니다.

 

추가 팁으로는 Ctrl + Shift + 7 또는 8 을 이용하여 다시 되돌아가거나 돌아 올수 있습니다.

마우스에 따라 앞으로, 뒤로 가기 버튼이 있는 경우도 있지만

있어도 기능이 먹는 녀석이 있고, 안되는 경우도 있고.

 

^^;

 

VisualStudio 2017 의 경우는

 

https://marketplace.visualstudio.com/items?itemName=VisualStudioProductTeam.CtrlClickGoToDefinition

 

에서 Download 받아 설치하시고요.

 

이전 버전의 경우는

https://marketplace.visualstudio.com/items?itemName=NoahRichards.GoToDefinition

 

에서 Downlad 받으시면 되겠습니다.

 

매우 유용합니다.

 

 

행복한 고수되셔요.

 

 

woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




Posted by woojja

 

GUID Maker 를 수정했습니다.

(http://jumptovb.net/search/guidmaker 를 참고하셔요.)

 

 

필요한 사항이 있어서요. ^^

 

 

수정사항은 Hyphen 표시 유무 입니다. ^^

Source 는 링크를 Click 하시면 GitHub 로 이동합니다.

 

 

GUID Maker Source

 

 

 

 

 

GUID Maker 2 Source

 

 

다음 Update 시에는 두개를 합쳐야겠습니다. ^^

 

 

행복한 고수되셔요.




'Tools' 카테고리의 다른 글

[Tools] Shared Project in VisualStudio  (0) 2018.10.18
[Tools] GUID Maker Updated.  (0) 2017.10.31
[Tools] Log4Net  (0) 2017.10.12
[Tools] DotNetZip  (0) 2017.10.10
[Tools] 3 Ways to Change Bitrate on MP3 Files  (0) 2017.09.08
[Tools] NShape  (0) 2017.06.28
Posted by woojja
2017.10.12 20:00

들어는 보셨을 Log4Net 을 소개해 드립니다.


Web 에서 간단하게 Log 를 쌓을 때 사용하던 녀석입니다.


이번 프로젝트는 WinForm 인데 Log 기능을 넣어달라고 하여 이 녀석을 추가해주려고 합니다.


일단은 파일로만 생성해 주렵니다.

공식웹사이트는 http://logging.apache.org/log4net 이며


GitHub Site 는 https://github.com/apache/logging-log4net/ 입니다.



Project 를 여시고요.

NuGet Manager Console 에서 


Install-Package log4net


이렇게 입력하시면 설치가 간단히 끝납니다.


그 다음은 app.config 또는 Web.config 파일에 Log4Net 을 사용하겠다고 알려주고요.


Log 에 대한 설정 사항을 입력해 주면 됩니다.


별도의 Log4Net.config 파일에 정의해 주어도 되겠습니다.


Log4Net.config 에서 설정을 관리하겠다면 첨부되어 있는 Logger.cs 파일의 initialize() 함수에서 처럼 로그를 관리하는 class 에 아래 구문을 추가해주시고요.


XmlConfigurator.ConfigureAndWatch(new FileInfo(logFilePath));


app.config 나 web.config 을 사용하시겠다면 

assemblyinfo.cs 이나 program.cs 파일에 아래 구문을 입력해 주셔요. ^^


[assembly: log4net.Config.XmlConfigurator(Watch = true)]



다음 설정은 App.Config 에 적어준 사항을 블로그에 맞게 약간 수정해서 기록합니다.


다른 사항들도 빼곡하게 적어 놓았는데 그 사항들을 여러분들이 사용하실때 주석을 풀어 사용하시면 되리라 생각하고 일단은 파일에 Log 를 쌓는 부분만 사용할 수 있게 주석을 풀어 놓았습니다.



<?xml version="1.0" encoding="utf-8"?>

<configuration>

  <startup> 

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>

  </startup>

  <runtime>

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">

      <probing privatePath="DLL" />

    </assemblyBinding>

  </runtime>


  <configSections>

    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>

  </configSections>


  <log4net>


    <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">


      <file type="log4net.Util.PatternString" value="Logs/%date{yyyy-MM-dd}_log4net.log"/>

      <datePattern value="yyyy-MM-dd"/>

      <appendToFile value="true" />

      <rollingStyle value="Date" />

      <staticLogFileName value="true" />

      <maxSizeRollBackups value="60" />

      <maximumFileSize value="15MB"/>

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%d [%t] %-5p %c - %m%n" />

      </layout>


    </appender>

    

    <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">

      <bufferSize value="1" />

      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />

      <connectionString value="Data Source=DataSourceName;Initial Catalog=DatabaseName;integrated security=True" />

      <commandText value="INSERT INTO SADT_Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />

      <parameter>

        <parameterName value="@log_date" />

        <dbType value="DateTime" />

        <layout type="log4net.Layout.RawTimeStampLayout" />

      </parameter>

      <parameter>

        <parameterName value="@thread" />

        <dbType value="String" />

        <size value="255" />

        <layout type="log4net.Layout.PatternLayout">

          <conversionPattern value="%thread" />

        </layout>

      </parameter>

      <parameter>

        <parameterName value="@log_level" />

        <dbType value="String" />

        <size value="50" />

        <layout type="log4net.Layout.PatternLayout">

          <conversionPattern value="%level" />

        </layout>

      </parameter>

      <parameter>

        <parameterName value="@logger" />

        <dbType value="String" />

        <size value="255" />

        <layout type="log4net.Layout.PatternLayout">

          <conversionPattern value="%logger" />

        </layout>

      </parameter>

      <parameter>

        <parameterName value="@message" />

        <dbType value="String" />

        <size value="4000" />

        <layout type="log4net.Layout.PatternLayout">

          <conversionPattern value="%message" />

        </layout>

      </parameter>

      <parameter>

        <parameterName value="@exception" />

        <dbType value="String" />

        <size value="2000" />

        <layout type="log4net.Layout.ExceptionLayout" />

      </parameter>

    </appender>

    

    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%d [%t] %-5p %c - %m%n" />

      </layout>

    </appender>

    <appender name="OutputDebugStringAppender" type="log4net.Appender.OutputDebugStringAppender">

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%-5p %m - %c -%n" />

      </layout>

    </appender>

    <appender name="TraceAppender" type="log4net.Appender.TraceAppender">

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%d [%t] %-5p %c - %m%n" />

      </layout>

    </appender>

    <appender name="AspNetTraceAppender" type="log4net.Appender.AspNetTraceAppender">

      <layout type="log4net.Layout.PatternLayout">

        <conversionPattern value="%d [%t] %-5p %c - %m%n" />

      </layout>

    </appender>


    <root>

      <level value="DEBUG" />


      <appender-ref ref="RollingFileAppender" />


      <!--

      <appender-ref ref="AdoNetAppender" />

      <appender-ref ref="ConsoleAppender" />

      <appender-ref ref="OutputDebugStringAppender" />

      <appender-ref ref="TraceAppender" />

      <appender-ref ref="AspNetTraceAppender" />

      -->

    </root>


  </log4net>

  

</configuration>




내용은 설명을 달아 놓아야 할까 싶을 정도로 간단합니다.

제가 굵게 표시한 글자들만 보셔도 아하~~ 하실거라 생각합니다.


설명을 안할까 생각중인데... 헤헤헤 

에헤~~ 한번 찬찬히 봐 보셔요. ^^

설명 필요없을거예요. 






행복한 고수되셔요. ^^


woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\







'Tools' 카테고리의 다른 글

[Tools] Shared Project in VisualStudio  (0) 2018.10.18
[Tools] GUID Maker Updated.  (0) 2017.10.31
[Tools] Log4Net  (0) 2017.10.12
[Tools] DotNetZip  (0) 2017.10.10
[Tools] 3 Ways to Change Bitrate on MP3 Files  (0) 2017.09.08
[Tools] NShape  (0) 2017.06.28
Posted by woojja
2017.10.10 20:00

.NET Framework 에서 사용할 Zip library 로 DotNetZip 을 사용했습니다.


사용도 편하여 사용 code snippet ? 을 적어봅니다.


공식 Source Page 는 사용이 정지된 Codeplex 의 https://dotnetzip.codeplex.com/ 입니다.

해당 페이지에 사용법도 간단하게? 설명해 놓았습니다.


NuGet Package Manager 에서도 DotNetZip 이라는 Keyword 로 찾으시면 되겠습니다.

제가 사용한 Version 은 1.10.1 입니다.



참조 추가는 해주시고요.


using Ionic.Zip; 으로 사용을 시작하겠습니다.


using Ionic.Zip;


. . . 


string strFileName = string.Format("NewZip_{0}.zip", DateTime.Now.ToString("yyyyMMddHHmm"));

bool isOk = false;


saveFileDialog.CreatePrompt = false;

saveFileDialog.CheckFileExists = false;

saveFileDialog.CheckPathExists = true;

saveFileDialog.Filter = FileFilterZip;

saveFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);

saveFileDialog.FileName = strFileName;


if (saveFileDialog.ShowDialog() == DialogResult.OK)

{

    strFileName = saveFileDialog.FileName;


    . . .


    using (ZipFile zip = new ZipFile { CompressionLevel = CompressionLevel.BestCompression })

    {

        . . . 

        strPath = Path.Combine(strFileFolderPath, "FileName.ext");


        if (File.Exists(strPath))

{

    // Zip 파일내에 FolderName 이라는 Folder 를 만들어 그 폴더 내에 저장합니다.

            zip.AddFile(fi.FullName, "FolderName"); 


            // Zip 파일의 Root 에 저장됩니다.

            // zip.AddFile(strPath, ""); 


            // 이렇게 하시면 System 의 Folder 구조대로 Zip 파일에 포함됩니다. 

            // 경로의 앞부분은 잘립니다.

    // 어느 Depth 에서 잘리는지 확인하지 못했네요. 직접 확인해보시길... ^^;

            // zip.AddFile(strPath); 

}


        if (Directory.Exists(strFolderPath))

{

    // Directory 를 Zip 파일에 포함하고자 할 때 사용하는 구문이겠죠?

            zip.AddDirectory(strFolderPath, strFolderName);


    // 이렇게 하시면 System 의 Folder 구조대로 Zip 파일에 포함됩니다. 

    // 이 경우도 마찬가지로 경로의 앞부분은 잘립니다. ^^;

            // zip.AddDirectory(strFolderPath); 

        }


string strRootPath = dirRoot.FullName;

        foreach (var d in dirRoot.GetDirectories())

        {

            // 이렇게도 사용할 수 있습니다.

    // 이렇게하면 Zip 파일내에 New_Folder 라는

    // Directory 를 생성하고 그 아래에 d Directory를 포함시킵니다.

    zip.AddDirectory(d.FullName, "New_Folder" 

+ d.FullName.Replace(strRootPath, string.Empty));

        } 

        . . .


        zip.Save(strFileName);

        isOk = true;

    }


    if (isOk)

    {

        DialogResult result = MessageBox.Show("Completed Export Work.\n\t Do you want to open result file's location?", "Network Designer", MessageBoxButtons.OKCancel);

        //압축에 성공했으니 압축결과물을 봐야겠죠? ^^


        if (result == DialogResult.OK)

        {

            if (File.Exists(strFileName))

            {

                Process.Start(new ProcessStartInfo("explorer.exe", " /select, " + strFileName));

            }

        }

    }

}


사이트에 설명이 되어 있는 내용도 있고 제가 요리조리 잔머리 굴리며 작성한 내용입니다.

Folder 이름이나 파일명을 바꾸느라 코드에 오류가 있을 수도 있습니다. ^^;

오류가 있더라도 큰 줄기만 잘 살펴보시고...

도움이 되었으면 합니다.



행복한 고수되셔요.


woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




'Tools' 카테고리의 다른 글

[Tools] GUID Maker Updated.  (0) 2017.10.31
[Tools] Log4Net  (0) 2017.10.12
[Tools] DotNetZip  (0) 2017.10.10
[Tools] 3 Ways to Change Bitrate on MP3 Files  (0) 2017.09.08
[Tools] NShape  (0) 2017.06.28
[Tools] GUID Maker  (0) 2017.06.21
Posted by woojja
TAG DotNetZip

 

Car Audio 에서 MP3 를 Player 하고 있지만 언제부터인가 Bitrate 가 높은 음악들이 많아져서

재생이 안되는 경우가 많아졌습니다.

이에 Bitrate 를 바꿔주는 App 이 필요하게 되었는데요.

App 을 만들까 생각하다가 혹시나 싶어 찾아봤는데 좋은 녀석들이 좀 있네요.

 

3 Ways to Change Bitrate on MP3 Files

 

행복한 고수되십시요.

 

woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

 




'Tools' 카테고리의 다른 글

[Tools] Log4Net  (0) 2017.10.12
[Tools] DotNetZip  (0) 2017.10.10
[Tools] 3 Ways to Change Bitrate on MP3 Files  (0) 2017.09.08
[Tools] NShape  (0) 2017.06.28
[Tools] GUID Maker  (0) 2017.06.21
[Tools] HP OMEN 게이밍노트북 (OMEN 15-AX012TX)  (1) 2017.01.23
Posted by woojja
2017.06.28 11:48

이번 프로젝트에서 Drawing 기능을 사용하게 되었습니다. (4월부터 진행했으니 한참지났죠? ㅋㅋㅋ)

Open Source 를 찾아보던 중 알게된 제품입니다.

 

다른 Drawing Tool 보다는 짜임새 있게 만들어져 있습니다만

조금 복잡합니다.

 

Visio 만큼은 아니지만 비등한 기능을 제공합니다.

띄엄띄엄 업데이트가 이루어지고 있고요.

구매고객만 지원하는 것이지는 모르지만

2016년 6월 2.2.1 버전이 마지막 업데이트인것으로 생각됩니다.

 

Codeplex 사이트는 중지되었지만

제품사이트 다운로드보다는 Codeplex 의 버전이 더 높네요. ^^;

 

https://nshape.codeplex.com/

 

한번 사용해 보시지요...

 

 

행복한 고수되십시요. ^^

 

woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




'Tools' 카테고리의 다른 글

[Tools] DotNetZip  (0) 2017.10.10
[Tools] 3 Ways to Change Bitrate on MP3 Files  (0) 2017.09.08
[Tools] NShape  (0) 2017.06.28
[Tools] GUID Maker  (0) 2017.06.21
[Tools] HP OMEN 게이밍노트북 (OMEN 15-AX012TX)  (1) 2017.01.23
[Tools] 텍스트편집기 Sublime Text  (0) 2015.10.01
Posted by woojja
2017.06.21 16:13

수십개의 GUID 를 입력해야하는 상황이 발생했습니다.

 

아래 그림처럼 VisualStudio 의 도구(Tools) 메뉴에 보시면 GUID 생성하는 도구가 있지요?

 

 

실행시키면 아래와 같습니다.

 

 

하지만 수십개의 GUID 만들어야 하는데...

 

New GUID 버튼을 클릭하고 Copy 버튼을 클릭 하는,  

그렇게 두번 클릭해서 복사한다음

Ctrl + V 로 붙여넣기하는 작업을 수십번 해야한다니... 

 

귀찮았습니다. ^^;

 

 

그렇게 어려운 코딩도 아니고 해서 그냥 하나 만들었습니다.

 

 

 

그냥 갯수정한 후 생성하고 전체 복사하는 도구입니다. ^^;

 

 

GUID Maker Source

 

 

Update Version... ^^;

 

 

저 작업도 귀찮았습니다.

생성한다음에 GUID 하나씩 선택해서 복사하기(Crtl + C) 나 잘라내기(Ctrl + X) 한후 다시 붙여넣기(Crtl + V) 하는 세번의 손놀이를 해야하니 손가락이 뻑쩍지근해서. ㅋㅋㅋ

 

 

 

그냥 버튼만 클릭하면 각 포맷으로 ClipBoard 에 저장됩니다.

클릭한번에 붙여넣기 (Crtl + V) 한번이면 되겠습니다.

 

 

GUID Maker 2 Source

 

 

설치파일까지는 생성하지 않았습니다.

 

어차피 개발자 분들만 보시리라 생각하니까... ^^

.NET Framework 4.5 환경에서 C#으로 작성했습니다.

 

 

행복한 고수되십시요. ^^

 

woojja ))*

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

 




'Tools' 카테고리의 다른 글

[Tools] 3 Ways to Change Bitrate on MP3 Files  (0) 2017.09.08
[Tools] NShape  (0) 2017.06.28
[Tools] GUID Maker  (0) 2017.06.21
[Tools] HP OMEN 게이밍노트북 (OMEN 15-AX012TX)  (1) 2017.01.23
[Tools] 텍스트편집기 Sublime Text  (0) 2015.10.01
[Tools] 텍스트 편집기 APTANA  (0) 2015.10.01
Posted by woojja
이전버튼 1 2 3 4 5 이전버튼