2009-07-10 46 views
12

Tôi nhận được lỗi sau khi soạn thảo dự án của tôi:nhiệm vụ thất bại vì AL.exe không được tìm thấy,

nhiệm vụ thất bại vì "AL.exe" không được tìm thấy, hoặc chính xác Microsoft Windows SDK là chưa cài đặt. Tác vụ đang tìm kiếm "AL.exe" trong thư mục con "bin" bên dưới vị trí được chỉ định trong giá trị InstallationFolder của khóa đăng ký HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v6.0A. Bạn có thể giải quyết vấn đề bằng cách thực hiện một trong các thao tác sau:

  1. Cài đặt Microsoft Windows SDK cho Windows Server 2008 và .NET Framework 3.5.
  2. Cài đặt Visual Studio 2008.
  3. Đặt thủ công khóa đăng ký ở trên vào đúng vị trí.
  4. Chuyển vị trí chính xác vào thông số "ToolPath" của tác vụ.

Lỗi này xảy ra khi tôi thêm tệp tài nguyên vào thư mục trong dự án UnitTest của mình. Các tệp tài nguyên này không được chương trình của tôi sử dụng trực tiếp để bản địa hoá, chúng giống như các tệp bình thường. Tôi cần chúng để kiểm tra đơn vị một số logic bên trong chương trình của tôi tải các tệp tài nguyên này bằng cách sử dụng ResXResourceReader.

Ai đó có thể giải thích cho tôi tại sao lỗi này xuất hiện?

Chỉnh sửa: Cài đặt Windows SDK đã giải quyết được sự cố, cũng như được mô tả trong lỗi. Nhưng tôi vẫn muốn biết tại sao lỗi xuất hiện. Tôi không có ý nghĩa với tôi.

+0

Tôi có cùng một vấn đề. Tôi không thể cài đặt Microsoft Windows SDK vì chính sách của công ty và thậm chí sẽ không làm điều đó vì tôi có ứng dụng Web (ASP.NET, C#, MVC Framework, i18n) và không phải ứng dụng Windows. Ngoài ra tôi không có quyền truy cập để chỉnh sửa khóa registry. – meir

Trả lời

5

Dỡ bỏ dự án của bạn và sau đó chỉnh sửa file csproj của bạn, bạn sẽ thấy một công tác nhập khẩu

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

MSBuildBinPath = "C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5" nếu ur dự án được nhắm mục tiêu Net 3.5

sau đó đi đến

C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.CSharp.targets nộp

mở file này bằng notepad và tìm kiếm Nhiệm vụ AL và bạn sẽ nhận được một cái gì đó như thế này

<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> 

Lưu ý rằng tôi đã biên soạn ToolPath đến vị trí AL tồn tại trên máy của tôi.

Theo mặc định nó sử dụng $ (AlToolPath), Không chắc giá trị của thuộc tính này là gì nhưng tôi chắc chắn nếu bạn đang nhận được lỗi này nó không được trỏ đến đúng vị trí

Vì vậy, nói cách đơn giản AL nhiệm vụ có thể Không tìm thấy AL.exe và khi bạn chỉnh sửa nó và cung cấp cho nó giá trị ToolPath bạn giúp anh ta định vị nó.

Hy vọng điều này giải thích cho bạn lý do bạn nhận được thông báo lỗi này.

+0

Tôi chỉ muốn thêm, đường dẫn mà không tìm thấy AL.exe được viết trong đầu ra của trình biên dịch VS. Vì vậy, rất dễ dàng để xem nơi không tìm thấy AL.exe. Bạn có thể chỉnh sửa cấu hình hoặc chỉ cần sao chép AL.exe từ đâu đó trong vị trí đường dẫn này. Đó là tất nhiên không phải là rất tốt đẹp từ quan điểm thực hành tốt nhất của xem, nhưng nhanh hơn và bạn không cần phải chỉnh sửa cấu hình. – agira

15

Bạn nhận được lỗi này vì bạn đang xây dựng một dự án 3,5 sử dụng tệp kê khai assembly, nhưng chưa cài đặt công cụ 3.5. (Hy vọng rằng, ai đó có thể cung cấp thêm thông tin.)

tôi khuyên cài đặt Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1tránh hacks, đặc biệt là khi bạn chỉ cần phải cài đặt các công cụ, và hãy chắc chắn kiểm tra ghi chú phát hành thông tin AL.exe. (SDK này là bản cài đặt được đề xuất cho 3.5 do bản sửa lỗi cập nhật bảo mật.)

"Ghi chú phát hành" cho SDK cho biết ALTOOLPATH được đặt bởi Visual Studio 2005, có thể giải thích tại sao một số người dùng gặp sự cố khi xây dựng. Đây là một dự đoán về phần của tôi.

Sử dụng Trình theo dõi quy trình của SysInternals, khi xây dựng dự án 3,5, Visual Studio 2008 tìm trong thư mục% SystemRoot% \ Microsoft.NET \ Framework \ v3.5 cho Assembly Linker (AL.exe). Không tìm thấy AL ở đó, nó sẽ sử dụng vị trí được chỉ định trong cài đặt đăng ký v6.0A cụ thể. (Lưu ý rằng v6.0A không dành cho .NET 3.5.) Vì vậy, cài đặt phần mềm thích hợp và không hack. : O)

Câu hỏi tôi có là Trình liên kết hội khác nhau giữa 2.0, 3.0 và 3.5?


Windows SDK cho Windows Server 2008 và .NET Framework 3.5

Cài đặt mới được phát hành Microsoft Windows SDK cho Windows 7 và .NET Framework 3.5 SP1 thay vì phiên bản này là đề nghị. Nếu bạn làm hãy tiếp tục và cài đặt SDK này sau VS2008 SP1, hãy đảm bảo bản vá được mô tả trong Knowledge Base 974479 là được áp dụng. Xem phần Tổng quan để biết thêm thông tin .

4

Không cần phải cài đặt VS2010 trên máy chủ Xây dựng.

Xuất khóa "v7.0A" từ hộp dev của bạn, nhập nó vào sổ đăng ký của máy chủ xây dựng. Chỉ cần chắc chắn rằng bạn đổi tên bất kỳ "Program Files (x86)" thành "Program Files" tùy thuộc vào phiên bản nào của các máy chủ Windows bạn đang chạy.

+0

HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SDK \ Windows \ v7.0A - đây có phải là khóa sổ đăng ký không hoạt động nhưng mọi thứ đều trỏ đến khóa này –

2

Tôi đã làm giống như dcadenas và chỉ cần sao chép thư mục SDK \ 7.0A từ máy dev và xuất cài đặt đăng ký v7.0A từ hộp dev sang máy chủ xây dựng. Điều này làm việc ra tuyệt vời như tôi sau đó không cần phải cài đặt VS 2010 trên máy chủ xây dựng. Cảm ơn.

2

tôi đã có lỗi tương tự, mà đến từ cách thêm các file tài nguyên vào một thư mục địa phương và thay đổi hành động xây dựng để "nhúng Tài nguyên" (tài nguyên -> properties) trong khi điều chỉnh các nguồn lực nội địa hóa để MVC3 từ webforms see MVC2 Globalization . Lỗi chính xác được gây ra bởi Resources.lang.resx có chứa một "." trong tên (kết hợp với "tài nguyên emdedded").

Trước đây, ứng dụng được biên dịch và chạy tốt khi sử dụng tài nguyên toàn cầu với tác vụ xây dựng "Nội dung" (App_GlobalResources).

Giải pháp tương tự như @vicky kole ở trên nhưng tôi nghĩ rằng nó vẫn đáng nhắc đến do một vài khác biệt và nguyên nhân chính xác của lỗi al.exe trong một dự án làm việc trước đây.

Sau khi khắc phục sự cố, tôi đã cài đặt Windows 7 & ASP.NET 4 SDK và đặt al.exe trong thư mục C: \ Program Files \ Microsoft SDK \ Windows \ v7.1 \ Bin \ x64 bằng tìm kiếm.

Sau đó, tôi đã tìm kiếm C: \ WINDOWS \ Microsoft.NET \ Framework \ * PHIÊN BẢN MỚI NHẤT * \ *. Mục tiêu cho đến khi tôi tìm thấy nút AL giống như @vicky kole ở trên. Nó nằm trong một tệp khác có tên Microsoft.Common.targets. Tôi đã lấy con đường từ SDK mới được cài đặt C: \ Program Files \ Microsoft SDK \ Windows \ v7.1 \ Bin \ x64 trong trường hợp của tôi và đặt nó trong ToolPath như vicky đã làm và khởi động lại visual studio.

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

(điều này có thể trở thành một bình luận cho bài của mình vì nó thực sự giống với hoàn cảnh của mình)

1

Tôi đã có một lỗi tương tự nhận được một dự án xây dựng trong Windows 10, nơi một công cụ resgen.exe không thể tìm được. Tôi đã phải thay đổi một chìa khóa InstallationFolder registry trong HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Microsoft SDKs\Windows\v8.0A\WinSDK-NetFX35Tools-x86 đến một con đường, nơi nó thực sự tồn tại trên máy tính của tôi: C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.2 Tools

0

vấn đề cố định sau khi tôi cài đặt lại visual studio

Các vấn đề liên quan