Exception has been thrown by the target of an invocation

Exception has been thrown by the target of an invocation

라고 뜨면서 Visual Studio 2017 디버깅이 불가능한 지경에…
재설치를 해도 해결 되지 않고 해서 찾다보니

  1. Visual Studio 를 모두 종료
  2. AppData\Local\Microsoft\VisualStudio\12.0\ComponentModelCache 의 파일 모두 삭제
  3. 재시작… 그래도 안되면
  4. devenv.exe /Setup /ResetSkipPkgs

Skip 된 패키지의 찌끄러기가 남아서 그랬나 봅니다.

Visual Studio 2015의 64비트 빌드 도구

정상적이라면 IDE의 설정에 따라 64비트 빌드 도구로 빌드가 되어야 하나

버그가 있어서 빌드 과정에 일부 32비트 빌드 도구를 여전히 사용하게 된다. 이에 따라 컴파일러(CL.exe)나 링커(Link.exe)에서 내부 오류 또는 메모리 부족 오류를 발생시킨다.

IncrediBuild를 사용하는 경우라면 강제로 64비트 도구를 사용하게 설정할 수 있으나

IDE만 사용하는 경우라면 x64 네이티브 도구 명령 프롬프트를 열어서 CLI 환경에서 빌드를 해야 한다

IncrediBuild와 Visual Studio 2015의 문제점

IncrediBuild 7.31보다 아래 버전을 사용하면
영문판 Visual Studio 2015가 아닌 경우 빌드가 되지 않는 문제가 발생합니다.

7.31 빌드 노트를 보면 수정이 있었으나 영문판 사용을 권장한다고 나옵니다.

해당 문제는 영어 언어 지원 팩을 설치하고, VS IDE의 설정에서 영어로 언어를 변경하면 해결됩니다.

Visual Studio 2015를 보면서

MS는 역시 막강한 회사이라는 게 느껴지는…

Visual Studio 하나면… Windows, Windows Universal, Android, iOS, Web …

뭐든 다 되는 세상이 왔군요…

본의 아니게 포맷해서 VS2015 Community 설치했는데… 저번에는 Epic Games는 안보였던 거 같은뎅 ㅎㅎ

Visual Studio 설치할 때는

BS가 Visual Studio 2015를 사용 중입니다.

집에서는 Community Edition, 회사에서는 Professional Edition

언제 나왔는지 모르지만 Visual Studio 2015 Update 1이 출시되었더군요.

설치했습니다.

집, 회사 둘 다 망했습니다. 오류가 뜨면서 Visual Studio 2015는 실행이 안됩니다.

복구를 했습니다.

실행하면서 오류가 빡 뜹니다.

Visual Studio 2015는 설치할 때 컴포넌트 모두 설치하고
절대 제거를 하지 않아야 하며,
만약, 컴포넌트를 추가 또는 제거할 필요가 있다면, 포맷을 하고 클린 설치를 할 각오로 해야 한다는 걸
이제야 깨닫게 되었습니다.

결론… Visual Studio는 클린 설치와 함께

Visual Studio에서 패키지를 제대로 로드할 수 없습니다. 오류가 날 때에

뭐 때문인지 모르겠지만 이런 오류가 납니다.



그래서 오류의 내용에 있는 xml을 IE로 열었더니 아래와 같은 내용이 보입니다.



Begin package load [ResourceManagerToolbarPackage]
ERROR SetSite failed for package [ResourceManagerToolbarPackage]
ERROR End package load [ResourceManagerToolbarPackage]

 


음.. VS 2013을 포맷 안하고 다시 설치했는데 그것 때문인가???
%LOCALAPPDATA%\Microsoft\VisualStudio\12.0\ComponentModelCache 폴더를 지워버리고
해보라는 글이 있어서 해 봤지만 실패
%LOCALAPPDATA%\Microsoft\VisualStudio\12.0\Extensions 폴더의 캐시 파일을 모두 삭제
안되는군요….
위에 했던 것 때문인지 요런 에러가 추가되었습니다.


요청한 형식 중 하나 이상을 로드할 수 없습니다. 자세한 내용을 보려면 LoaderExceptions 속성을 검색하십시오.
C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO 12.0\COMMON7\IDE\EXTENSIONS\D25HCAB4.RM2\Microsoft.VisualStudio.Azure.ResourceManager.Extensions.dll

 


느낌상 Azure SDK에 포함되어 있을거 같군요.
[Azure 다운로드 페이지]
VS 2013 설치를 받아서 설치합니다.
수동 설치는 [Azure 수동 설치 파일 다운로드 페이지]


해결!!!

Windows에서 열 수 있는 Socket 수 얻는 방법

윈속을 쓰려면 무조건 쓰게 되어 있는

 

WSAStartup() 함수… 혹은 MFC에서는 AfxSocketInit()

 

이 함수들의 인자로 넣어주는 WSADATA를 보면

 

typedef struct WSAData {
WORD wVersion;
WORD wHighVersion;
char szDescription[WSADESCRIPTION_LEN+1];
char szSystemStatus[WSASYS_STATUS_LEN+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char FAR * lpVendorInfo;
} WSADATA;

 

이렇게 생겨 먹었는데…
여기서
wVersion, wHighVersion는 버전이고
szDescription는 DLL 의 설명
szSystemStatus는 DLL의 상태 등…

 

그리고 이 글의 주제인
iMaxSockets가 윈도우 환경에서 한 프로세스가 얼마나 많은 소켓을 열 수 있는 가를 나타낸다.

 

iMaxUdpDgUDP의 최대 길이를 나타내고
lpVendorInfo는 벤더 정보를 저장하고 있다…

 

쩝 결론…은…

 

Windows 2000 Pro가 3만개 정도의 소켓을 열 수 있다고 한다…
과연… 사실일까???

라고 생각하고 시간을 한참을 보냈습니다.
처음 이 글을 적은게 2009년 10월 16일이네요.

얼마전 sayheart님께서 댓글을 달아 주셔서… 다시 MSDN을 찾아 보았습니다.

iMaxSockets

Type: unsigned short

The maximum number of sockets that may be opened. This member should be ignored for Windows Sockets version 2 and later.

The iMaxSockets member is retained for compatibility with Windows Sockets specification 1.1, but should not be used when developing new applications. No single value can be appropriate for all underlying service providers. The architecture of Windows Sockets changed in version 2 to support multiple providers, and the WSADATA structure no longer applies to a single vendor’s stack.

Windows Socket 2 이후로는 의미없는 값이네요. 이 글을 처음 적을 때에 Winsock2가 쓰이고 있었을텐데… 왜 저걸 못 봤을까?

암튼 댓글에 있는 링크를 다시 걸어둡니다.

[techshare님의 글 윈도우 서버 환경에서, 최대 생성 가능한 소켓 연결 수는 얼마일까?] (http://blog.naver.com/techshare/100118458092)

Visual Studio 2012에서 기본 파일 형식을 UTF-8로 바꾸기

BS는 UTF-8 형식으로 .h나 .cpp와 같은 소스파일이 생성되길 희망했습니다.

그런데 바보 멍청이 Visual Studio 2012는 기본 인코딩을 사용자가 설정할 수 없게 되어 있습니다.

editorconfig.org의 도구를 사용해도 안되고…

어떤 방법으로도 기본 인코딩을 쉽게 수정할 수 없었습니다.

물론 플러그인을 만들어서 가능할 수도 있을테지만…

시간이 없네요.

그래서 일단 시도하는 방법을 소개합니다.

  1. Windows 탐색기에서 텍스트 파일 만들 때에 UTF-8로 인코딩
    위에 있는 NullFile 이름을 FileName으로 바꿉니다.
    그리고 특정 위치에 UTF-8로 인코딩된 빈 파일(즉, BOM만 있는 UTF-8파일)을 지정합니다.
    탐색기에서 새로운 텍스트 파일을 만들면

    이렇게 UTF-8 (BOM 있는) 형식으로 생성되는 걸 볼 수 있습니다.
  2. Visual Studio 2012에서 새 .h, .cpp 파일 만들 때
    C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcprojectitems
    위 경로에 가면

    위와 같이 hfile.h와 newc++file.cpp 두개 파일이 보입니다. 이 파일들을 수정해서 UTF-8 형식으로 저장합니다.
    여기에 추가로 살짝 보이는 Utility 폴더에 들어가면 text.txt가 있습니다.
    이것도 바꿉니다.
여기까지의 내용을 테스트 해봅시다.
Visual Studio 2012 IDE를 띄우고 파일 > 새로 만들기 > 파일 메뉴를 선택해서
위에서 만든 3 종류, .txt, .h, .cpp를 각각 생성해서 저장합니다.
그리고 notepad++과 같은 에디터를 통해서 확인해 보면 됩니다.
이렇게 해보면 .txt만 안되는데요.
실제 프로젝트나 솔루션에서 새 항목 추가를 통해 유틸리티 하위의 텍스트 파일을 생성하면… 이건 됩니다.