Others/C# 일반(17)
-
[WPF] 어셈블리를 exe파일에 합치기
WPF프로그램을 빌드하면 관련된 어셈블리(dll)들이 exe파일과 같이 생성됩니다. 이 어셈블리 파일들을 exe파일과 같이 고객PC에 배포해야 프로그램이 정상적으로 동작합니다. 실행에 필요한 어셈블리를 배포하는 방법은 여러가지가 있지만, 여기서는 exe파일에 포함시키는 방법에 대해 소개합니다. 띠리사 exe파일만 배포해도 프로그램이 정상적으로 실행되게 됩니다. 먼저 모든 어셈블리를 프로젝트의 폴더에 포함시킵니다. 폴더명은 원하는 폴더명으로 하시면 됩니다. 위에서 포함한 모든 어셈블리의 Build Action을 Embedded Resources로 합니다. App Class로 이동해 다음과 같이 작성합니다. public partial class App : Application { public App() { ..
2017.05.21 -
[.NET] Framework Profiles in .NET
.NET Runtime 버전은 매우 다양합니다. Desktop Framework, Windows Phone, Silverlight, Windows Store 등등 다양한 플렛폼을 지원하기 위해 다양한 Framework를 지원합니다. 여기서는 각 Framework를 구분하는 방법과 종류를 설명합니다. FrameworkName.NET Framework는 FrameworkName을 통해 구분할 수 있습니다. FrameworkName은 Identifier, Version, Profile로 구성됩니다. Identifier와 Profile는 대소문자를 구분합니다. FrameworkName의 형태는 다음과 같습니다. Identifier, Version=VersionNumber [,Profile=ProfileName]..
2016.03.30 -
[C#] Portable Class Library
.NET Framework Potable Clas Library project을 이용하면 cross platform app과 library를 신속하고 간단히 개발하실 수 있습니다. Portable Class Library project로 제작된 library는 Windows와 Windows Phone와 같은 다양한 플렛폼에서 사용하실 수 있습니다. Portable Class Library type으로 생성하고 개발이 진행된 경우라도, 언제든지 target platform을 변경하실 수 있습니다. Visual Studio는 새로운 target platform에 맞추어 새로운 Assembly를 생성하게 됩니다. Microsoft는 Portable Class Library들을 제공하고 있으며, 이를 통해 다양..
2016.03.29 -
[Office] 엑셀문서 접근 시 주의사항
Microsoft.Office.Interop.Excel을 통해 Excel문서에 동적으로 접근할 때 주의할 사항 HRESULT: 0x800A03EC 이 오류코드는 ‘접근오류’를 의미한다 Cells에 1 미만의 Index를 지정했을 때 (반드시 1부터 시작) Excel 2003 문서는 최대 256개 Column, 65,536개 Row까지 지원함 (2007부터는 최대 16384개 Column, 1,048,576개 Row를 지원) Cell에 Lock이 걸려 있는 등, 쓰기 불가 상태인 경우 병합된 셀은 반드시 해당 Cell의 첫 번째 Row Index, Column Index를 통해 접근해야함 (예: A3부터 B5까지 병한한 셀은 반드시 A3로만 접근해야 함) 셀의 내용은 = 문자로 시작할 수 없음. ‘=으로 ..
2015.07.17 -
[C#] Async, Await를 이용한 비동기 프로그래밍
VisualStudio 2012, .NET Framework 4.5부터 지원하는 대표적인 기능 중 하나가 바로 비동기 프로그래밍 입니다. 여기서는 비동기 프로그래밍이 무엇인지 정리 드리고자 합니다.. 비동기가 왜 필요할까? 웹 2.0 시대가 오면서 OpenAPI, 매쉬업을 통한 개발이 각광받게 되었습니다. 즉, 다른 웹사이트의 자원을 요청하고 가공하여 서비스를 제공하는 경우가 많아지게 된 것이죠. 하지만 이러한 외부 서비스 자원은 가장 느리고 불안정한 자원으로써 서비스의 대기시간이 길어지게 하는 원인으로 작용하게 됩니다. 이렇게 늘어난 서비스 대기시간은 필연적으로 병목을 발생시키고 이는 전체적인 Application의 반응성을 떨어뜨리게 됩니다. 급기야 사용자가 늘어날 수록 비용은 급상승하게 되고 경우에..
2014.03.26 -
[C#] N개의 공백을 하나의 공백으로 치환하기
불필요한 공백문자를 제거하기 위해서 자주 사용하는 방법은 Trim()을 사용하는 것입니다. 하지만 Trim()은 문자열 시작과 끝부분의 공백을 제거할 뿐입니다. 하지만 문자열 사이의 불필요한 공백은 어떻게 제거할 수 있을까요? 쉽게 생각할 수 있는 방법은 Replace()를 이용한 방법이 있지만, 아쉽게도 그 방법은 정상동작 하지 않습니다. string name = " 제임스 스미스 "; Console.WriteLine("결과:[" + name.Replace(" ", " ") + "]"); 결과는 ‘결과:[제임스 스미스 ]’ 로 나타납니다. Replace()는 이어지는 공백 중 첫 공백만 치환하기 때문에 위와 같이 기대와 다르게 결과가 나타납니다. 해결책은 간단히 Split(), Join()를 활용하는 ..
2013.12.27