2010-06-16 14 views
14

Tôi vừa nâng cấp dự án của mình lên Asp.Net 4, từ 3.5. Khi xây dựng đá khỏi TeamCity, tôi nhận được lỗi sau:Lỗi ASPNETCOMPILER ASPCONFIG: Không thể tải tệp hoặc lắp ráp 'Microsoft.VisualBasic.Activities.Compiler' hoặc một trong các phụ thuộc của nó

[Project "Website.metaproj" (Rebuild target(s)):] C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /Website -p Website\ -u -f PrecompiledWeb\Website\ 
[12:11:50]: [Project "Website.metaproj" (Rebuild target(s)):] ASPNETCOMPILER error ASPCONFIG: Could not load file or assembly 'Microsoft.VisualBasic.Activities.Compiler' or one of its dependencies. An attempt was made to load a program with an incorrect format. 
[12:11:50]: MSBuild output: 
[12:11:50]: Copying file from "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Dependencies\wnvxls.dll" to "Website\\Bin\wnvxls.dll". 
[12:11:50]: Copying file from "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Dependencies\wnvxls.xml" to "Website\\Bin\wnvxls.xml". 
[12:11:50]: C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /Website -p Website\ -u -f PrecompiledWeb\Website\ 
[12:11:50]: ASPNETCOMPILER : error ASPCONFIG: Could not load file or assembly 'Microsoft.VisualBasic.Activities.Compiler' or one of its dependencies. An attempt was made to load a program with an incorrect format. [C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj] 
[12:11:50]: Done Building Project "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj" (Rebuild target(s)) -- FAILED. 
[12:11:50]: Done Building Project "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln" (Rebuild target(s)) -- FAILED. 
[12:11:50]: Done Building Project "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln.teamcity.patch.tcprojx" (TeamCity_Generated_Build;TeamCity_Generated_NUnitTests target(s)) -- FAILED. 
[12:11:50]: Build FAILED. 
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln.teamcity.patch.tcprojx" (TeamCity_Generated_Build;TeamCity_Generated_NUnitTests target) (1) -> 
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln" (Rebuild target) (2) -> 
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj" (Rebuild target) (3) -> 
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.Other\MyProject.Other.csproj" (Rebuild target) (5) -> 
[12:11:50]: (CoreCompile target) -> 
[12:11:50]: Helpers\ProgramHelper.cs(40,21): warning CS0168: The variable 'ex' is declared but never used [C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.Other\MyProject.Other.csproj] 
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln.teamcity.patch.tcprojx" (TeamCity_Generated_Build;TeamCity_Generated_NUnitTests target) (1) -> 
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\MyProject.sln" (Rebuild target) (2) -> 
[12:11:50]: "C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj" (Rebuild target) (3) -> 
[12:11:50]: (Rebuild target) -> 
[12:11:50]: ASPNETCOMPILER : error ASPCONFIG: Could not load file or assembly 'Microsoft.VisualBasic.Activities.Compiler' or one of its dependencies. An attempt was made to load a program with an incorrect format. [C:\Program Files\TeamCity\buildAgent\work\8bbb8fc03bd91944\Website.metaproj] 
[12:11:50]: 1 Warning(s) 
[12:11:50]: 1 Error(s) 
[12:11:50]: Time Elapsed 00:00:31.48 

tôi đã cố gắng sao chép các tài liệu tham khảo lắp ráp khung lưới để C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4 .0 nghĩ rằng sẽ sửa chữa mọi thứ, nhưng vẫn không có may mắn. Có suy nghĩ gì không?

+0

Tôi thấy điều này cố định nó cho tôi: http: // www. itsupportforum.net/topic/the-imported-project-microsoft-webapplication-targets-was-not-found-msbuild/ Tóm tắt: Phiên bản sai của msbuild và .net – Boris

Trả lời

5

Lỗi này phải làm với các thư viện lớp trong các giải pháp tham khảo cũ (v3 hoặc v3.5) cụm hệ thống. Các thư viện lớp đó được tham chiếu bởi trang web của tôi, vì vậy các assembly hệ thống được sao chép vào thư mục bin cùng với các thư viện lớp. Có lẽ các hệ thống hội đồng trong thư mục 3.5 có quyền truy cập khác nhau hơn so với thư mục 4.0 và khi aspnet_compiler đã cố gắng để tải chúng từ thư mục bin, nó barfed.

Sau khi xem qua từng tệp csproj và cập nhật <RequiredTargetFramework> giá trị thành 4.0, mọi thứ đều hoạt động như mong đợi.

1

Hình như một mismatch x86/x64 - Tôi muốn mạnh mẽ khuyên bạn nên thực sự sử dụng trình cài đặt khuôn khổ, hơn hack nó bằng cách sao chép các tập tin bằng tay

+0

@Rowland Tôi đã cài đặt khung công tác. Tôi đã không thể tìm thấy một cài đặt cho .net framework 4 sdk, đó là lý do tại sao tôi sao chép các tập tin bằng tay. Tôi sẽ thử cài đặt sdk nếu bạn có thể cung cấp liên kết :) –

+0

@Jim Tôi cho rằng bạn đã thử: http://msdn.microsoft.com/en-us/netframework/aa569263.aspx Mặc dù có vẻ như từ lỗi tìm kiếm các bộ phận của Visual Studio SDK (từ: http://msdn.microsoft.com/en-us/library/bb166441.aspx) –

+0

@Rowland Yep, ban đầu tôi đã cài đặt khung .net 4. Tôi đã gỡ cài đặt nó và sáng cài đặt lại nó, với hy vọng rằng nó sửa chữa mọi thứ. Tôi không tin rằng VS SDK sẽ giúp tôi ở đây. Dự án của tôi không liên quan đến VS - Tôi không tham chiếu hoặc mở rộng nó –

6

Tôi gặp lỗi tương tự khi tạo .csproj_deploy từ VS. Tất cả các dự án khác bao gồm cả web trong giải pháp được xây dựng tốt. Thực sự có tệp Microsoft.VisualBasic.Activities.Compiler này trong thư mục bin web của tôi. Khi tôi nhấp vào xây dựng/giải pháp làm sạch, tất cả các tập tin trong thư mục đã bị xóa ngoại trừ điều này. Tôi tự xóa tập tin này và xây dựng lại và nó được xây dựng tốt. Lần này, tôi thậm chí không thấy tệp này trong thư mục bin.

+0

Rõ ràng, bất kể chạy một hành động Clean Build, các tệp này thực sự vẫn còn trong thư mục xây dựng và tàn phá quá trình xây dựng của bạn. Chúng ta có thể xóa vấn đề chỉ sau khi chúng ta loại bỏ các tham chiếu đến các thư viện VisualBasic khác trong các dự án, và _then_ xóa thư mục bin của build. – Abel

1

Tôi tìm thấy giải pháp được chấp nhận rất đơn giản được trình bày here khắc phục vấn đề cho tôi, việc này đang cài đặt Windows SDK for .NET Framework 4 (hoặc tương đương với phiên bản Windows của bạn).

Lưu ý nhận xét về câu trả lời được chấp nhận có nội dung là "Intellisense and Reference Assemblies" là các tính năng duy nhất từ ​​SDK cần thiết để khắc phục vấn đề này.

1

Giải pháp đơn giản phù hợp với tôi là sửa đổi dòng TargetFrameworkVersion của tệp .vbproj. Đơn giản chỉ cần thay đổi "v4.0" để "4.0" loại bỏ tất cả các lỗi copmiler và cố định các vấn đề intelliSense của tôi (thẻ asp.net không được công nhận).

9

Đối với tôi, đó thực sự là sự không khớp x86/x64. Tôi giải quyết nó bằng cách xác định đường dẫn đến MSBuild x64 qua các biến môi trường MSBuild:

Set the MSBuild environment variable

1

Chúng tôi đã có lỗi này khi chuyển đổi môi trường lưu trữ của chúng tôi (đến máy chủ web mới với IIS).

Cách khắc phục là:

  • Hoặc thay đổi hồ bơi ứng dụng/Advanced settings, và thiết lập Enable 32 bit applications để true, hoặc
  • Xóa tất cả các cụm từ thư mục bin đó đã thuộc về khuôn khổ (ví dụ chúng tôi đã có System.Data.dll trong thư mục bin của chúng tôi, được rõ ràng là được xây dựng cho 32b - xóa nó đã khắc phục được sự cố)
+0

Cảm ơn bạn, tôi đã tìm kiếm giải pháp! –

0

Tôi thấy rằng tôi có tham chiếu không cần thiết đối với 'Microsoft.VisualBasic.Activities.Trình biên dịch 'dll. Khi tôi đã xóa tham chiếu, tất cả mọi thứ đã hoạt động.

0

Nếu bạn đang xây dựng một dự án web trong x64 trong Visual Studio và chạy trên IIS Express bạn phải kích hoạt các thiết lập sau:

Tools --> Options --> Projects & Solutions --> Web Projects --> Use the 64 bit version of IIS Express for web sites and projects