如何使用Microsoft.Build.BuildEngine构建Silverlight项目?

时间:2009-08-06 05:29:50

标签: silverlight msbuild buildengine

我正在使用Microsoft.Build.BuildEngine来构建许多项目。不使用Silverlight的项目正在构建,而使用Silverlight的项目未构建。所有这些项目(Silverlight和非Silverlight)都通过Visual Studio 2008构建得很好。我收到错误消息:

  

错误CS0234:类型或命名空间名称“SilverlightControls”不存在于   命名空间'System.Web.UI'(你是否缺少程序集引用?)

我已将System.Web.Silverlight添加到使用Microsoft.Build.BuildEngine进行构建的项目中。我能够在项目中看到该命名空间也在进行构建(因此看起来构建该项目的项目确实可以访问System.Web.UI)。

关于如何避免错误的任何想法?


通过VS2008打开构建的详细程度,并与从Microsoft.Build.BuildEngine创建的日志进行比较。看起来像Microsoft.Build.BuildEngine正在生成如下行:

  

考虑“c:\ Program Files \ Reference Assemblies \ Microsoft \ Framework   \ 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,Version = 2.0.5.0,Culture = neutral,   PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL


手动将System.Web.Silverlight添加到Microsoft.Build.BuildEngine正在查找它的路径中(当我通过VS2008构建项目时,从输出目录中对其进行了修改)。这解决了这个问题,但我现在在解决方案的Silverlight组件上遇到以下错误:

  

C:\ Program Files \ MSBuild \ Microsoft \ Silverlight   \ v2.0 \ Microsoft.Silverlight.Common.targets(95,9):错误:Silverlight 2 SDK不是   安装。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

在运行Microsoft.Build.BuildEngine的应用程序中,我将构建类型从Any CPU更改为x86。现在,这使应用程序能够按预期构建目标。

答案 1 :(得分:1)

所以你使用MSBuild API以编程方式构建?

将ILogger(例如只打印到控制台)添加到engine.Loggers,并将输出与VS中的输出窗口进行比较(在设置例如'tools \ options \ project& solutions \ build之后)可能很有用。 & run \ msbuild输出verbosity'到详细... ...似乎某种程度上环境导致程序集以不同的方式解析?