2017-06-13 5 views
5

में असफल मैं एक मामूली जटिल अनुप्रयोग है, एक इकाई परीक्षण परियोजना के साथ सेट अगर मैं पैकेज प्रबंधन कंसोल में निम्नलिखित चलाएँ:nuget अद्यतन .NET फ्रेमवर्क 4.6.1</p> <p>लक्ष्यीकरण system.runtime के लिए bindingRedirects है कि तब क्रम

update-package -reinstall -project velogicfit.Sizer3D.Core.UnitTests

... तो Nuget, इकाई परीक्षण परियोजना की app.config फ़ाइल को रीडायरेक्ट बंधन का एक समूह कहते हैं System.Runtime तरह बातें की v4.1.1.0 के लिए पुनः निर्देशित:

<dependentAssembly> 
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" /> 
</dependentAssembly> 

और तब, जब परियोजना (NCrunch द्वारा) चलाया जाता है, यह संदेश के साथ विफल रहता है:

System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. 

मैं संभवतः अधिक नया ढांचा संस्करण स्थापित करके त्रुटि को ठीक कर सकता है, लेकिन मैं नहीं बल्कि समझ क्या है Nuget को इन बाध्यकारी रीडायरेक्ट जोड़ने के कारण।

इकाई परीक्षण परियोजना की उत्पादन निर्देशिका में हर DLL के माध्यम से देख रहे हैं, उच्चतम संदर्भ मैं देख सकता हूँ v4.0.20.0

मैं asmspy की कोशिश की है system.runtime है और यह भी रिपोर्ट है वहाँ पर कुछ निर्भरता हैं कि 4.0.20.0, लेकिन पर 4.1.1.0

FWIW कुछ भी नहीं, संदर्भ v4.0.20.0 system.runtime करने के लिए सभी समाधान में मेरा अन्य परियोजनाओं, जो लक्ष्यीकरण कर रहे हैं NETStandard 1.4

सवालों से आते हैं:

  • मैं कैसे पता लगा सकता हूं कि कौन सा ढांचा संस्करण सिस्टम के इन संस्करणों में से प्रत्येक के अनुरूप है। रनटाइम (4.0.0.0, 4.0.20.0, 4.1.1.0)?
  • क्या कोई लॉगिंग मैं यह जानने के लिए चालू कर सकता हूं कि Nuget क्या सोच रहा है & यह असेंबली बाध्यकारी रीडायरेक्ट को 4.1.1.0 पर क्यों सेट करता है?
  • क्या मेरी नेटटेक्टेड 1.4 परियोजनाओं को 4.0.20.0 का संदर्भ देना चाहिए?
+0

'System.Runtime' पैकेज का कौन सा संस्करण उपयोग किया जाता है? ('packages.config' में सूचीबद्ध) नवीनतम" सार्वजनिक "संस्करण NuGet पैकेज के संस्करण के आधार पर' 4.1.0.0' या '4.0.20.0' होना चाहिए, लेकिन afaik कभी भी' 4.1.1.0' –

+0

packages.config शो नहीं : '<पैकेज आईडी =" सिस्टम। रनटाइम "संस्करण =" 4.3.0 "targetFramework =" net461 "/>' – dbruning

उत्तर

1

मैंने पैकेट पर स्विच करके इस (और कुछ अन्य संदर्भ मुद्दों) को हल करने का अंत किया। पाकेट ने मुझे अपनी सीधी और संक्रमणीय निर्भरताओं पर पकड़ हासिल करने में मदद की, और फिर मैं यह देखने में सक्षम था कि बाइंडिंग रीडायरेक्ट को उचित तरीके से सेट करने और सेट करने के आधार पर क्या था।

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