मैं ओपन सोर्स लाइब्रेरी में योगदान देता हूं जो वर्तमान में एमवीसी 2 - एमवीसी 5 का समर्थन करता है, और मैं एमवीसी 6 (और उससे परे) का भी समर्थन करना चाहता हूं। एमवीसी के प्रत्येक संस्करण का समर्थन करने के लिए, हम एमएसवी के सही संस्करण को शामिल करने के लिए एमएसवील्ड के Condition फीचर का लाभ उठाते हैं और निर्माण करते समय इसकी निर्भरता (DefineConstants
के मूल्य के आधार पर) शामिल करते हैं। यह एक ही प्रोजेक्ट फ़ाइल और स्रोत कोड का उपयोग कर प्रत्येक एमवीसी संस्करण के लिए एक व्यक्तिगत DLL बनाकर, एमवीसी के सभी समर्थित संस्करणों के लिए एक एकल प्रोजेक्ट फ़ाइल का उपयोग करना संभव बनाता है।एक संकलन निर्भरता (vNext) के एकाधिक संस्करणों का समर्थन करना
<ItemGroup Condition=" $(DefineConstants.Contains('MVC2')) ">
<Reference Include="System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
</ItemGroup>
<ItemGroup Condition=" $(DefineConstants.Contains('MVC3')) ">
<!-- Due to the windows update MS14-059, we need this hack to ensure we can build MVC3 both on machines that have the update and those that don't -->
<Reference Condition=" Exists('$(windir)\Microsoft.NET\assembly\GAC_MSIL\System.Web.Mvc\v4.0_3.0.0.0__31bf3856ad364e35\System.Web.Mvc.dll') " Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Condition=" !Exists('$(windir)\Microsoft.NET\assembly\GAC_MSIL\System.Web.Mvc\v4.0_3.0.0.0__31bf3856ad364e35\System.Web.Mvc.dll') " Include="System.Web.Mvc, Version=3.0.0.1, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Mvc.3.0.20105.1\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Razor.1.0.20105.408\lib\net40\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.1.0.20105.408\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition=" $(DefineConstants.Contains('MVC4')) ">
<Reference Include="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Mvc.4.0.20710.0\lib\net40\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Razor.4.0.20715.0\lib\net40\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.4.0.20710.0\lib\net40\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup Condition=" $(DefineConstants.Contains('MVC5')) ">
<Reference Include="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Mvc.5.0.0\lib\net45\System.Web.Mvc.dll</HintPath>
</Reference>
<Reference Include="System.Web.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.Razor.3.0.0\lib\net45\System.Web.Razor.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.dll</HintPath>
</Reference>
<Reference Include="System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<Private>True</Private>
<HintPath>..\packages\Microsoft.AspNet.WebPages.3.0.0\lib\net45\System.Web.WebPages.Razor.dll</HintPath>
</Reference>
</ItemGroup>
मैं ASP.NET 5/MVC 6 की परियोजना संरचना पर ध्यान दिया है और पहले से ही MVC 6. के लिए एक .csproj
फ़ाइल के बजाय एक project.json
फ़ाइल का उपयोग करने हालांकि इस्तीफा दे दिया है, मैं project.json documentation पढ़ सकते हैं और वहाँ नहीं करता ' टी एक एकल project.json
फ़ाइल के साथ एमवीसी के कई संस्करणों का समर्थन करने का एक तरीका प्रतीत होता है।
आदर्श रूप में, मैं MSBuild
को कुचलना चाहता हूं और प्रत्येक एमवीसी संस्करण (एमवीसी 2 - एमवीसी 5 सहित) के लिए Roslyn
का उपयोग करना चाहता हूं। लेकिन क्या एक परियोजना फ़ाइल (और प्रोजेक्ट निर्देशिका बनाने के बिना कई एमवीसी संस्करणों का समर्थन करने का कोई तरीका है क्योंकि उनमें से सभी को एमवीसी संस्करण के लिए project.json
नामित करना होगा)? यदि नहीं, तो क्या project.json
कॉन्फ़िगरेशन 5 बार डुप्लिकेट करने का कोई और तरीका नहीं है?
यह काम नहीं करेगा (कम से कम तुम्हारे पास है पसंद नहीं)। हम सिर्फ एमवीसी 2 के लिए .NET 3.5, .NET 4.0, और .NET 4.5 के लिए एक अलग DLL संकलित कर रहे हैं। एमवीसी 3 और एमवीसी 4 को .NET 4.0 और .NET 4.5, और एमवीसी 5 के तहत केवल .NET 4.5 के तहत संकलित किया गया है। हमारे पास नई सुविधाओं का लाभ उठाने के लिए संकलन प्रतीक हैं। उदाहरण के लिए, 'AllowAnonymous' विशेषता के आस-पास एक है क्योंकि यह एमवीसी 2 या एमवीसी 3 में समर्थित नहीं था, लेकिन एमवीसी 4 और एमवीसी 5 के लिए यह आवश्यक है कि यह सुनिश्चित करने के लिए वैश्विक स्तर पर पंजीकृत प्राधिकृत एट्रिब्यूट वाले लोग हमेशा नियंत्रक तक पहुंच सकें। क्या आप कह रहे हैं कि मुझे एक ही ढांचे में एमवीसी का एक संस्करण मैप करना चाहिए? – NightOwl888
आह, मैं देखता हूं। उस स्थिति में, हाँ आप सही काम कर रहे हैं और आपका जवाब सही है। –