2009-07-10 86 views
12

我编译我的项目时,我得到了以下错误:任务失败,因为Al.exe工具没有被发现,

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

  1. 安装适用于Windows Server 2008和.NET Framework 3.5的Microsoft Windows SDK。
  2. 安装Visual Studio 2008.
  3. 手动将上面的注册表项设置到正确的位置。
  4. 将正确的位置传递给任务的“ToolPath”参数。

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

有人可以解释为什么这个错误出现?

编辑: 安装Windows SDK解决了问题,也在错误中描述。但我仍然想知道为什么会出现错误。我对我毫无意义。

+0

我有同样的问题。由于公司的政策,我无法安装Microsoft Windows SDK,甚至不打算这样做,因为我有Web应用程序(ASP.NET,C#,MVC Framework,i18n)而不是Windows应用程序。此外,我无权编辑注册表项。 – meir 2011-05-20 12:04:48

回答

5

卸载项目,然后编辑您的.csproj文件,你会看到一个导入任务

<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> 

MSBuildBinPath = “C:\ WINDOWS \ Microsoft.NET \框架\ v3.5版本” 如果乌拉圭回合工程靶向.NET 3.5

然后去

C:\ WINDOWS \ Microsoft.NET \框架\ 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> 

注意,我chnaged刀具路径到AL我的机器上存在的位置。

默认情况下,它使用$(AlToolPath),不知道这是什么属性的价值,但我相信,如果你收到此错误是没有指向所以正确的位置

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

希望这解释了为什么你会收到此错误消息。

+0

我只是想补充一下,在VS编译器的输出中没有找到AL.exe的路径。所以很容易看到哪里没有找到AL.exe。您可以编辑配置或仅从此路径位置的某处复制AL.exe。从最佳实践的角度来看,这当然不是很好,但速度更快,而且不需要编辑配置。 – agira 2016-07-01 17:17:07

15

由于您正在构建一个使用程序集清单的3.5项目,但没有安装3.5工具,所以出现此错误。 (希望有人可以提供更多信息。)

我强烈建议安装Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1避免黑客,尤其是当你只需要安装的工具,并且一定要检查出的信息Al.exe工具的发行说明。 (由于安全更新修复,此SDK为3.5的推荐安装。)

SDK的“发行说明”指示ALTOOLPATH由Visual Studio 2005设置,这可能解释为什么某些用户在构建时遇到问题。这是我的一个猜测。

在构建3.5项目时,Visual Studio 2008使用SysInternals的Process Monitor查找Assembly Linker(AL.exe)的%SystemRoot%\ Microsoft.NET \ Framework \ v3.5文件夹。在那里找不到AL,它将使用特定v6.0A注册表设置中指定的位置。 (请注意,v6.0A不适用于.NET 3.5。)因此,安装正确的软件和不会破解。 :O)

我有的问题是汇编链接器2.0,3.0和3.5之间的不同?


Windows SDK的Windows Server 2008和.NET Framework 3.5的

为Windows 7 和.NET Framework安装的 新发布 的Microsoft Windows SDK 3.5 SP1,而不是这个版本推荐的。如果你做 继续前进,并在 VS2008 SP1之后安装此SDK,请确保已应用知识库974479中描述的补丁 为 。有关更多 信息,请参阅概览部分。

4

无需在生成服务器上安装VS2010。

从您的开发盒中导出“v7.0A”键,将其导入到构建服务器的注册表中。只要确定您将任何“Program Files(x86)”重命名为“Program Files”,具体取决于您正在运行的Windows服务器的版本。

+0

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDKs \ Windows \ v7.0A - 这是注册表键 - 我的工作还没有完成,但所有的东西都指向这个键 – 2017-07-02 08:24:54

2

我做的和dcadenas一样,只是从开发机器复制SDKs \ 7.0A文件夹,并将v7.0A注册表设置从开发箱导出到构建服务器。这很好,因为我不需要在构建服务器上安装VS 2010。谢谢。

2

我有同样的错误,它来自将资源文件添加到本地文件夹和更改生成操作为“嵌入资源”(资源 - >属性),而从web表单see MVC2 Globalization修改本地化资源MVC3 。确切的错误是由包含“。”的Resources.lang.resx引起的。以名义(与“无偿资源”相结合)。

此前,应用程序编译并运行良好,同时使用具有“内容”(App_GlobalResources)构建操作的全局资源。

该解决方案类似于@vicky kole的上面,但我认为它仍然值得一提,因为以前的工作项目中的一些差异和al.exe错误的确切原因。

经过一些故障排除后,我安装了Windows 7 & ASP.NET 4 SDK,并在搜索中找到了C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ x64文件夹中的al.exe。

然后我搜索了C:\ WINDOWS \ Microsoft.NET \ Framework \ * NEWEST VERSION * \ *。targets,直到找到与上面的@vicky kole相同的AL节点。它位于另一个名为Microsoft.Common.targets的文件中。我从新安装的SDK C:\ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Bin \ x64中取得路径,并将其放入ToolPath中,并重新启动Visual Studio。

<AL AlgorithmId="$(Satellite_AlgorithmId)" 
ToolPath="C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\x64" 

(这可能是她的信息进行评论,因为它真的很相似,她的情况)

1

我有一个类似的错误获得在Windows 10中的项目建设,其中一resgen.exe工具无法找到。我曾在HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFX35Tools-x86改变InstallationFolder注册表项,以它实际上是在我的电脑上存在的路径:C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools

0

固定后,我的问题,重新安装Visual Studio

相关问题