본문 바로가기

Silverlight

Embedded Resource VS 걍 Resource

제목에서 처럼 Embedded Resource 와 걍 Resource를 비교해 보도록 하겠습니다.

우선 wav 파일을 비교를 위해서 추가 할 텐데요.

a음들은 Embedded Resource로 b음들은 Resource로 추가 하도록 하겠습니다.

 

그리고 그냥 바로 Compile 해보도록 하겠습니다.

나나나~~♬ 나나나나~♪

컴파일 완료!!

그러면 만들어진 xap파일을 까보겠습니다 :-D
(///xap 파일 까보는건 zip파일로 바꾸고 나서 압축 푸시면 되용~)

까보면 안에 dll이 있는데요 이걸 reflector로 다시 또 까보겠습니다.
(///오늘 많이 까네요 게살을 까야 하는데 응?)

아아아~ 보이시나요?

Embedded resource로 추가 했을 경우에는  Resources에 포함 되어 있지만 Resource로 추가 했을 경우에는 CheckListTest(프로젝트명).g.resources에 포함이 됩니다.!!!

그렇습니다!!! 추가 하는 방식에 따라서 파일이 추가 되는 위치가 내부적으로 다릅니다.

잇힝 그럼 이렇게 다른 건 알겠고 이쯤 되시면 왜 제가 이런 것 들을 궁금해 했는지 여러분도 역시 궁금해(?) 하실것 이라고 생각 합니다.
제가 오늘 하고 싶었던 건 Resource로 추가한 항목들의 목록을 가져 오는것 이였는데요.

일단 아래의 소스를 보시겠습니다.

            //Get the assembly

            Assembly thisAssembly = Assembly.GetExecutingAssembly();

            //retrieve all resource names

            string[] resNames = thisAssembly.GetManifestResourceNames();

            foreach (string resName in resNames)

            {

                //if the resource name ends with .wav we want to load it

                if (resName.ToLower().EndsWith(".wav"))

                {

                    results.Add(resName);

                }

            }

위의 코드대로 한다면 Resources 아래에 있는 Resource들의 이름을 가져 올 수가 있는데요.
이때 Embedded가 아닌 그냥 Resource로 했을 경우에는 xxx.g.resources 안에 있기 때문에 목록을 가져 올 수가 없습니다.

고로!! resource의 목록이 필요 하실 경우에는 Embedded resource로 추가 해주시면 목록을 확인하실 수가 있습니다.

잇힝