首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >任务失败,因为找不到AL.exe,

任务失败,因为找不到AL.exe,
EN

Stack Overflow用户
提问于 2009-07-10 14:41:35
回答 8查看 34.8K关注 0票数 14

在编译我的项目时,我得到了以下错误:

任务失败,因为没有找到"AL.exe“,或者没有安装正确的。任务是在注册表项AL.exe的InstallationFolder值指定的位置下的"bin“子目录中查找”HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A“。您可以通过执行以下操作之一解决问题:

  1. 安装2008和.NET Framework3.5。
  2. 安装Visual 2008。
  3. 手动将上述注册表项设置为正确位置。
  4. 将正确的位置传递到任务的"ToolPath“参数中。

当我将资源文件添加到我的UnitTest项目中的文件夹时,会出现此错误。这些资源文件不是我的程序直接用于本地化的,它们就像普通的文件。我需要它们来测试我的程序中的一些逻辑,它使用ResXResourceReader加载这些资源文件。

有人能解释一下为什么会出现这个错误吗?

编辑:安装Windows解决了这个问题,正如错误中所描述的那样。但我还是想知道为什么会出现这个错误。我对自己没有意义。

EN

回答 8

Stack Overflow用户

发布于 2010-01-09 12:31:23

您将得到此错误,因为您正在构建一个使用程序集清单的3.5项目,但没有安装3.5工具。(希望有人能提供更多的信息。)

我强烈建议安装http://www.microsoft.com/en-us/download/details.aspx?id=3138,特别是当您只需要安装这些工具时,请避免使用,并确保查看发布说明以获取AL.exe信息。(由于安全更新修复,建议安装此SDK 3.5。)

SDK的"Release“表明ALTOOLPATH是由Visual 2005设置的,这可能解释了为什么某些用户在构建方面有问题。这是我的猜测。

使用SysInternals的进程监视器,在构建3.5个项目时,Visual 2008将在程序集链接器(AL.exe)的%SystemRoot%\Microsoft.NET\Framework\v3.5文件夹中查找。如果在那里找不到AL,它将使用特定的v6.0A注册表设置中指定的位置。(请注意,v6.0A不适用于.NET 3.5。)因此,安装适当的软件和不黑。*o)

我的问题是程序集链接器在2.0、3.0和3.5之间不同吗?

2008和.NET Framework3.5 建议安装新发布的7和.NET Framework3.5 SP1,而不是此版本。如果您确实在VS2008 SP1之后安装此SDK,请确保应用了知识库974479中描述的修补程序。有关更多信息,请参见概述部分。

票数 16
EN

Stack Overflow用户

发布于 2009-10-22 23:40:51

卸载项目,然后编辑.csproj文件,您将看到导入任务

代码语言:javascript
运行
复制
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 

MSBuildBinPath = "C:\WINDOWS\Microsoft.NET\Framework\v3.5“,如果您的项目正在获取.Net 3.5

那就去

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.CSharp.targets文件

在记事本中打开这个文件并搜索AL任务,您将得到如下内容

代码语言:javascript
运行
复制
 <AL AlgorithmId="$(Satellite_AlgorithmId)"
            BaseAddress="$(Satellite_BaseAddress)"
            CompanyName="$(Satellite_CompanyName)"
            Configuration="$(Satellite_Configuration)"
            Copyright="$(Satellite_Copyright)"
            Culture="%(Culture)"
            DelaySign="$(DelaySign)"
            Description="$(Satellite_Description)"
            EmbedResources="@(_SatelliteAssemblyResourceInputs)"
            EvidenceFile="$(Satellite_EvidenceFile)"
            FileVersion="$(Satellite_FileVersion)"
            Flags="$(Satellite_Flags)"
            GenerateFullPaths="$(Satellite_GenerateFullPaths)"
            KeyContainer="$(KeyContainerName)"
            KeyFile="$(KeyOriginatorFile)"
            LinkResources="@(Satellite_LinkResource)"
            MainEntryPoint="$(Satellite_MainEntryPoint)"
            OutputAssembly="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll"
            Platform="$(PlatformTarget)"
            ProductName="$(Satellite_ProductName)"
            ProductVersion="$(Satellite_ProductVersion)"
            ResponseFiles="@(AlResponseFile)"
            SourceModules="@(Satellite_SourceModule)"
            TargetType="$(Satellite_TargetType)"
            TemplateFile="$(IntermediateOutputPath)$(TargetName)$(TargetExt)"
            Title="$(Satellite_Title)"
            ****ToolPath="C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727"****
            Trademark="$(Satellite_Trademark)"
            Version="$(Satellite_Version)"
            Win32Icon="$(Satellite_Win32Icon)"
            Win32Resource="$(Satellite_Win32Resource)">

            <Output TaskParameter="OutputAssembly" ItemName="FileWrites"/>

        </AL>

请注意,我将ToolPath转换到机器上存在AL的位置。

默认情况下,它使用$(AlToolPath),不确定此属性的值是什么,但我确定如果您收到此错误,它没有指向正确的位置。

所以简单地说,AL任务找不到AL.exe,当您编辑它并提供它的ToolPath值时,您可以帮助他找到它。

希望这能解释你为什么会收到这条错误信息。

票数 6
EN

Stack Overflow用户

发布于 2010-05-03 14:52:03

不需要在构建服务器上安装VS2010。

从开发框中导出"v7.0A“键,并将其导入构建服务器的注册表。只需确保将任何"Program (x86)“重命名为"Program”,具体取决于您正在运行的windows服务器的哪个版本。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1109955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档