2012-01-08 10 views
5

मैं रिलीज और डीबग दोनों को नेट v4.0 पर बनाने की कोशिश कर रहा हूं, जहां मेरे पास समाधान फ़ाइल की बजाय एमएसबिल्ड परियोजना फ़ाइल है। मैं एक ही बिल्ड प्रोजेक्ट फ़ाइल का उपयोग करना चाहता हूं, लेकिन "डीबग" और "रिलीज" के बीच कॉन्फ़िगरेशन प्रॉपर्टी स्विचिंग को ओवरराइड करें।कॉन्फ़िगरेशन प्रॉपर्टी को ओवरराइड कैसे करें?

जब मैं के रूप में

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj 
/target:rebuild "/property:Configuration=Debug" /verbosity:Diagnostic 

इस प्रकार निष्पादित मैं निम्नलिखित त्रुटि मिलती है

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(483,9): 
error : The OutputPath property is not set for project 
'buildinv.proj'. Please check to make sure that you have specified a 
valid combination of Configuration and Platform for this project. 
Configuration='Debug' Platform=''. 

मैं देख सकता हूँ कि उस त्रुटि _CheckForInvalidConfigurationAndPlatform में हो रहा है।

अगर मैं एक OutputPath संपत्ति पारित यह तथापि काम करेंगे

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj 
/target:rebuild "/property:Configuration=Debug" "/property:OutputPath=." 

यह एक ज्ञात बग है? जहां मुझे कॉन्फ़िगरेशन प्रॉपर्टी को ओवरराइड करने की आवश्यकता है, मुझे आउटपुटपाथ प्रॉपर्टी को ओवरराइड करने के लिए मजबूर होना होगा, भले ही मैं नहीं चाहता हूं।

अग्रिम धन्यवाद।

+0

आप इस के चारों ओर एक रास्ता खोजने के लिए प्रबंधन किया था? मैं एक ही समस्या के साथ बैठा हूं, जब मेरा समाधान 1 9 प्रोजेक्ट फाइलों को कॉल करता है, और वे सभी डीबग किसी भी डीपीयूयू को डिफ़ॉल्ट करते हैं, भले ही मैं इसे समाधान –

उत्तर

4

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

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
    <OutputPath>bin\Debug\</OutputPath> 
</PropertyGroup> 
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> 
    <OutputPath>bin\Release\</OutputPath> 
</PropertyGroup> 

जोड़ें प्लेटफार्म संपत्ति:

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj /target:rebuild "/property:Configuration=Debug;Platform=AnyCPU" /verbosity:Diagnostic 
+0

पर रिलीज़ करने के लिए सेट कर रहा हूं, मैंने पहले ही कोशिश की है लेकिन फिर भी वही त्रुटि मिलती है। कॉन्फ़िगरेशन या प्लेटफॉर्म को पारित करके मैं इसे वीएस – pmcgrath

+0

के साथ बनाई गई परियोजनाओं के लिए क्रमशः डीबग और एएनसीपीयू पर डिफ़ॉल्ट रूप से डिफ़ॉल्ट करता हूं, वह कमांड लाइन से एमएसबिल्ड का उपयोग कर रहा है। वह एक टेक्स्ट एडिटर के तहत प्रोजेक्ट फाइलों को संशोधित नहीं कर रहा है। – jww

1

अपनी परियोजना फाइल करने के लिए निम्न में से एक जोड़े। त्रुटि का अर्थ है आउटपुटपैथ पर्यावरण परिवर्तक इसका मूल्य नहीं प्राप्त कर रहा है। प्रॉपर्टी ग्रुप से "हालत =" को हटाकर, आउटपुटपाथ हमेशा डिफ़ॉल्ट रूप से किसी भी प्लेटफ़ॉर्म या कॉन्फ़िगरेशन के लिए सेट किया जाएगा।

<PropertyGroup> 
    <OutputPath>bin\Debug\</OutputPath> 
</PropertyGroup> 

<PropertyGroup> 
    <OutputPath>$(DefaultOutputDirectory)</OutputPath> 
</PropertyGroup> 
2

आप परियोजना फ़ाइल को संशोधित करने के लिए नहीं करना चाहते हैं, तो आप भी सिर्फ निर्माण के लिए OutputPath अपने आदेश में निर्दिष्ट कर सकते हैं:

c:\windows\microsoft.net\framework\v4.0.30319\msbuild.exe buildinv.proj /target:rebuild "/property:Configuration=Debug;OutputPath=C:\MyOutputPath" /verbosity:Diagnostic 
संबंधित मुद्दे