집에 있는 데스크톱 컴퓨터에 문제가 생겨서 포맷을 하고 재설치중입니다.
운영체제 및 업데이트는 대충 다 이뤄진듯 하고 이제 Visual Studio를 설치하고 개발환경을 셋팅하고 있는데요.
그동안은 집에서는 영문버전 Visual Studio를 사용했었는데 이번에는 아무리 찾아도 영문판 Visual Studio 설치DVD가 보이질 않아서 어쩔수 없이 한글판 Visual Studio를 설치하였습니다.
얼마 전 Visual Studio 2008 SP1의 경우에는 이미 한글판이 출시되어 있어서 설치를 했습니다. 하지만, 이번 SP1의 경우에는 ASP.NET MVC 는 포함되지 않아서 아직 ASP.NET MVC의 경우에는 아직 한글판이 존재하지 않습니다. 물론, 현재 배포버전인 MVC Preview 3이후에 Preview 4가 나올 듯 하니 아직까지 정식버전 및 한글지원 버전은 좀 더 기다려야 할 듯 합니다.

하지만, 저같은 경우에는 이전에 MVC로 진행하던 것도 있고 해서 ASP.NET MVC Preview 3를 설치하였습니다. 설치시에는 문제가 없었지만, Visual Studio 실행시 새 프로젝트에서 "ASP.NET MVC Web Application" 프로젝트가 보이질 않았습니다. 설치는 정상적으로 이뤄졌는데, 프로젝트 템플릿이 제대로 로드가 되지 않는듯 하여, 인터넷을 뒤지기 시작했습니다.

역시, 제가 생각하는 것은 이미 다른 누군가가 고맙게도 해결책을 내놓아 두었더군요.
이번의 경우에는 taeyo.net에서 찾았습니다.

[MVC] MVC 애플리케이션 개발환경 설정 글과
VS2008 한글 RTM 설치후 추가 작업 해야할 것들 이라는 두개의 글에 걸쳐서 해결방법이 제시되어 있었습니다.

다음을 위해서 여기에 정리해 두자면,
설치후 프로젝트 템플릿이 로드 되지 않는 이유는 영문판과 한글판의 경우 프로젝트 템플릿이 저장되는 경로(버전)이 다르기 때문이며, 영문 버전(1033)폴더에 등록되어 있는 프로젝트 템플릿파일(zip파일)을 한글 버전(1042)폴더로 복사해 넣고, 등록과정을 거치면 사용이 가능합니다.
유의할 점은 ASP.NET MVC의 경우 WEB 프로젝트 외에 Test 프로젝트 템플릿도 함께 등록해줘야 합니다. ASP.NET MVC는 MVC용 테스트 프로젝트가 따로 존재하기 때문입니다.
그리고, 프로젝트에서 추가할 수 있는 Controller 클래스등의 아이템 템플릿들도 등록해야 합니다.

  1. ASP.NET MVC 프로젝트 템플릿 복사
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Web\1033 폴더(VS 영문판용 폴더)에 존재하는 MvcWebApplicationProjectTemplateP3.cs.zip 파일을
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Web\1042 폴더(VS 한글판용 폴더)로 복사한다.
  2. ASP.NET MVC용 테스트 프로젝트 템플릿 복사
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Test\1033 폴더(VS 영문판용 폴더)에 존재하는
    MvcWebApplicationTestProjectTemplateP3.cs 파일을
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Test\1042 폴더(VS 한글판용 폴더)로 복사한다.
  3. MVC용 아이템 템플릿을 생성
    MVC용 아이템 템플릿은 영문판용 폴더만 존재하고 한글판용 폴더는 존재하지 않습니다.
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC\1033 폴더에 포함된 파일들을
    C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC\1042 폴더를 새로 생성하여 추가합니다.
  4. Visual Studio 2008 명령 프롬프트에서
    devenv.exe /installvstemplates
    devenv.exe /setup

    명령을 실행한다.

MVC Project가 추가된 화면

Posted by WHiSTLE

트랙백 주소 http://blog.ntils.com/trackback/41 관련글 쓰기

댓글을 달아 주세요

Visual Studio의 재시작시에 CopySourceAsHtml에서 오류가 발생하는 문제의 해결방법을 첨부합니다. (2007.10.18)

블로그나 게시판등에 Visual Studio에서 개발하던 소스를 추가하기 위해서 복사&붙여넣기를 하면 탭간격이나 글꼴등의 문제로 인해서 직접 다듬어야 하는 경우가 자주 발생합니다.
개발자라면 누구나 느끼는 문제일텐데요.

Visual Studio를 이용하고 계시는 분이라면 이러한 불편함을 말끔하게 해소해 주는 Visual Studio Addin을 유경상님께서 블로그에 소개시켜주시고 있습니다.

CopySourceAsHtml 이라는 Addin인데요. 원본파일은 한글문제와 여러가지 문제가 존재하여 감사하게도 유경상님께서 따로 한글환경에서도 문제없이 돌아가는 버전까지 공개해주시고 계시죠.

좀더 자세한 내용을 알고 싶으시거나 자료를 다운로드 받고자 하시는 분은 유경상님 블로그로 방문해보세요.

(저 같은 경우에는 유경상님 블로그에서 받은 파일로 Visual Studio 2008에 등록시에 최초에는 잘 실행이 되었지만, 재 시작시에 CopySourceAsHtml에서 오류가 발생하였습니다. 이 부분의 수정과 적용에 관해서는 글 하단에서 다루도록 하겠습니다. 2007.10.18)

문제는 이 CopySourceAsHtml이 Visual Studio 2005용 Addin이라는 거죠. 물론 원본 배포사이트에는 2003버전용도 존재합니다만, 아직 Visual Studio 2008용은 배포를 하고 있지 않죠.

Visual Studio 2008이 아직 beta이긴 하지만, 이전 .NET Framework버전에 대한 프로그래밍이 가능하므로 많은 분이 사용하고 계실텐데요. 2005용 Addin을 Addins폴더로 복사만 해넣어서는 제대로 동작하질 않죠. 하지만 유용하게 하던 기능이 없으면 엄청 불편하죠..^^;

이리 저리 궁리하던차에 CopySourceAsHtml을 Visual Studio 2008에 등록시키는데 성공하여 공유차원에서 포스팅을 합니다.

  1. 우선 CopySourceAsHtml을 이용하고 계시다면 %문서%\Visual Studio 2005\Addins\ 폴더에 존재하는 CopySourceAsHtml.AddIn, CopySourceAsHtml.dll, CopySourceAsHtml.dll.config 3개 파일을 %문서%\Visual Studio 2008\Addins\ 또는 %문서%\Visual Studio Codename Orcas\Addins\ 폴더로 복사해 줍니다.(Addins 폴더가 존재하지 않는다면 만들어주면 됩니다.)
  2. 복사 되었으면 CopySourceAsHtml.AddIn 파일을 편집기로 엽니다. XML형식이므로 원하는 텍스트 편집기를 이용하시면 됩니다.
    열어보시면 <HostApplication> 이라는 태그 하위태그로 <Version>이라는 태그들의 내용을 8.0 에서 9.0으로 변경해주세요.

    <?xml version="1.0" encoding="UTF-16" standalone="no"?>

    <Extensibility xmlns="http://schemas.microsoft.com/AutomationExtensibility">

        <HostApplication>

            <Name>Microsoft Visual Studio Macros</Name>

            <Version>9.0</Version>

        </HostApplication>

        <HostApplication>

            <Name>Microsoft Visual Studio</Name>

            <Version>9.0</Version>

        </HostApplication>

        <Addin>

            <FriendlyName>CopySourceAsHtml</FriendlyName>

            <Description>Adds support to Microsoft Visual Studio 2005 for copying source code, syntax highlighting, and line numbers as HTML. (Modified by Loner, SimpleIsBest.NET)</Description>

            <Assembly>CopySourceAsHtml.dll</Assembly>

            <FullClassName>JTLeigh.Tools.CopySourceAsHtml.Connect</FullClassName>

            <LoadBehavior>1</LoadBehavior>

            <CommandPreload>0</CommandPreload>

            <CommandLineSafe>0</CommandLineSafe>

        </Addin>

    </Extensibility>

  3. 저장하신후 Visual Studio 2008을 실행하시고, Tools - Add-in Manager(도구 - 추가기능관리자)를 실행하고 활성화 시켜 줍니다.
     
  4. 이제 Visual Studio 2008에서도 CopySourceAsHtml을 사용하실 수 있습니다.

 

VisualStudio 시작시 오류해결방법 (2007.10.18 추가)

한번 Visual Studio를 실행하면 퇴근할때까지는 잘 종료를 안하다 보니 오늘에서야 Visual Studio를 재시작시에 CopySourceAsHtml 에서 오류가 발생한다는 것을 알게되었습니다.
확실히 점검하지 않고 글을 등록한점 정말 죄송합니다. ( _ _ )
저는 Vista환경에 Visual Studio 2008은 beta2 영문판이 설치되어 있으며, Visual Studio 2005는 한글판이 설치되어 있는데, 2005, 2008 모두에서 문제가 발생하더군요.
또한 프로젝트 속성 클릭시에서 오류가 발생하고 있었습니다.

우선 발생하는 문제들을 해결하는 방법은 유경상님의 포스트 하단 댓글로 작성된 "하늘로사랑한신발" 박길선님의 홈페이지 잘 소개되어 있습니다. (박길선님께 감사드립니다)

우선 원본 배포사이트에서 "CopySourceAsHtml 2.0.0 Source (91 KB)" 를 다운로드 받습니다.

박길선님 홈페이지로 들어가셔서 "Copy Source As Html" rev 0.2 게시물에 적혀 있는데로 코드를 수정합니다.

그런데, 박길선님 홈페이지 등록된 수정방법대로 수정후에 반영시키면 한글을 제대로 인식하지 못하는 문제가 발생합니다. 유경상님 소스를 역컴파일하여 수정하시어 소스는 역시 공개하지 않으셨네요. 하지만 문제만 해결한다고 해서 한글이 지원되지 않으면 아무런 필요가 없죠.. -_-;

한글 문제를 해결하기 위해서는 RtfParser.cs를 추가로 아래와 같이 수정하셔야 합니다.
우선은 아래와 같이 수정하시면 한글을 지원합니다. 유경상님 님께서 동일하게 수정하셨는지는 몰라도 역컴파일하지 않았으니 상관없겠죠? 66 - 69 라인을 추가해주시면 됩니다.

RtfParser.cs

   25 protected void ParseRtf(string rtf)

   26 {

   27 

   28     int first;

   29     int last;

   30     int index;

   31     int mark;

   32     string controlWord;

   33     bool hasParameter;

   34     long parameter;

   35 

   36     first = 1;

   37     last = rtf.Length - 1;

   38     for (index = first; index < last; index++)

   39     {

   40 

   41         switch (rtf[index])

   42         {

   43             case '{':

   44                 index += ParseOpeningBrace(rtf, index + 1);

   45                 break;

   46             case '}':

   47                 index += ParseClosingBrace(rtf, index + 1);

   48                 break;

   49             case '\\':

   50                 index++;

   51                 if (char.IsLetter(rtf[index]))

   52                 {

   53                     mark = index;

   54                     while ((index < last) && (char.IsLetter(rtf[index])))

   55                     {

   56                         index++;

   57                     }

   58                     controlWord = rtf.Substring(mark, index - mark);

   59                     if ((index < last) && ((char.IsDigit(rtf[index])) || (rtf[index] == '-')))

   60                     {

   61                         mark = index;

   62                         while ((index < last) && ((char.IsDigit(rtf[index])) || (rtf[index] == '-')))

   63                         {

   64                             index++;

   65 

  66                             if (controlWord.Equals("uc"))

   67                             {

   68                                 break;

   69                             }

   70                         }

   71                         hasParameter = true;

   72                         parameter = Int64.Parse(rtf.Substring(mark, index - mark));

   73                     }

   74                     else

   75                     {

   76                         hasParameter = false;

   77                         parameter = 0;

   78                     }

   79                     if (rtf[index] != ' ')

   80                     {

   81                         index--;

   82                     }

   83                     index += ParseControlWord(rtf, index + 1, controlWord, hasParameter, parameter);

   84                 }

   85                 else

   86                 {

   87                     index += ParseControlSymbol(rtf, index + 1, rtf[index]);

   88                 }

   89                 break;

   90             case '\r':

   91             case '\n':

   92                 break;

   93             default:

   94                 index += ParseLiteralText(rtf, index + 1, rtf[index]);

   95                 break;

   96         }

   97     }

   98 }

수정완료후 Build 하시고 CopySourceAsHtml.dll 파일과 CopySourceAsHtml.pdb 파일을 AddIns폴더로 덮어써주시면 문제가 해결이 되며, 한글도 제대로 출력됩니다.

혹시 문제가 발생하신다면 댓글로 남겨주세요..

Posted by WHiSTLE

트랙백 주소 http://blog.ntils.com/trackback/23 관련글 쓰기

댓글을 달아 주세요

이전버튼 1 이전버튼