पैकिंग NuGet प्रोजेक्ट्स को रिलीज़ मोड में संकलित किया गया?


109

क्या रिलीज़ मोड में संकलित कोड का उपयोग करके NuGet पैकेज बनाने का कोई तरीका है? या क्या कोई कारण है जिसे मुझे केवल डिबग मोड में संकलित (इस मामले में स्थानीय रूप से उपलब्ध) प्रकाशित करना चाहिए?

हर बार जब मैं nuget packअपने प्रोजेक्ट डायरेक्टरी से कॉल करता हूं , जहां मेरे पास नीचे nuspec फ़ाइल होती है, तो कोड पर मैंने केवल रिलीज़ मोड में संकलित किया है, यह डीबग को डीबग फ़ोल्डर में नहीं ढूंढने के बारे में शिकायत करता है ( "\bin\Debug\SomeProject.dll")। अगर मैं इसे डिबग मोड में संकलित करता हूं, तो वे फाइलें वहां हैं और यह उन्हें पैक करना चाहिए जैसा कि यह चाहिए।

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
    <metadata>
        <id>$id$</id>
        <version>$version$</version>
        <authors>$author$</authors>
        <owners>$author$</owners>
        <iconUrl>http://somewhere/project.png</iconUrl>
        <requireLicenseAcceptance>false</requireLicenseAcceptance>
        <description>$description$</description>
    </metadata>
</package>

जवाबों:


207

आप इसे इस तरह से हल कर सकते हैं: NuGet.exe pack Foo.csproj -Prop Configuration=Release( संदर्भ )।


10
कोई भी व्यक्ति जो लिंक से छोटी कहानी चाहता है (अच्छा पढ़ा, हालांकि), v1.3 से v1.4 में एक बदलाव था जो रिलीज के डिफ़ॉल्ट से एक प्रोजेक्ट सेटिंग से डिफ़ॉल्ट रूप से चला जाता है जिसे केवल संशोधित किया जा सकता है परियोजना फ़ाइल सीधे (कोई वीएस जीयूआई विकल्प नहीं)। भविष्य की सभी nuget packकॉलों के लिए कमांड-लाइन प्रॉपर्टी ट्विक से बचने के लिए , प्रोजेक्ट फाइल एक्सएमएल को अपने पसंदीदा टेक्स्ट एडिटर में एडिट करें।
22

4
वहाँ एक रिलीज और डिबग संस्करण दोनों को एक पैकेज में पैकेज करने का एक तरीका है और फिर क्या मेरा प्रोजेक्ट डिबग एक बनाम रिलीज़ एक के उपयोग पर निर्भर करता है यदि मैं डीबग बनाम रिलीज़ समाधान कॉन्फ़िगरेशन में हूं?
जद

2
यदि आप अपने पैकेज के लिए बस डिबग प्रतीक चाहते हैं, तो आप अपनी पीडीबी फ़ाइलों को * .nuspec (जैसे <file src="bin\Release\*.pdb" target="lib\net40\" />) में शामिल कर सकते हैं या अपने DLL पैकेज के साथ एक प्रतीक पैकेज प्रकाशित कर सकते हैं।
पितृ पक्ष

1
@Giorgi लिंक समाप्त हो गया
एल

1
@JD मैं डिबग और रिलीज़ दोनों को भी पैकेज करना चाहता हूं और मैंने यह पाया है: stackoverflow.com/questions/37673692/…
पीटर-यू

16

यदि आप पोस्ट-बिल्ड ईवेंट का उपयोग कर रहे हैं और आप एक पैकेज बनाना चाहते हैं, तो डिबग या रिलीज़ कॉन्फ़िगरेशन का उपयोग करके आप पोस्ट-बिल्ड ईवेंट कमांडलाइन को इस तरह सेट कर सकते हैं:

"<path to nuget tools>\NuGet.exe" pack "$(ProjectPath)" -Prop Configuration=$(ConfigurationName)

10

जब आप चलाते हैं nuget pack, तो NuGet स्वचालित रूप से रिलीज़ मोड का उपयोग करें :

  1. .csprojएक पाठ संपादक में अपनी फ़ाइल खोलें ।
  2. निम्नलिखित लाइन खोजें:

    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    
  3. इस पंक्ति में, के Debugसाथ बदलें Release
  4. परिवर्तनों को सुरक्षित करें।

0

यहाँ उत्तर अच्छे हैं, लेकिन मुझे .NET मानक परियोजना के लिए इसके साथ बहुत सारी समस्याएं हो रही थीं। मेरे पास एक प्रोजेक्ट था जो केवल रिलीज़ बायनेरिज़ को प्रकाशित करने वाला था, लेकिन यह मेरे डिफ़ॉल्ट बिल्ड आउटपुट पथ का सम्मान नहीं कर रहा था।

मैंने इसे अपने CSProj में जोड़ा, जिसने मुझे यहाँ स्वीकृत उत्तर का उपयोग करने में सक्षम बनाया ।

<PropertyGroup Condition="'$(Configuration)' == 'Release'">
      <OutputPath>$(SolutionDir)bin\$(PlatformTarget)\Release</OutputPath>
</PropertyGroup>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.