2014-11-13 12 views
7

TFS 2013 - Xây dựng: trang web ASP.Net 4.5.1 Tôi gặp lỗi này:Phụ thuộc vào cụm khung "System.Runtime, Version = 4.0.10.0", không thể được giải quyết trong khung được nhắm mục tiêu hiện tại

warning MSB3268: The primary reference "C:\Builds\2\MyProj\Web1_Main\bin\MyProj1.dll" 
could not be resolved because it has an indirect dependency on the framework assembly 
"System.Runtime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which 
could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5.1". To resolve this problem, either remove the reference 
"C:\Builds\2\MyProj\Web1_Main\bin\MyProj1.dll" or retarget your application to a framework 
version which contains "System.Runtime, Version=4.0.10.0, Culture=neutral, 
PublicKeyToken=b03f5f7f11d50a3a". 

Tất cả các dự án và trang web là 4.0 ban đầu bằng Unity 1.0.0.0. Tôi đã nâng cấp nó lên 4.5.2. Ngoài ra các MyProj1 trong lỗi ở trên là tham chiếu Unity và tôi cũng nâng cấp nó lên 3.5.1.

Đọc: https://unity.codeplex.com/workitem/12756 Máy chủ xây dựng đã có bản cập nhật 4.5.2 được cập nhật trong giải pháp thay thế.

Vì vậy, tôi đã hạ cấp xuống 4.5.1 nhưng vẫn gặp lỗi.

  • Giải pháp xây dựng tốt tại địa phương thông qua Visual studio 2013.

  • Các thư viện lớp đứng một mình dự án xây dựng trong TFS tốt nhưng khi MyProj được thêm vào như một tham chiếu đến với Website của tôi, đó là khi nó không thành công.

Bất kỳ ý tưởng nào?

Tôi có cần bất kỳ thay đổi nào trên web.config thay vì đặt lệnh TragetFramework trong khi nâng cấp không?

+0

Tôi nghĩ vậy. Bạn đã xem chưa? – Spock

+0

@Spock Không, tôi chưa có. Bất kỳ đề xuất về những gì cần phải được thực hiện trong đó. Khi lỗi nói và tôi thấy rằng Unity 3.5 cần Runtime 4.0.10.0 nhưng trang web của tôi được nhắm mục tiêu đến 4.5.2. Trong trường hợp này, cài đặt sẽ như thế nào? – gbs

Trả lời

1

Tôi phải nâng cấp Unity lên 3.5 do phụ thuộc vào dự án của tôi trên một số dự án khác và lỗi này lại xuất hiện. Lần này, cuối cùng đã sửa nó.

một này đã giúp tôi: http://devsilos.blogspot.com/2014/10/msb3268-while-targeting-aspnet-web-site.html

Giải pháp tôi sao chép tất cả các file mà xây dựng được phàn nàn về từ:

C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5.2 \ Mặt tiền

Để

C: \ Program Files (x86) \ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.5.2

Dưới đây là lời giải thích từ liên kết ở trên trong trường hợp nó đi xuống vì lý do nào trong tương lai:

A deeper inspection revealed the following interesting fact: aspnet_compiler for some reason does not take into account the .dll-s that reside under the Facade directory of 4.5 assemblies (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facades). It looks only under C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5

As a result the whole thing failed since both System.Threading.Tasks and System.Runtime .dll-s were under the Facades directory and not inside the v4.5.

Now the solutions:

  • Just simply copy the missing .dll-s from Facade to the v4.5 directory.
  • Set the TargetFrameworkMoniker to 4.5.1 in the .sln file. The exact syntax is as follows: TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.5.1".

What happens in this case is that the aspnet_compiler does not recognize the exact version of the required framework and tries to use the GAC wherever it can. If 4.5 is the highest version installed on the build machine I believe it should work.

2

Thực sự xin lỗi tôi không nghĩ rằng "assemblyBinding" sẽ hữu ích. Có vẻ như là known bug. Nó chưa được giải quyết. Sử dụng Unity 3.5, bạn có thể nhắm mục tiêu .NET 4.5.1 nhưng không được 4.5.2. Vì vậy, một tùy chọn sẽ là nhắm mục tiêu lại đến .NET 4.5.1 và xem liệu sự cố có biến mất hay không, nếu đó là một tùy chọn.

p.s. Ngoài ra, bạn có thể thử .NET Framework 4.5.2 Developer Pack. Nhưng một số đã đề cập đến nó đã không hoạt động.

+0

Vâng đó là lỗi tôi đã đề cập trong câu hỏi và tôi đã thử gói nhà phát triển mới và nó không hoạt động. Và tôi đã từ bỏ và chuyển đến thực tế 4,5. – gbs

+0

Cài đặt gói .Net Framework 4.5.2 Developer Pack làm việc cho tôi. – deadlydog

0

Chúng tôi gần đây đã chạy vào một vấn đề tương tự với một trang web đó đã được nâng cấp để nhắm mục tiêu .NET 4.5, và ban đầu theo giải pháp trong gbs's answer.

Trong trường hợp của chúng tôi, chúng tôi đã có nhiều cảnh báo sau đây mô hình này:

<project name>.metaproj : warning MSB3268: The primary reference "<project reference>.dll" could not be resolved because it has an indirect dependency on the framework assembly "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5". To resolve this problem, either remove the reference "<project reference>.dll" or retarget your application to a framework version which contains "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".

Sau đó chúng tôi phát hiện ra rằng nếu bạn tạo một trang web mới nhắm mục tiêu 4.5.x (File> New> trang web ...) và chọn mẫu trang web rỗng ASP.NET, gói Microsoft.Net.Compilers được bao gồm. Việc thêm gói này vào trang web của chúng tôi đã giải quyết được sự cố mà không cần chạm vào các hội đồng tham chiếu.

Trong hai giải pháp ban đầu, sao chép các tệp đã gây dựng thành công nhưng trình bày mối quan ngại về bảo trì và thay đổi TargetFrameworkMoniker (thành 4.5.3 thay vì 4.5.1) đã tạo ra lỗi xây dựng khác và là giải pháp giòn.

+0

Tôi không cố gắng sử dụng tùy chọn thứ hai một cách rõ ràng. Có bảo trì sẽ là một vấn đề và nếu một máy chủ xây dựng mới được thiết lập, chúng tôi cũng cần sửa lỗi đó. Tôi sẽ cố gắng sửa chữa của bạn. Tôi tìm thấy giải pháp hai ngày trước, ước gì bạn đã tìm thấy trước tôi, có thể đã tiết kiệm cho tôi giờ :) – gbs

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