레이블이 닷넷인 게시물을 표시합니다. 모든 게시물 표시
레이블이 닷넷인 게시물을 표시합니다. 모든 게시물 표시

2010년 8월 26일 목요일

VS2008 을 VS2010 에서 동시에 개발하기

출처: http://blog.powerumc.kr/314


6월 1일 REMIX10 행사를 기점으로 Visual Studio 2010 한글판이 대중에 공개가 되었습니다. Visual Studio 2010 의 영문 버전은 그 이전에 출시가 되었지만 한글판이 출시된 이후에 더 많은 관심을 받게 되었습니다.

Visual Studio 2010 으로 개발 환경을 업그레이드를 진행하는 곳이 특히 해외에서 많습니다. 제가 그걸 어떻게 다 아냐구요? 항상 트위터 검색을 통해 해외에서 Visual Studio 2010 를 어떻게 사용하고 있는지 매일 매일 관심 있게 보고 있답니다. ^^

어쨌든 Visual Studio 2008 을 쓰고 있지만, Microsoft MVP 이거나 회사에서 MSDN Subscription 라이선스가 있다면 Visual Studio 2008, Visual Studio 2010 개발 도구가 혼합해서 사용될 경우가 있습니다. 이런 경우 두 개발 도구에서 쌍방 개발 가능하게 구성을 할 수 있습니다.

이 방법은 제니퍼소프트의 정성태 과장님의 블로그에서 예전에 소개했던 VS2005, VS2008 혼합해서 사용하는 방법과 동일합니다.

1. 간단한 예제로 Console Application 을 Visual Studio 2008 에서 생성했습니다.

   

2. 기존의 솔루션 파일의 복사본을 하나 만듭니다.

   

3. 솔루션 파일을 노트패드로 ConsoleApplication - VS2010.sln 파일을 열어 다음의 항목을 수정합니다.

   

4. 프로젝트 파일을 열어 ToolsVersion 의 '3.5' 를 '4.0' 으로 수정합니다. 'ConsoleApplication1.csproj'

  

만약 다수의 프로젝트일 경우, 위의 3번에서 수정한 솔루션 파일을 열면 프로젝트를 변환하는 마법사로 진행하면 쉽게 변경이 됩니다.

   

5. 모두 완료 되었습니다. Visual Studio 2010 와 Visual Studio 2008 에서 각각의 솔루션 파일로 동시에 작업을 할 수 있습니다.

   

위의 방법을 이용하여 Visual Studio 2008 과 Visual Studio 2010 에도 모두 개발이 가능합니다. 하지만 만약 테스트 프로젝트가 포함이 되어 있다면 두 개발 도구에서 사용할 수 없습니다. 왜냐하면 .NET Framework 4.0 에서는 테스트와 관련된 Microsoft.VisualStudio.Quality 프레임워크가 개선되고, Microsoft.VisualStudio.TestTools 프레임워크가 추가되면서 이전 Visual Studio 2008 과 프로젝트가 호환이 되지 않습니다.    

하지만 불가능할 것 같은 테스트 프로젝트도 Visual Studio 2008과 Visual Studio 2010에서 동시에 사용할 수 있는 방법이 있습니다. 이것은 다음에 알아보도록 하겠습니다.


2009년 12월 23일 수요일

[C#] 문자열 총 바이트 계산

출처: devpia.com
http://www.devpia.com/Maeul/Contents/Detail.aspx?BoardID=17&MAEULNo=8&no=67725&ref=67716
유경상 (Loner) 2006-10-26 오전 12:13:08



닷넷에서 문자열은 유니코드를 사용합니다. 한글이던 영문이던 숫자건 특수기호건 모두 2바이트를
차지하지요. 문자열의 길이 곱하기 2 하면 끝이 납니다만...
닷넷의 문자열을 파일에 기록하거나 네트워크로 전송할 때 유니코드를 사용하지 않고
euc-kr 이나 ks_c_5601-1987(Windows에서 사용하는 한글 ANSI 문자셋이지요) 혹은
UTF8 등으로 인코딩하게 되면 그 길이는 각 인코딩 마다 다르게 나타납니다.

euc-kr 및 ks_c_5601-9 인코딩은 한글은 2바이트, 영문/숫자는 1바이트, 기호는 1바이트 혹은
2바이트를 차지하고 UTF8은 상당히 복잡한 구조입니다.
따라서 각 인코딩별로 바이트 수는 달라지며 System.Text.Encoding 클래스를 이용하여 바이트 길이를 알아내야 합니다.


System.Text.Encoding.UTF8.GetByteCount(str) => UTF8 문자셋 사용시 바이트 길이
System.Text.Encoding.GetEncoding("ks_c_5601-1987").GetByteCount(str) => ks_c_5601-1987 문자셋 사용시 바이트 길이
System.Text.Encoding.Default.GetByteCount(str) => 운영체제 기본 문자셋 사용시 바이트 길이
str.Length * 2 => 유니코드(UTF16) 사용시 바이트 길이
System.Text.Encoding.Default를 사용하면 해당 운영체제의 디폴트 문자셋을 사용합니다.

한글 윈도우인 경우 ks_c_5601-1987, 영문 윈도우일 경우 ASCII 와 비스므레한
ISO-8xxx (정확한게 기억이 안나서... -_-)
문자셋을 사용하게 되지요.
도움이 되셨기를....

-----------------------------------------------------------------------
[Development Consultant, Microsoft MVP]
TheOne Technology Inc.
http://www.theonetech.co.kr
The Simpe is The Best !
http://www.simpleisbest.net

[C#] 숫자금액->한글로 변환


static public string Number2Hangle(long lngNumber)
{
	bool UseDecimal = false;
	string Sign = "";
	int i = 0;
	int Level = 0;

	string[] NumberChar = new string[] { "", "일", "이", "삼", "사", "오", "육", "칠", "팔", "구" };
	string[] LevelChar = new string[] { "", "십", "백", "천" };
	string[] DecimalChar = new string[] { "", "만", "억", "조", "경" };

	string strValue = string.Format("{0}", lngNumber);
	string NumToKorea = Sign;
	UseDecimal = false;

	for (i = 0; i < strValue.Length; i++)
	{
		Level = strValue.Length - i;
		if (strValue.Substring(i, 1) != "0")
		{
			UseDecimal = true;
			if (((Level - 1) % 4) == 0)
			{
				NumToKorea = NumToKorea + NumberChar[int.Parse(strValue.Substring(i, 1))] + DecimalChar[(Level - 1) / 4];
				UseDecimal = false;
			}
			else
			{
				if (strValue.Substring(i, 1) == "1")
				{
					NumToKorea = NumToKorea + LevelChar[(Level - 1) % 4];
				}
				else
				{
					NumToKorea = NumToKorea + NumberChar[int.Parse(strValue.Substring(i, 1))] + LevelChar[(Level - 1) % 4];
				}
			}
		}
		else
		{
			if ((Level % 4 == 0) && UseDecimal)
			{
				NumToKorea = NumToKorea + DecimalChar[Level / 4];
				UseDecimal = false;
			}
		}
	}
	return NumToKorea;
}