2009-08-06 79 views
3

我正在使用Microsoft.Build.BuildEngine構建一些項目。不使用Silverlight的項目正在構建,而使用Silverlight的項目不在構建中。所有這些項目(Silverlight和非Silverlight的)的所有建設精細通過Visual Studio 2008年。我得到的錯誤信息:如何使用Microsoft.Build.BuildEngine構建Silverlight項目?

錯誤CS0234:類型或命名空間名稱「SilverlightControls」不會在 命名空間「存在System.Web.UI'(您是否缺少程序集引用?)

我已將System.Web.Silverlight添加到正在使用Microsoft.Build.BuildEngine進行構建的項目中。我能夠在構建該項目的項目中看到該名稱空間(因此看起來,構建該項目的項目確實可以訪問System.Web.UI)。

有關如何避免該錯誤的任何想法?


通過VS2008調整構建的詳細程度,並與從Microsoft.Build.BuildEngine創建的日誌進行比較。它看起來像Microsoft.Build.BuildEngine是生產線,如:

認爲是 「C:\ Program Files文件\參考大會\微軟\框架 \ v3.5版本\ System.Web.Silverlight.dll」,但它不存在。

它不存在於那個位置,應該嗎?實際上有很多地方,它尋找該DLL並沒有找到它。我通過右鍵單擊,添加引用,.Net,添加引用添加。在我的機器上似乎沒有System.Web.Silverlight.dll(這很奇怪,因爲項目使用VS2008進行編譯)。

兩個日誌的可能是有關章節比較: Microsoft.Build.BuildEngine

對於SearchPath中的 「{} GAC」。 考慮到「System.Web.Silverlight,Version = 2.0.5.0,Culture = neutral, PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL」,在GAC中找不到 。

Visual Studio 2008中

System.Web.Silverlight,版本= 2.0.5.0,文化=中立, 公鑰= 31bf3856ad364e35,ProcessorArchitecture用於= MSIL


手動添加的System.Web.Silverlight到Microsoft.Build.BuildEngine查找它的路徑(當我通過VS2008構建項目時,從輸出目錄複製它)。這解決了這個問題,但我現在得到的解決方案的Silverlight組件以下錯誤:

C:\ Program Files文件\的MSBuild \微軟\的Silverlight \ 2.0 \ Microsoft.Silverlight.Common.targets (95,9):錯誤:安裝的Silverlight 2 SDK不是 。

任何想法?

回答

3

在運行Microsoft.Build.BuildEngine的應用程序中,我將構建類型從Any CPU更改爲x86。這現在使應用程序能夠按預期構建目標。

1

因此,您是使用MSBuild API以編程方式構建的?

向engine.Loggers添加一個ILogger(例如只是打印到控制檯)可能很有用,並將輸出與VS中的輸出窗口進行比較(在設置後,例如'tools \ options \ project & solutions \ build &運行\ msbuild輸出冗長'來詳細)...似乎以某種方式環境導致程序集不同地解決?