3

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

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

我已将 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

对于搜索路径“{GAC}”。考虑“System.Web.Silverlight, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL”,在 GAC 中找不到。

视觉工作室 2008

System.Web.Silverlight,版本=2.0.5.0,文化=中性,PublicKeyToken=31bf3856ad364e35,处理器架构=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。

有任何想法吗?

4

2 回答 2

3

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

于 2009-08-06T23:09:16.130 回答
1

那么您是使用 MSBuild API 以编程方式构建的吗?

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

于 2009-08-06T05:50:04.870 回答