[C#] dll을 포함한 단일 exe배포 방법

[C#] dll을 포함한 단일 exe배포 방법

CSharp
일반적으로 프로그램을 배포시 exe파일과 Application이 호출하는 dll파일은 동일한 폴더(또는 dll 파일이 System폴더에 위치)에 있어야 한다. Microsoft 공식 배포처에서는 exe와 호출하는 라이브러리를 병합하는 프로그램을 배포중이지만, 컴파일러단에서 자체 해결할 수 있는 방법도 존재한다. 사용하고자 하는 dll을 프로젝트에 참조해당 dll을 프로젝트 리소스에 추가리소스에 추가된 dll의 속성 -> 빌드작업 속성 값을 포함 리소스로 지정프로그램 진입점(Program.cs)에 코드를 아래와 같이 변경리소스에 dll 파일 포함하기dll 파일 => 속성 => 빌드작업 ++ 포함리소스로 변경 using System.Reflection; using System.IO; /// <summary> /// 해당 응용 프로그램의 주 진입점입니다. /// </summary> [STAThread] static void Main() { // 리소스 dll 취득 AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(ResolveAssembly); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); } // .NET 4.0 이상 static Assembly ResolveAssembly(object sender, ResolveEventArgs args) { Assembly thisAssembly = Assembly.GetExecutingAssembly(); var name = args.Name.Substring(0, args.Name.IndexOf(',')) + ".dll"; var resources = thisAssembly.GetManifestResourceNames().Where(s => s.EndsWith(name)); if (resources.Count() > 0)…
Read More

[C#] 원하는 URL 원하는 웹브라우저로 실행하기

CSharp
WinForm을 만들여서 특정한 URL에 대해서 웹으로 접근해야 합니다.내장현 브라우저를 사용해도 되지만 사용자가 사용하는 웹브라우저는 분명히 존재하거나 혹은 기본으로 설정해 놓은 값이 다르면은 츨력에 에러가 발생할때도 있습니다.그래서 단순하게 OS에 기본 브라우저를 믿을것이 아니라 개발자가 직접 지정을 해서 실행을 하면은 좀 더 명확하게 원하는 웹브루어저로 웹에 접근을 할 수 있을것 같아서 찾아본것입니다. ProcessStartInfo cmd = new ProcessStartInfo(); Process process = new Process(); cmd.FileName = @"cmd"; cmd.WindowStyle = ProcessWindowStyle.Hidden; // cmd창이 숨겨지도록 하기 cmd.CreateNoWindow = true; // cmd창을 띄우지 안도록 하기 cmd.UseShellExecute = false; cmd.RedirectStandardOutput = true; // cmd창에서 데이터를 가져오기 cmd.RedirectStandardInput = true; // cmd창으로 데이터 보내기 cmd.RedirectStandardError = true; // cmd창에서 오류 내용 가져오기 process.EnableRaisingEvents = false; process.StartInfo = cmd; process.Start(); process.StandardInput.Write(@"start explorer http://naver.com "+ Environment.NewLine); // 크롭 //process.StandardInput.Write(@"start firefox http://naver.com "+ Environment.NewLine); // 파이어폭스 //process.StandardInput.Write(@"start whale http://naver.com "+ Environment.NewLine); //…
Read More

[C#] datagridview에 아이콘 표시 하기

CSharp
[C#] datagridview에 아이콘 표시 하기 Datagrid에 Header부터 행 처리에 있어서 필요한 코드만 정리해 놓은것입니다.사용 방법은 자신이 원하는 형태로 처리 하시기 바랍니다. // header dataGridView1.Visible = true; dataGridView1.AutoGenerateColumns = false; dataGridView1.RowHeadersVisible = false; dataGridView1.MultiSelect = false; dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells; dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True; dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Red; dataGridView1.Columns.Add(new DataGridViewTextBoxColumn() { HeaderText = "제목", ReadOnly = true, AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, FillWeight = 10 }); dataGridView1.Columns.Add(new DataGridViewImageColumn() { HeaderText = "아이콘 출력 ", Width = 40, ReadOnly = true, AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill, ValuesAreIcons = true, FillWeight = 5 }); // 아이콘 정의 Icon New = Properties.Resources.newicon; // icon의 x 자 표시 없애주기 dataGridView1.Columns[1].DefaultCellStyle.NullValue = null;
Read More

[C#] Treeview 문자 검색 하여서 노드 찾기

CSharp
[C#] Treeview 문자 검색 하여서 노드 찾기 Treeview 사용에 있어서 정확하게 node를 지정할 수 있으면 가장 편하지만은 사용자의 값을 넣다 보면은 규칙적으로 변하지 않을 경우에 강제로 treeview에서 node로 검색을 해서 추가 해야 합니다.해당 기능의 소스 입니다. private TreeNode SearchNode(string SearchText, TreeNode StartNode) { TreeNode node = null; while (StartNode != null) { if (StartNode.Text.ToLower().Contains(SearchText.ToLower())) { node = StartNode; break; }; if (StartNode.Nodes.Count != 0) { node = SearchNode(SearchText, StartNode.Nodes[0]); //Recursive Search if (node != null) { break; }; }; StartNode = StartNode.NextNode; }; return node; }
Read More

[C#] Treeview에 아이콘 표시 방법

CSharp
winform 작업할 경우에 treeview를 사용할때 아이콘을 표시해서 좀 더 명확하게 보여주어야 할때가 있습니다.이럴 경우에 아이콘을 사용하면은 글을 읽이 않아도 아이콘 모양으로 한번에 알아 보기 쉽도록 하기 위해서 필요한 기능입니다. 리소스에 아이콘을 추가 하고 해당이름으로 리스트를 만듭니다.이 이후에 treeview에 node에 맞춰서 추가를 해 주면 됩니다. // 아이콘 리스트 만들기 ImageList myimageList = new ImageList(); myimageList.Images.Add(Properties.Resources.icon); // 아이콘 1 myimageList.Images.Add(Properties.Resources.icon2); //아이콘 2 treeView1.ImageList = myimageList; // 아이콘 추가 TreeNode AllCreator = new TreeNode("이름"); AllCreator.ImageIndex = 0; AllCreator.SelectedImageIndex = 0; treeView1.Nodes.Add(AllCreator);
Read More

[C#] 디렉토리, 파일 유무 체크

CSharp
// 디렉토리 유무 체크 System.IO.DirectoryInfo di = new System.IO.DirectoryInfo("디렉토리 경로"); if(di.Exists) { // 디렉토리 존재 } else { // 디렉토리 없음. } // 파일 유무 체크 string _Filestr = "파일 경로"; System.IO.FileInfo fi = new System.IO.FileInfo(_Filestr); if(fi.Exists) { // 파일 존재 } else { // 파일 없음. }
Read More

[C#] – Unix TimeStamp를 DateTime으로 변환하기

CSharp
C# – Unix TimeStamp를 DateTime으로 변환하기 Unix 시스템에서는 1970년 1월 1일(GMT)을 기준으로 초를 측정하여 시간을 나타냅니다. static DateTime ConvertFromUnixTimestamp(double timestamp) { DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); return origin.AddSeconds(timestamp); } static double ConvertToUnixTimestamp(DateTime date) { DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0); TimeSpan diff = date - origin; return Math.Floor(diff.TotalSeconds); }
Read More

[C#] 숫자 3자리 마자 콤마 찍기

CSharp
int won = 123456890; Console.WriteLine(string.Format("{0:n0}", won)); Console.WriteLine(string.Format("{0}", won.ToString("n0"))); ; Console.WriteLine(string.Format("{0:#,##0}", won)); Console.WriteLine(string.Format("{0}", won.ToString("#,##0"))); //결과 //123,456,890 //123,456,890 //123,456,890 //123,456,890
Read More
[C#] 연봉정보 검색 후 상세정보 수집

[C#] 연봉정보 검색 후 상세정보 수집

CSharp
[C#] 연봉정보 검색 후 상세정보 수집 Jobkorea의 연봉검색을 통해서 전체 기업명과, 기업의 연봉정보를 직급결로 수집하는것입니다. 한번에 전체 수집도 있지만, 개별적으로 검색해서 수집을 할 수 있는 기능을 포함을 요청 하였습니다. 작업환경 Visual Studio 2013 C# WinForm HtmlAgilityPack 라이브러리 사용 요구사항 1. Jobkorea 로그인 하여서 연봉 검색후 파일 저장 요청 2. 전체 기업 목록을 수집 3. 원하는 기업 검색후 해당 기업만 선택후 수집 4. 각 기업의 상세정보의 직급별 정보를 요청함 작업 화면 (※ 작업화면의 결과는 일반적으로 공개되지 않으면은 일부 내용을 삭제 처리하여서 난독화 시켜 놓습니다.) 1. 초기 화면 1-1. 연봉 전체 검색시 화면 1-2. 개별 검색 화면 2. 목록 파일 생성 결과 화면 해당 목록의 파일을 생성합니다. 중복을 최대한 억제하기 위해서 개별적으로 날짜와 시간을 넣어서 파일명의 동일할 경우에 덮어쓰지 않도록 하였습니다. 파일은 CSV(Tab 구분)으로 생성하여서 파일을 생성한 화면 입니다. 3. 개별 상세…
Read More
[C#] skechers.com 스크래핑 웹페이지 Source 크롤링

[C#] skechers.com 스크래핑 웹페이지 Source 크롤링

CSharp
# 요구사항1. 전체 상품을 모두 가져와야 한다.2. 각 상품의 모든 보여주는 이미즈를 모두 저장해야 한다.3. 각 상품의 고유한 정보는 정리해서 모두 등록한다. # 작업환경Visual Stuido 2013 C# WinForm, MySQLPHP 7.0.4 (cli) skechers.com 작업은 조금 귀찮은 작업으로 이뤄졌습니다.일단 AJAX로 json 값을 가져와서 페이지에 로딩하기때문에 한번에 HTML 소스를 가져오지 못하였습니다. 위 사진과 같이 상품 진열 페이지가 일반적으로 보면은 웹페이지만은 AJAX로 추가되기 때문에 소스를 가져오는 방식이 조금 사물 다릅니다. 각 상품의 URL 주소를 번호를 주어서 아래와 같이 저장을 하여서 1~* 까지 번호로 저장을 하였습니다.물론 각기 원하는 방식으로 저장도 되지만은 숫자가 가장 편한 작업니다. 이후에 작업은 C#에서 처리 하지 않았습니다.PHP로 LOCAL로 처리 하였습니다
Read More

[C#] Webbrowser의 스크롤을 가장 하단으로 보내기

CSharp
웹브라우저를 사용할 경우에 가로 스크롤를 가장 하단으로 보내는것입니다. #파라미터 Bool # true : Top # false : bootom webBrowser1.Document.Body.ScrollIntoView(false); 사용하는 목적은 가로 스크롤이 길 경우에 화면에 보이는 부분을 가장 하단으로 하여서 지표를 보기 위해서 입니다.
Read More
[C#] 네이버 카페 글 목록 및 내용 수집

[C#] 네이버 카페 글 목록 및 내용 수집

CSharp
네이버 카페 글 목록 및 내용 수집 요청하신분이 네이버 카페인 '중고나라'의 게시물 수집을 요청하였습니다.그외에 요구 사항은 없었으며, 단순하게 수집해서 파일을 기록하는 작업입니다. 작업환경Visual Studio 2013, HtmlAgilityPack  사용 요구사항1. 네이버 로그인 처리2. 카페 특정 게시판 글 수집 ( 파일로 생성)3. 글 수집된 게시물의 내용 수집 ( 파일로 생성) 1. 프로그램 실행 화면 글 목록 수집 화면 2. 글 제목 저장 목록 (파일로 저장) 3. 글 내용 저장 목록 및 소스4. 글 내용 페이지 이렇게 구성 되어 있습니다. 해당 항목을 가지고 다른사람이 key값을 설정해서 다시 DB 작업을 하게 될 것 같습니다. 이 글이 작성된 시기는 2016년 3월 경이며, 제가 작업해드린분의 내용을 바로 공개 할 수 없어서 블로그 내용을 비공개로 해두다가 지금은 공개해도 될것 같아서 공개 합니다.그렇다고 하여서 소스를 공개 하는것은 아닙니다. 웹스크래핑 작업은 소스를 공개해서 무분별하게 도용되는 것을 막기 소스 공개를 하지 않는것이…
Read More