2015-04-09 3 views
15

मैंने F # में एक प्रोजेक्ट बनाया है जो F # 3.1 रनटाइम को लक्षित करता है (यानी, FSharp.Core संस्करण 4.3.1)। फिर मैंने एक कंसोल सी # एप्लिकेशन बनाया है, मेरे एफ # प्रोजेक्ट के लिए एक प्रोजेक्ट संदर्भ जोड़ा है, FSharp.Core.dll 4.3.1 का संदर्भ जोड़ा।.NET रनटाइम FSharp.Core 4.3.0 लोड करने का प्रयास करता है भले ही सभी प्रोजेक्ट संदर्भ 4.3.1

सब कुछ किसी भी त्रुटि या चेतावनी के बिना संकलित, लेकिन जब मैं एफ # परियोजना से किसी भी प्रकार का उपयोग करने के कोशिश कर रहा हूँ क्रम इस फेंकता है: क्यों यह FSharp.Core 4.3.0 जब सभी के लिए खोज करता है

System.IO.FileLoadException : Could not load file or assembly 'FSharp.Core, Version=4.3.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. 

मेरी परियोजनाओं संदर्भ 4.3.1? यदि मैं सभी परियोजना संदर्भों को 4.3.1 से 4.3.0 तक बदलता हूं कि सब कुछ ठीक काम करेगा, लेकिन संस्करण 4.3.1 के साथ क्या हो रहा है?

पीएस दोनों परियोजना लक्ष्य .NET 4.5.1। मैं माइक्रोसॉफ्ट विजुअल स्टूडियो 2013

+0

क्या आप उदाहरण के लिए FSharp.Data का संदर्भ देते हैं? –

उत्तर

25

यह जंगली अनुमान है लेकिन अपवाद के आधार पर आपको यह संभावना है कि आपके पास अपनी परियोजना के अंदर अन्य FSharp असेंबली हैं।

तो त्रुटि इंगित करती है कि आप जिन निर्भरताओं का उपयोग कर रहे हैं उनमें से एक को FSharp.Core 4.3.0.0 की आवश्यकता है। आइए मान लें कि आपकी परियोजना अन्य FSharp निर्भरताओं का संदर्भ देती है जैसे उदाहरण FSharp.Data 2.2.0.0। यहां तक ​​कि, यदि आपने अपनी परियोजना में FSharp.Core 4.3.1.0 पर एक स्पष्ट संदर्भ जोड़ा है, तो यह काम नहीं करेगा क्योंकि FSharp.Data 2.2.0.0FSharp.Core 4.3.0.0 के विरुद्ध बनाया गया था। ठीक करने के लिए है कि आप अपनी परियोजना विन्यास फाइल app.config में एक bindingRedirect जोड़ने की जरूरत:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.3.1.0" newVersion="4.3.1.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
</configuration> 

यह समस्या ठीक करना चाहिए।

+0

आपको यह मिला! मैं कुछ पाठ को पार्स करने के लिए FParsec लाइब्रेरी का उपयोग कर रहा हूं, और यह लाइब्रेरी FSharp.Core 4.3.0 को लक्षित करती है। पारितोषिक के लिए धन्यवाद :) –

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

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