현재 작업중인 Application 에서 사용하는 XML File 을 Embedded Resource 로 사용해야할 일이 발생했습니다.

해서

아래와 같이
Project 에 "Data" Folder 를 생성하고 settings.xml 이라는 xml 파일을 추가한 후
Property 창에의 "Build Action" 옵션을 "Embedded Resource" 로 설정하였습니다.



googling 을 통해서 얻은 지식으루다가 아래와 같이 코딩을 이어 갔습니다.
하지만 2번을 통과하면 값을 가져오지 못합니다.

    1         Dim asm As System.Reflection.Assembly = Assembly.GetExecutingAssembly()

    2         Dim xmlStream As System.IO.Stream = asm.GetManifestResourceStream("WindowsApplication5.Data.settings.xml")

    3         Dim xmlDoc As XmlDocument = New XmlDocument()

    4         xmlDoc.Load(xmlStream)

    5         Dim xmlDs = XDocument.Parse(xmlDoc.OuterXml)


그 이유를 찾아 보았습니다.
짐작이 가는게 있었습니다.

reflector 를 이용해서 exe 파일을 까보았더랬죠.

역시나.. VB 는 폴더명을 Namespace 로 포함하지 않는 군요...
당연히 똑같겠지만 서도... ilDAsm 파일로도 열어봤습니다. ^^'


C#은 어떨까요?
눈으로 직접 확인해 봐야겠죠? ㅋㅋㅋ
위 VB Project와 동일한 환경으로 Xml 파일을 추가하였습니다.


Build 를 하고
Reflector 와 ilDAsm 으로 살펴보니...



그렇군요...

"Data" Folder 명이 Namespace 에 포함되어 있는 것을 볼 수 있습니다.


단순히 C#  코드만 복사해서 사용하려다 보니 나온 오류였습니다. ㅋㅋㅋ

VB.NET 에서는 아래와 같이 사용해야겠네요? ^^
 

    1         Dim asm As System.Reflection.Assembly = Assembly.GetExecutingAssembly()

    2         Dim xmlStream As System.IO.Stream = asm.GetManifestResourceStream("WindowsApplication5.settings.xml")

    3         Dim xmlDoc As XmlDocument = New XmlDocument()

    4         xmlDoc.Load(xmlStream)

    5         Dim xmlDs = XDocument.Parse(xmlDoc.OuterXml)


그럼 이때 VB 는 C# 과 같이 Folder 별 Namespace 를 관리하지 않나? 라는 궁금증을 가지시는 분이 있으시겠죠?
네... 맞습니니다.

VB.Net 은 C# 과 같이 파일을 추가할 때 자동으로 Namespace Syntax 를 파일에 추가해 주지 않습니다.
개발자가 직접해주어하지요...
그래서 아래와 같은 상황에서 햇갈린다는 메세지를 띄워주게 됩니다.

이럴 때는 직접 Namespace 로 감싸주셔요... ^^

요런 점은 Microsoft VB Team 이 추가를 해줬으면 하는 바램이 있네요... 그쵸? ^^'



행복한 고수되십시요...


woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\




 
반응형
XP Mode 설치...

Download Windows XP Mode with Virtual PC


하지만 후에 알게된 사실 하나...
VSTO Addin Test 는 Virtual Mode 에서는 작동하지 않는다는 사실... ㅡㅡ'



행복한 고수되셔요...
반응형

"LoadBehavior: Not Loaded. A runtime error occured during the loading of the COM Add-in"

현재 PowerPoint COM Addin 을 개발 중에 있습니다.
언제나 그렇듯이 개발자 PC 에서는 만든 Application 이 잘돌죠.
몇번이고 테스트를 하고 Build 를 하고 Setup 파일을 생성하기를 수십번...
배포버전을 생성했습니다.

훔... 다른 컴터에 배포를 하자 염려했던 점이 발생했습니다.
셋업이 안된거죠... ^^'
제가 잘 몰랐어서...

여러번 설치하고 지우고, 수동으로 Registry 도 등록했다가 지우고.. 삽질을 여러번... ^^'

현상은 아래와 같습니다.


하단에 보시면 Load Behavior : Not loaded. 가 보이시죠?
Load 가 안되었다면 Load 하면 되지 뭐...
라는 생각으로 단순히 CheckBox 를 선택하고 OK 버튼을 클릭을 하면... 위와 같은 에러 메시지를 보실 수 있습니다.
그런데 실행시에는 제가 만든 Addin 이 제대로 실행이 되는지 알수가 없습니다.

위에 나타난 링크에서 많은 걸 얻었습니다.
한번 읽어보시고 링크에 링크를 따라들어가보시고 고수되시길..
http://go.microsoft.com/fwlink/?LinkId=135965

그래서 Office Application 이 구동이 되고 COM Addin 이 Loading 되는 시점부터 제대로 올라오는지에 대한 사항을 알수 있게 할 수 있습니다.
이겁니다.
환경변수에 위 두녀석을 등록하면 VSTO가 읽고 두 변수에 대한 작동을 하도록 되어있습니다.
위 사항은
http://msdn.microsoft.com/en-us/library/ms269003(v=vs.80).aspx
이곳에서 살펴보시면 되겠습니다.


환경변수를 추가하게되면 위와 같이 Addin 이 Load 되는 시점에 잘 못되었다는 것을 확인 할 수 있습니다.


그래서 Add-ins 부분에서 확인해 보면 제가 만든 Addin 은
inActive Application Add-ins 파트에 포함되어있는 것을 보실 수 있습니다.
선택하시고 Go... 버튼을 눌러들어가보시면 처음에 보여드렸던 모습을 보실 수 있구요...



".NET Client" 깔려있그든... 그러니까 쫌 자세한 메세지를 좀 줘바바... 라고 욕한바가지 해주고...
열심히 MSDN 과 구글링을 했죠...
구글링으론 졸리기만 하고 별 성과없이 시간만...
차라리 함께 설치되어야할 녀석들을 살펴보는 것이 낫겠다싶었죠...ㅋㅋ
설치 파일 생성시 Bootstrapper을 함께 추가해줬다는 생각에 그녀석들을 확인한하고 있었다는 생각이 퍼뜩나서... ㅡㅡ'


VisualStudio 2010 Tools for Office Runtime 을 설치해 주었습니다.




잘 뜨네요...
^^


행복한 고수되셔요...

woojja ))*
\\\\\\\\\\\\\\\\\\\\\\\\\\\

반응형

+ Recent posts