2013-05-26 4 views
13

विजुअल स्टूडियो 2010 से 2012 तक समाधान को स्थानांतरित करने के बाद एक ग़लत त्रुटि मिली। बिल्ड ठीक है और सबकुछ सही लोकहोस्ट काम करता है। मेरे पास एक नई एमवीसी 4 परियोजना है जिसके लिए .NET 4.5 की आवश्यकता है इसलिए मैंने बिल्ड सर्वर पर 4.5 फ्रेमवर्क स्थापित किया। बिल्ड अच्छा है लेकिन एमएसबिल्ड अपने पैकेज स्थान से बिन डीआईआर में DotNetOpenAuth.Core.dll की प्रतिलिपि बनाने में विफल रहा है। मुद्दा यह है कि, हालांकि विशेष परियोजना 4.0 ढांचे को लक्षित करती है, मेरा मानना ​​है कि एमएसबिल्ड अपने कोरबिल्ड के हिस्से के रूप में .NET 4.5 फ्रेमवर्क System.Net.Http असेंबली के खिलाफ निर्भरता की जांच कर रहा है।सिस्टम.Net.Http वर्तमान में लक्षित ढांचे में हल नहीं किया जा सका .NET 4.0

चेतावनी कोड = "एमएसबी 3268" प्राथमिक संदर्भ \ पैकेज \ DotNetOpenAuth.Core.4.3.0.13117 \ lib \ net40-full \ DotNetOpenAuth.Core.dll "हल नहीं किया जा सका क्योंकि इसकी ढांचा असेंबली पर अप्रत्यक्ष निर्भरता है "System.Net.Http, संस्करण = 2.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a" जिसे वर्तमान में लक्षित ढांचे में हल नहीं किया जा सका। ".NETFramework, संस्करण = v4.0"। इस समस्या को हल करने के लिए, या तो निकालें संदर्भ "सी: \ सीसी \ kazork \ code \ trunk \ src \ packages \ DotNetOpenAuth.Core.4.3.0.13117 \ lib \ net40-full \ DotNetOpenAuth.Core.dll" या अपने अनुप्रयोग को एक फ्रेमवर्क संस्करण में पुन: लक्षित करें जिसमें "सिस्टम" है .Net.Http, संस्करण = 2.0.0.0, संस्कृति = तटस्थ, PublicKeyToken = b03f5f7f11d50a3a

यहां मेरा पैकेज कॉन्फ़िगरेशन है:

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

मेरे पास System.Net.Http संदर्भित है और इसे बिन में कॉपी किया गया है। प्रश्न में परियोजना 4.0 ढांचे को लक्षित कर रही है। मेरा संस्करण System.Net.Http 4.0 ढांचे के लिए है।

उत्तर

24

तो भले ही मैं DotNetOpenAuth संकुल को स्थापित करते समय जोड़ा गया Nuget पैकेज के माध्यम से System.Net.Http .NET 4.0 की प्रतिलिपि बना रहा था, मेरे बिल्ड सर्वर पर MsBuild DotNetOpenAuth.Core निर्भरता की जांच कर रहा था और .NET असेंबली के खिलाफ जांच कर रहा था मशीन पर नहीं कि बिन में क्या कॉपी किया जा रहा था।

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

और मेरे

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

निर्देशिका में कोई System.Net.Http विधानसभा नहीं थी इसलिए मेरा मानना ​​है कि MSBuild, नव स्थापित .NET 4.5 विधानसभाओं में देखने के लिए मेरी मशीन पर का प्रयास किया: मेरे मामले में .. \ Assemblies \ Microsoft \ Framework.NETFramework \ v4.5 जहां System.Net.Http.dll है और यही कारण है कि, .NET 4.0 लक्ष्यों के लिए System.Net.Http.dll को एक सही त्रुटि प्राप्त करने के बजाय अस्तित्व में नहीं है, मुझे System.Net.Http पर DotNetOpenAuth.Core.dll की निर्भरता के बारे में चेतावनी मिली है, जो पाया जा सकता है लेकिन 4.0 फ्रेमवर्क के लिए नहीं है क्योंकि परियोजना लक्ष्यीकरण कर रही थी।

मैं पैकेज से बस की नकल की System.Net.Http .NET 4.0 DLL

लिए C: \ Program Files (x86) \ संदर्भ विधानसभाओं \ Microsoft \ फ्रेमवर्क \ .NETFramework \ v4.0

मेरे बिल्ड सर्वर पर और एमएसबिल्ड 4.0 .NET फ्रेमवर्क निर्भरता जांच के लिए सही संस्करण System.Net.Htpp से तुलना करने में सक्षम था।

+0

क्या आपको यह वास्तविक समस्या मिली? मुझे सच में लगता है कि यह अजीब बात है कि आपके पैकेज फ़ोल्डर में आपके पास मौजूद डीएलएल का उपयोग नहीं किया जाता है।मेरे पास बिल्कुल वही समस्या है, लेकिन यह system.net.http फ़ाइल की प्रतिलिपि बनाने में मदद नहीं करता है। –

+1

हां, यह मेरी समस्या को ठीक करता है। –

+1

मैं 4.5 से 4.0 तक डाउनग्रेड करने के बाद काम करना छोड़ देता हूं। मेरे मामले में System.Net.Http और System.Web.Http जहां दोनों बिल्ड सर्वर पर .NETFramework \ v4.0 फ़ोल्डर से अनुपलब्ध हैं। अपना संकल्प साझा करने के लिए धन्यवाद! –

1

यदि यह विफल हो जाता है, तो आपको .NET v4.5.1 dev पैक लागू करने की आवश्यकता हो सकती है क्योंकि यह एकाधिक लक्ष्यीकरण का समर्थन करता है। मेरे पास 4.5.1 स्थापित था और असेंबली की प्रतिलिपि बनाई गई थी और अभी भी यह त्रुटि थी। http://www.microsoft.com/en-us/download/details.aspx?id=40772 से देव पैक को स्थापित करने से इस समस्या को ठीक किया गया है और अब सर्वर 2012 आर 2 के तहत बनाता है।

+1

ने यह कोशिश की, वर्कस्पेस के पूर्ण वाइप के बाद काम नहीं किया – genuinefafa

संबंधित मुद्दे