在编译我的项目时,我得到了以下错误:
任务失败,因为没有找到"AL.exe“,或者没有安装正确的。任务是在注册表项AL.exe的InstallationFolder值指定的位置下的"bin“子目录中查找”
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A“。您可以通过执行以下操作之一解决问题:
当我将资源文件添加到我的UnitTest项目中的文件夹时,会出现此错误。这些资源文件不是我的程序直接用于本地化的,它们就像普通的文件。我需要它们来测试我的程序中的一些逻辑,它使用ResXResourceReader加载这些资源文件。
有人能解释一下为什么会出现这个错误吗?
编辑:安装Windows解决了这个问题,正如错误中所描述的那样。但我还是想知道为什么会出现这个错误。我对自己没有意义。
发布于 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中描述的修补程序。有关更多信息,请参见概述部分。
发布于 2009-10-22 23:40:51
卸载项目,然后编辑.csproj文件,您将看到导入任务
<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任务,您将得到如下内容
<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值时,您可以帮助他找到它。
希望这能解释你为什么会收到这条错误信息。
发布于 2010-05-03 14:52:03
不需要在构建服务器上安装VS2010。
从开发框中导出"v7.0A“键,并将其导入构建服务器的注册表。只需确保将任何"Program (x86)“重命名为"Program”,具体取决于您正在运行的windows服务器的哪个版本。
https://stackoverflow.com/questions/1109955
复制相似问题