간만에 하고 있는 실버라이트....
자주 써야 할꺼 같은걸 하나 정리합니다~

뭐 다른데서도 마찬가지지만
실버라이트에서도 프로그램 실행시 사용되는 이미지등을 리소스로 따로 모아두고 사용합니다.
이 리소스는 빌드액션(Build Action)방식에 따라 패키지되는 방식을 정할수 있는데

빌드액션은 다름 세가지로 분류됩니다.

1. None(없음) - 없으니까 리소스를 포함하지 않는거죠
2. Content(내용) - 리소스를 프로젝트 패키지파일(*.xap)파일에 포함합니다.
3. Resource(리소스) - 리소스를 프로젝트의 어셈블리파일(*.dll)에 포합합니다.


간단해 보이는 내용인데 왜 이걸 정리하느냐??
빌드액션에 따라서 리소스 참조 URI가 달라지기 때문이죠...(아.. 헷깔린다... ㅠ-ㅠ)

URI는 경로를 나타내므로 (당연히)상대경로와 절대경로가 있습니다.
그리고 참조해야 하는 리소스는
해당 프로그램의 패키지파일을 기준으로 패키지보다 상위에 있을수도 있고
패키지와 같은레벨에 있을수도
패키지 하위에 있을수도
패키지 하위의 어셈블리에 있을수도 있죠

1. 패키지보다 상위레벨에 존재하는 리소스의 경우에는 상대경로는 사용할 수 없습니다.  닥치고 절대경로...
   (ex : http://bravochoi.tistory.com/images/sample.jpg ) ( 없는 경로니 눌르는일 없도록... ㄷㄷㄷ)
2. 패키지와 같거나 하위레벨에 존재하는 리소스의 경우에는 상대/절대 경로 모두 사용 가능합니다. 
   (ex : http://bravochoi.tistory.com/resources/images/sample.jpg  절대경로)
   (ex : /resources/images/sample.jpg  상대경로)
   (ex : resources/images/sample.jpg   상대경로2)
3. 어셈블리에 들어있는 경우에는 /어셈블리명;component/경로 와 같은 형식으로 사용가능합니다.
   (ex : 패키지에 있는 resources.dll이라는 어셈블리에 sample.jpg가 있는 경우
           /resources;compenet/sample.jpg  요렇게)
4. 빌드애션을 Content로 해서 리소스가 패키지에 포함된 경우에는 상대경로로 접근해야 하며 시작은 / 로 해야됩니다
   (ex : /sample.jpg)
5. 빌드액션을 Resource로 해서 리소스가 프로젝트의 어셈블리에 포함되어 있을때는 상대경로로 접근해야 하며 / 를 붙이면 안됩니다.
   (ex : sample.jpg)
   (ex : images/sample.jpg)

3번과 5번의 차이는
5번은 프로젝트에 추가한 리스소용 파일을 빌드액션을  resource로 했을때 접근하는 방법이고
3번은 다른 어셈블리(참조추가된)에 있는 리소스에 접근할때 입니다.




 

by 피요히코~ 2010. 8. 25. 02:38
| 1 |