Microsoft.Bcl.Build NuGet पैकेज क्या करता है?


83

मैं इस पर कोई दस्तावेज नहीं खोज पा रहा हूं - Microsoft.Bcl.Bild Nuget पृष्ठ के लिंक बहुत मदद नहीं करते हैं:

यह पैकेज बिल्ड इन्फ्रास्ट्रक्चर घटक प्रदान करता है ताकि विशिष्ट Microsoft पैकेजों को संदर्भित करने वाली परियोजनाएं सफलतापूर्वक निर्माण कर सकें।

जब तक आप एक बिल्ड चेतावनी नहीं देते हैं जो आपको संदर्भ जोड़ने के लिए निर्देश देती है, तब तक सीधे इस पैकेज का संदर्भ न लें।

पर देख से Microsoft.Bcl.Build.targetsफ़ाइल, ऐसा लगता है कि यह बाध्यकारी रीडायरेक्ट और पैकेज संदर्भ प्रबंधन करता है। ऐसा लगता है कि इस कार्यक्षमता का उपयोग केवल दृश्य स्टूडियो में चलने पर किया जाता है।

क्या कोई इस पैकेज के बारे में अधिक जानकारी प्रदान कर सकता है? यह हमारे बिल्ड सर्वर वातावरण में एक दर्द है , क्या इसे पूरी तरह से स्रोत कोड (जैसे बिल्ड सर्वर वातावरण) से निर्माण करते समय अनदेखा किया जा सकता है?

जवाबों:


26

देखने से Microsoft.Bcl.Build.targets, यह परियोजना विन्यास लक्ष्य का एक गुच्छा है, जैसे:

  • EnsureBindingRedirects - यह निर्धारित करें कि रीडायरेक्ट बाइंडिंग के लिए कौन से संदर्भ चुने गए हैं, और उनके साथ app.config को अपडेट करें
  • BclBuildValidateNugetPackageReferences - यह लक्ष्य इस बात को प्रमाणित करता है कि वर्तमान परियोजना में स्थापित किसी भी नगेट संकुल में भी वर्तमान परियोजना में उनकी निर्भरता (संक्रमणीय निर्भरता) स्थापित है।

इसलिए इस मूल्यांकन के आधार पर, मैंने तय किया कि यह कार्यक्षमता केवल देव माहौल में आवश्यक है, जब NuGet निर्भरता को जोड़ने / हटाने / अद्यतन करने; और यह एक CI वातावरण में नजरअंदाज किया जा सकता है, जहां यह समस्या पैदा कर रहा है।

इसलिए मैं अपने * .csproj फाइलों में निर्भरता को बनाए रखना चाहता हूं, लेकिन CI बिल्ड चलाते समय इसे अनदेखा कर देता हूं। मैंने एक बिल्ड एन्वायरमेंट टार्गेट फ़ाइल (जैसे बिल्डर.टार्गेट) पर एक सशर्त आयात जोड़कर किया, जिसमें यह ब्लॉक शामिल है:

<!-- Skip Microsoft.Bcl.Build functionality when building only from Source. -->
<PropertyGroup>
  <BclBuildImported>Ignore</BclBuildImported>
</PropertyGroup>

यह एक CI वातावरण में लक्ष्यों को अनदेखा करने का शुद्ध प्रभाव है, लेकिन उन्हें विकास के माहौल में सक्रिय कर रहा है। मैं इस एक सप्ताह के लिए चल रहा है, और अब तक कोई समस्या नहीं है ...

मैं अभी भी यह जानना पसंद करूंगा कि क्या किसी को इस पैकेज की बेहतर जानकारी है जो इंगित करता है कि ऐसा करना एक बुरा विचार है। अब तक मेरी राय है कि यह एक अच्छा विचार है।

2018-02-01 संपादित करें:

ध्यान दें कि Microsoft.Bcl.Build.targetsतर्क को छोड़ने के लिए अनदेखा पैरामीटर को कमांड-लाइन पर भी पास किया जा सकता है:

msbuild (targets, etc) /p:BclBuildImported=Ignore

मैं काफी समझ नहीं पाया So I want to keep the dependency in my *.csproj files, but ignore it. I did that by adding a conditional import on a build environment targets file (eg builder.targets), क्या आप विस्तृत कर सकते हैं?
जोबाडिनिज

मुझे Microsoft.Bcl.Bild के प्रोजेक्ट संदर्भ को रखने की आवश्यकता है, ताकि इसका उपयोग विकास के दौरान / विज़ुअल स्टूडियो के भीतर किया जा सके। निर्भरता अपडेट के दौरान तर्क चलता है। लेकिन मैं इसे बिल्ड सर्वर बनाने के दौरान अक्षम करना चाहता था क्योंकि यह एक बिल्ड सर्वर पर चलने वाली समस्याओं के कारण होता है।
21

1
इस बात की जाँच करने के बारे में अधिक स्पष्ट होने के लिए, यहाँ मैंने <लक्ष्य> और <आयात> आइटम: <लक्ष्य> के लिए: Condition="$(BclBuildImported) != 'Ignore'"और <आयात>:Condition="$(BclBuildImported) != 'Ignore' And Exists('$(SolutionDir)\packages\Microsoft.Bcl.Build.1.0.21\build\Microsoft.Bcl.Build.targets')"
Auri Rahimzadeh

मैंने यह भी पाया कि यह एक मूर्खतापूर्ण चीज है जो मेरे विरासत कोड से बची हुई है। आवश्यक नहीं है। कुछ भी। कुछ भी नहीं
औरी रहीमज़ादेह

15

यह मूल रूप से पुराने पैकेजों के लिए एक तरीका है, जो पुराने .Net को लक्षित करता है और नए पर कोई समस्या नहीं है

यदि आप http://blogs.msdn.com/b/bclteam/p/bclbuild.aspx पर जाते हैं, तो आपको https://devblogs.microsoft.com/dotnet/pcl-and-net-nugetet से जुड़ने की दो घोषणाएँ दिखाई देंगी। पुस्तकालयों-से-अब-सक्षम-के लिए xamarin / और https://devblogs.microsoft.com/dotnet/improved-package-restore/ जो इसे स्पष्ट करना चाहिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.