构建失败,因为找不到AL.exe

3

这是一个有趣的问题,让我感到困惑。我有一个在TeamCity中构建的项目。一切都很正常,直到一个开发人员向其中一个项目添加了一个资源文件,并在其中添加了另一种语言的字符串。他将.resx文件添加到默认文件旁边的Properties文件夹中。以下是构建日志中的错误消息:

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(2105, 9):
error MSB3091: Task failed because "AL.exe" was not found, or the correct
Microsoft Windows SDK is not installed. The task is looking for "AL.exe" in the "bin"
subdirectory beneath the location specified in the InstallationFolder value
of the registry key
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A.
You may be able to solve the problem by doing one of the following:
1) Install the Microsoft Windows SDK for Windows Server 2008 and .NET Framework 3.5.
2) Install Visual Studio 2008.
3) Manually set the above registry key to the correct location.
4) Pass the correct location into the "ToolPath" parameter of the task. 

这里有几个问题我搞不清楚: - 为什么它可以找到默认的.resx文件的AL.exe,但是对于这个新文件却找不到? - 为什么它在查找看起来只适用于Vista的注册表键时,构建却在Server 2003上运行?

有任何想法吗?

3个回答

3

通过安装Windows Server 2008和.NET Framework 3.5 SP1的Windows SDK解决了问题。

我不理解为什么MSBuild与其工具不同步,也许我永远不会发现原因,但是安装该SDK解决了我的问题。


1
我在开发机上遇到了同样的问题,我只是将6.1A中的al.exe复制到6.0A中,然后问题就解决了。安装SDK并没有起作用。 - Orhan Cinar

0

检查是否使用了x86的msbuild。在TeamCity构建运行器中应该有一个选项。

这台机器上安装了VS2008吗?


不,VS2008没有被安装。这是一个构建服务器,而不是开发工作站。 - Tim Long

0

请确保 Windows SDK 已完全安装在服务器上。AL.exe (程序集链接器) 包含在 .NET SDK 中(而不是运行时)。

(我在我的 TFS 服务器上也遇到了 ClickOnce 的同样问题,但懒得去修复)


请纠正我,AL.exe不是用来构建_每个_项目的吗?如果是这样,为什么只有在添加资源文件时才会在这个项目上失败?在修复之前,我需要了解故障机制。 - Tim Long
1
AL.exe通常与链接卫星程序集一起使用。 - leppie
1
尽管SDK已安装并且AL.exe存在,但MSBuild在错误的位置通过一个不存在的注册表键来查找它。似乎MSBuild已经更新到了一个更高版本,它查看错误的注册表键,同时坚定地忽略旧的、已存在且正确的注册表键,否则就可以使其工作了。无论如何,安装Server 2008 SDK是有效的(即使它是2003服务器)。 - Tim Long

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接