2017-05-08 9 views
6

मेरे पास विजुअल स्टूडियो का उपयोग करके उत्पन्न कुछ एफ # प्रोजेक्ट फ़ाइलें हैं।मैं एमएसबिल्ड परियोजनाओं में एफ # कंपाइलर के विशिष्ट संस्करण का उपयोग कैसे करूं?

मेरे कंप्यूटर पर, जिसमें कई F # संस्करण स्थापित हैं, ऐसा लगता है कि यह नवीनतम है।

हालांकि, मैं एक विशिष्ट एफ # कंपाइलर का उपयोग करना चाहता हूं - जिसे संस्करण 3.1.2 का उपयोग करके इंस्टॉल किया गया है।

मैं ऐसा कैसे कर सकता हूं?

उत्तर

4

मैं एक समान सेटअप का उपयोग कर रहा हूं, बस मैं अपने nuget package से एफ # कंपाइलर का उपभोग कर रहा हूं - यह साझा निर्माण वातावरण में nicer काम करता है।

आप अपने एफ # परियोजनाओं के सभी में शामिल किया जाना एक .props फ़ाइल की आवश्यकता होगी, मैं इसे fsharp_project.props कहा जाता है। उस प्रोप फ़ाइल को बदलकर, आप अपने सभी F # प्रोजेक्ट्स के लिए कंपाइलर संस्करण अपडेट कर सकते हैं।

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <PackageRoot>C:\packages\Fsharp.Compiler.Tools.Nuget</PackageRoot> 
    <FscToolPath>$(PackageRoot)\tools</FscToolPath> 
    <FSharpVersion>v3.0</FSharpVersion> 
    </PropertyGroup> 
    <ItemGroup> 
    <Reference Include="FSharp.Core"> 
    <HintPath>$(PackageRoot)\tools\fsharp.core.dll</HintPath> 
    </Reference> 
    </ItemGroup> 
</Project> 

आप एफ # संकलक के अपने स्थानीय संस्करण के लिए पथ समायोजित करने की आवश्यकता है, और भी मुख्य लाइब्रेरीज है कि आप उपयोग करना चाहते हैं: इसकी सामग्री के रूप में निम्नानुसार होना चाहिए। इसके अलावा अपने .fsproj फ़ाइल में नीचे

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> 
    <Import Project="C:\whereever\fsharp_project.props"/> 
... 

आप FSharp.Core.dll के संदर्भ देखेंगे:

फिर, इस प्रकार है कि फ़ाइल का उपभोग करने के लिए अपने .fsproj फ़ाइल को संशोधित। इसे हटाएं - प्रोप फ़ाइल में, पहले से ही मूल पुस्तकालयों के संस्करण का संदर्भ है जो संकलक के साथ आते हैं।

अपनी प्रोजेक्ट को दोबारा लोड करें और फिर से बनाएं, यह fsc.exe का पूरा पथ प्रिंट करेगा जो इसका उपयोग कर रहा है।

एक तरफ ध्यान दें के रूप में: .props फाइलों के साथ एक ही चाल भी अपने एफ # कोड के सी # उपभोक्ताओं में FSharp.Core.dll का सही संस्करण संदर्भित करने के लिए अविश्वसनीय रूप से उपयोगी है - कि क्रम त्रुटियों की एक लगातार स्रोत है। प्रत्येक .csproj में केवल FSharp.Core.dll संदर्भित एक प्रोप फ़ाइल शामिल करें, और आप 'cprops' फ़ाइल को अपडेट करके सभी सी # परियोजनाओं को मूल पुस्तकालयों के एक नए संस्करण में स्विच करने में सक्षम होंगे।

+1

यह शानदार रूप से काम करता है, और सही है। धन्यवाद। – Arafangion

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

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