2013-05-26 34 views
13

Có lỗi khó chịu sau khi di chuyển một giải pháp từ Visual Studio 2010 sang 2012. Xây dựng là tốt và mọi thứ hoạt động hoàn hảo localhost. Tôi có một dự án MVC4 mới yêu cầu .NET 4.5 vì vậy tôi đã cài đặt khung công tác 4.5 trên máy chủ xây dựng. Việc xây dựng là tốt nhưng MSBuild là không sao chép DotNetOpenAuth.Core.dll từ vị trí gói của nó vào thư mục Bin. Vấn đề là bởi vì, mặc dù dự án cụ thể nhắm mục tiêu khuôn khổ 4.0, tôi tin rằng MSBuild đang kiểm tra sự phụ thuộc đối với .NET 4.5 framework System.Net.Http assembly như là một phần của CoreBuild của nó.System.Net.Http không thể được giải quyết trong khung được nhắm mục tiêu hiện tại .NET 4.0

mã cảnh báo = "MSB3268" Tham chiếu chính \ gói \ DotNetOpenAuth.Core.4.3.0.13117 \ lib \ net40-full \ DotNetOpenAuth.Core.dll "không thể giải quyết được vì nó có sự phụ thuộc gián tiếp vào khung công tác khuôn khổ "System.Net.Http, Phiên bản = 2.0.0.0, Văn hóa = trung lập, PublicKeyToken = b03f5f7f11d50a3a" không thể được giải quyết trong khung được nhắm mục tiêu hiện tại. ".NETFramework, Version = v4.0". Để giải quyết vấn đề này, hãy xóa tham chiếu "c: \ cc \ kazork \ code \ trunk \ src \ packages \ DotNetOpenAuth.Core.4.3.0.13117 \ lib \ net40-full \ DotNetOpenAuth.Core.dll" hoặc nhắm mục tiêu lại ứng dụng của bạn lên phiên bản khung có chứa "Hệ thống .Net.Http, Phiên bản = 2.0.0.0, Văn hóa = trung lập, PublicKeyToken = b03f5f7f11d50a3a

Đây là cấu hình gói của tôi:

<?xml version="1.0" encoding="utf-8"?> 
<packages> 
    <package id="ChardinJs" version="1.0.3" targetFramework="net40" /> 
    <package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net40" /> 
    <package id="DotNetOpenAuth.AspNet" version="4.3.0.13117" targetFramework="net40" /> 
    <package id="DotNetOpenAuth.Core" version="4.3.0.13117" targetFramework="net40" /> 
    <package id="DotNetOpenAuth.OAuth.Consumer" version="4.3.0.13117" targetFramework="net40" /> 
    <package id="DotNetOpenAuth.OAuth.Core" version="4.3.0.13117" targetFramework="net40" /> 
    <package id="DotNetOpenAuth.OpenId.Core" version="4.3.0.13117" targetFramework="net40" /> 
    <package id="DotNetOpenAuth.OpenId.RelyingParty" version="4.3.0.13117" targetFramework="net40" /> 
    <package id="EntityFramework" version="5.0.0" targetFramework="net40" /> 
    <package id="flexigrid" version="1.1.0" targetFramework="net40" /> 
    <package id="jQuery" version="1.9.1" targetFramework="net40" /> 
    <package id="Microsoft.AspNet.FriendlyUrls.Core" version="1.0.0" targetFramework="net40" /> 
    <package id="Microsoft.AspNet.Membership.OpenAuth" version="1.0.1" targetFramework="net40" /> 
    <package id="Microsoft.AspNet.SignalR.Core" version="1.1.1" targetFramework="net40" /> 
    <package id="Microsoft.AspNet.SignalR.JS" version="1.1.1" targetFramework="net40" /> 
    <package id="Microsoft.AspNet.SignalR.Owin" version="1.1.1" targetFramework="net40" /> 
    <package id="Microsoft.AspNet.SignalR.SystemWeb" version="1.1.1" targetFramework="net40" /> 
    <package id="Microsoft.AspNet.Web.Optimization" version="1.0.0" targetFramework="net40" /> 
    <package id="Microsoft.Owin.Host.SystemWeb" version="1.0.1" targetFramework="net40" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net40" /> 
    <package id="Newtonsoft.Json" version="5.0.5" targetFramework="net40" /> 
    <package id="Owin" version="1.0" targetFramework="net40" /> 
    <package id="PayPalCoreSDK" version="1.1.1" targetFramework="net40" /> 
    <package id="PayPalMerchantSDK" version="2.3.98" targetFramework="net40" /> 
    <package id="Select2.js" version="3.3.2" targetFramework="net40" /> 
    <package id="toastr" version="1.2.2" targetFramework="net40" /> 
    <package id="Twitter.Bootstrap" version="2.3.2" targetFramework="net40" /> 
    <package id="WebGrease" version="1.3.0" targetFramework="net40" /> 
</packages> 

Tôi có System.Net.Http được tham chiếu và nó được sao chép vào thùng. Dự án được đề cập đang nhắm mục tiêu khung 4.0. Phiên bản System.Net.Http của tôi dành cho khung công tác 4.0.

Trả lời

24

Vì vậy, mặc dù tôi đã sao chép System.Net.Http .NET 4.0 thông qua gói Nuget được thêm khi cài đặt các gói DotNetOpenAuth, MsBuild trên máy chủ xây dựng của tôi đã kiểm tra DotNetOpenAuth.Các phụ thuộc khác và kiểm tra đối với các hội đồng được cài đặt .NET. trên máy không phải những gì đã được sao chép vào Thùng rác. Trong trường hợp của tôi:

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

Và không có lắp ráp System.Net.Http trong thư mục

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

của tôi vì vậy tôi tin rằng MSBuild cố gắng tìm trong .NET 4.5 lắp ráp mới được cài đặt, trên máy tính của tôi .. \ Assemblies \ Microsoft \ Framework.NETFramework \ v4.5 nơi có một System.Net.Http.dll và đó là lý do tại sao, thay vì nhận được một lỗi hoàn toàn mà System.Net.Http.dll cho mục tiêu .NET 4.0 không không tồn tại, tôi nhận được một cảnh báo về sự phụ thuộc của DotNetOpenAuth.Core.dll trên System.Net.Http, có thể được tìm thấy nhưng không phải cho khung 4.0 khi dự án đang nhắm mục tiêu.

Tôi chỉ đơn giản là sao chép System.Net.Http .NET 4.0 DLL từ gói để

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

trên máy chủ xây dựng của tôi và MsBuild có thể so sánh với phiên bản chính xác System.Net.Htpp for 4.0 .NET kiểm tra phụ thuộc khung.

+0

Bạn có thấy vấn đề thực sự đối với vấn đề này không? Tôi thực sự nghĩ rằng đó là lạ rằng dll mà bạn có trong thư mục gói của bạn không được sử dụng.Tôi có chính xác cùng một vấn đề, nhưng nó không giúp sao chép tệp system.net.http. –

+1

Vâng, đây là điều đã khắc phục được sự cố của tôi. –

+1

Bản dựng của tôi ngừng hoạt động sau khi tôi hạ cấp từ. 4.5 đến 4.0. Trong trường hợp của tôi System.Net.Http và System.Web.Http nơi cả hai mất tích từ thư mục .NETFramework \ v4.0 trên máy chủ xây dựng. Cảm ơn bạn đã chia sẻ giải pháp của mình! –

1

Nếu điều này không thành công, bạn cũng có thể cần phải áp dụng gói .Net v4.5.1 dev vì điều này hỗ trợ nhiều nhắm mục tiêu. Tôi đã cài đặt 4.5.1 và các assembly được sao chép và vẫn có lỗi này. Cài đặt gói dev từ http://www.microsoft.com/en-us/download/details.aspx?id=40772 đã khắc phục sự cố này và hiện đang xây dựng theo máy chủ 2012 r2.

+1

đã thử này, đã không làm việc sau khi xóa hoàn toàn không gian làm việc – genuinefafa

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