मेरे पास एक प्रोजेक्ट है जो Nuget पैकेज से एक निश्चित लक्ष्य फ़ाइल आयात करता है। भले ही मैं PackageReferences का उपयोग करता हूं, मुझे इस फ़ाइल को मैन्युअल रूप से आयात करने के लिए मजबूर होना पड़ता है।

(विवरण के लिए मेरा अन्य प्रश्न देखें - नई दुनिया में जहां नगेट पैकेजों का उपभोग msbuild PackageReference के माध्यम से किया जाता है, वहां हमें पैकेज बिल्ड लक्ष्यों को कैसे निष्पादित करना चाहिए?)

यह लक्ष्य फ़ाइल chromedriver.exe को Content आइटम समूह में CopyToOutputDirectory = PreserveNewest के साथ इंजेक्ट करती है।

मैं एक ऐसी स्थिति का निरीक्षण करता हूं जहां msbuild /t:"Restore;Build" चलाते समय chromedriver.exe नहीं को बिन फ़ोल्डर में कॉपी किया जाता है, लेकिन दो लक्ष्यों को अलग-अलग चलाते समय इसे कॉपी किया जाता है - msbuild /t:Restore; msbuild /t:Build.

क्या कोई समझा सकता है कि यह कैसे होता है?

(मैंने अपनी त्वचा पर अंतर जानने के लिए दिन के एक अच्छे हिस्से को मार डाला, जानना चाहता हूं कि कैसे आया?)

2
mark 8 पद 2018, 02:01

1 उत्तर

सबसे बढ़िया उत्तर

obj\ निर्देशिका में आयातित प्रोजेक्ट फ़ाइलों को पुनर्स्थापित करें।

इसके प्रभावी होने के लिए, प्रोजेक्ट फ़ाइल का पूरी तरह से पुनर्मूल्यांकन करने की आवश्यकता है, जो तब नहीं होता है जब आप एक ही आमंत्रण में पुनर्स्थापना और लक्ष्य बनाते हैं।

उसी कमांड लाइन कॉल में अन्य निर्दिष्ट लक्ष्यों से पहले पुनर्स्थापना चलाने के लिए MSBuild के लिए -restore कमांड लाइन स्विच का उपयोग करें। MSBuild रिस्टोर चलाएगा, अपने XML कैश को खाली करेगा और अनुरोधित बिल्ड को चलाते समय प्रोजेक्ट का फिर से मूल्यांकन करेगा।

3
Martin Ullrich 8 पद 2018, 08:45