我正在使用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不是 安装。
有什么想法吗?
答案 0 :(得分:3)
在运行Microsoft.Build.BuildEngine的应用程序中,我将构建类型从Any CPU更改为x86。现在,这使应用程序能够按预期构建目标。
答案 1 :(得分:1)
所以你使用MSBuild API以编程方式构建?
将ILogger(例如只打印到控制台)添加到engine.Loggers,并将输出与VS中的输出窗口进行比较(在设置例如'tools \ options \ project& solutions \ build之后)可能很有用。 & run \ msbuild输出verbosity'到详细... ...似乎某种程度上环境导致程序集以不同的方式解析?