成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Silverlight程序集引用相關問題解疑

開發 開發工具
Silverlight程序集引用的應用在實際開發過程中往往會因為一些特定的元嬰而產生一些錯誤。這一點必須要引起開發人員的注意。

當我們在使用Silverlight開發工具進行實際操作的時候,并不是一個一帆風順的事情。在變成過程中同樣會出現各種各樣的問題。在這里我們就為會為大家解決Silverlight程序集引用的相關問題。#t#

假定我要用Silverlight類庫實現一些通用控件,然后在應用程序中引用這個控件庫。當然,控件通常也要訪問其他一些第三方或開源的開發包,例如Silverlight Toolkit。

于是這個項目的依賴關系如下: Silverlight Application => Silverlight Control => Silverlight Toolkit。

 

 

然后在類庫項目中創建一個簡單的Silverlight程序集引用控件,比如:
 

 

  1. < UserControl x:Class="SLLib.
    TestControl"
     
  2. xmlns="http://schemas.microsoft.
    com/winfx/2006/xaml/presentation"
       
  3. xmlns:x="http://schemas.microsoft.
    com/winfx/2006/xaml"
       
  4. xmlns:controlsToolkit="clr-namespace
    :System.Windows.Controls;assembly
    =System.Windows.Controls.Toolkit"
       
  5. > 
  6. < Grid x:Name="LayoutRoot"> 
  7. < controlsToolkit:DockPanel> 
  8. < /controlsToolkit:DockPanel> 
  9. < /Grid> 
  10. < /UserControl> 

 

 

最后,在Silverlight程序集引用中添加我們剛剛創建的控件:

 

  1. < UserControl x:Class="TestSL.MainPage" 
  2. xmlns="http://schemas.microsoft.
    com/winfx/2006/xaml/presentation"
       
  3. xmlns:x="http://schemas.microsoft.
    com/winfx/2006/xaml"
     
  4. xmlns:d="http://schemas.microsoft
    .com/expression/blend/2008"
       
  5. xmlns:mc="http://schemas.openxml
    formats.org/markup-compatibility/2006"
       
  6. mc:Ignorable="d" 
  7. xmlns:lib="clr-namespace:SLLib;
    assembly=SLLib"
    > 
  8. < Grid x:Name="LayoutRoot"> 
  9. < lib:TestControl /> 
  10. < /Grid> 
  11. < /UserControl> 

 

 

這么簡單的程序(一行代碼也沒有),不可能出問題吧?可惜事實上不是這樣,錯誤還是出現了。

 

 

那么Silverlight程序集引用出現錯誤的原因在哪呢?我們打開.xap 文件看看,就會發現問題:Toolkit程序集竟然沒有被包含進來!這樣控件運行的時候是無法找到DockPanel類的,程序自然就出錯了。

我們可以從其他方面來驗證這個錯誤。刪掉原來的控件(其實不刪也可以) ,從代碼創建一個控件:

  1. public class TestControl2 :
     ContentControl  
  2. {  
  3. public TestControl2()  
  4. {  
  5. this.Content = new DockPanel();  
  6. }  

然后把程序中的TestControl換成TestControl2,再試試看怎么樣?運行正常!.xap文件現在也包含Toolkit了。

 

 

另一方面,如果我們在應用程序的引用中手工加上System.Windows.Controls.Toolkit,那么程序也可以運行正常。

 

這些跡象表明,Silverlight編譯器實在有點自作聰明。即使我們在類庫引用中明確指定了要引用的程序集,編譯器也會忽略這些指示,只查找代碼中使用到的那些。對于你在.xaml中引用的程序集,編譯器根本不予理會。讓情況更加惡化的是,如果運行時找不到類,那么Silverlight運行時只會拋出臭名卓著的AG_E_PARSER_BAD_TYPE,這個毫無內容的錯誤信息對查找問題沒有什么幫助。奇怪的是對于Application類型的項目,Silverlight編譯器的做法則完全不同——只要在項目引用中加入了任何程序集,無論實際上是否被用到,都會編譯到最終的.xap文件中。這種不一致的行為是你應當小心的。

Silverlight程序集引用問題最簡單的work around就是:只要在類庫中引用了哪些程序集,在應用程序中也保證引用同樣的程序集,就可以避免出現錯誤。顯然這不是一個很理想的辦法,不僅因為它迫使程序員重復做一些沒有實際意義的工作,也使得類庫的使用者不得不去關心類庫的內部機制,從而讓類庫的存在意義大打折扣。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-01-04 13:15:33

跨域引用Silverl

2010-01-04 15:27:45

Silverlight

2010-02-05 16:07:52

C++多態覆蓋

2010-01-04 16:23:42

Silverlight

2009-12-21 10:19:05

Silverlight

2009-12-07 10:05:22

PHP session

2010-01-20 14:52:21

VB.NET修改數據窗

2009-02-04 18:20:42

服務器虛擬化VMware

2010-03-15 17:17:29

Java線程池

2010-02-02 13:20:33

C++對象傳遞

2009-12-31 15:08:22

Silverlight

2009-12-02 19:14:07

PHP header

2009-12-01 15:41:16

PHP substr截

2009-12-08 10:33:23

PHP應用問題

2009-12-03 15:13:51

PHP開發中問題

2012-05-23 13:11:10

架構存儲

2011-01-13 16:11:13

silverlightwebasp.net

2010-01-04 15:34:18

2009-12-31 13:33:35

Silverlight

2009-12-30 15:58:19

Silverlight
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品中文字幕 | 男女视频在线免费观看 | 欧美 日韩 国产 成人 在线 | 99re在线 | 日本天堂视频在线观看 | 国产精品久久久久久久久久久久久 | 日本特黄a级高清免费大片 特黄色一级毛片 | 亚洲精品一区二区三区蜜桃久 | 亚洲精品一| 久久久精品综合 | 欧美天堂一区 | 中文字幕一区二区三区日韩精品 | 一级毛片视频在线观看 | 九九久久久久久 | 国产精品国产精品国产专区不卡 | 国产美女视频黄a视频免费 国产精品福利视频 | 国产精品一区二区久久 | 蜜桃视频在线观看www社区 | 天天影视网天天综合色在线播放 | 免费黄色在线 | 欧美成人精品一区二区男人看 | 99re在线视频免费观看 | 久久天堂 | 午夜爽爽爽男女免费观看影院 | 成人免费小视频 | 午夜影院黄 | 中文字字幕在线中文乱码范文 | 欧美日韩成人一区二区 | 成人久久18免费网站麻豆 | 欧美久久电影 | 欧美精品一二三区 | 国产精品久久久久一区二区三区 | 欧美一级免费 | 97伦理电影 | 午夜精品一区 | 欧美日本高清 | 日韩精品一区二区三区中文字幕 | 黄视频网站免费观看 | 国产一区二区三区精品久久久 | 国产精品久久久久久久久久软件 | 国产成人jvid在线播放 |