CruiseControl.net, MSBuild, / p: OutputPath और CCNetArtifactDirectory

वोट
15

मैं इस समय सेटअप CruiseControl.net कोशिश कर रहा हूँ। अब तक यह अच्छा काम करता है, लेकिन मैं MSBuild कार्य के साथ एक समस्या है।

के अनुसार प्रलेखन , यह MSBuild को CCNetArtifactDirectory गुजरता है। लेकिन मैं इसे कैसे प्रयोग करते हैं?

मैं इस की कोशिश की:

<buildArgs>
   /noconsolelogger /p:OutputPath=$(CCNetArtifactDirectory)\test
</buildArgs>

लेकिन वह काम नहीं करता। वास्तव में, यह इस त्रुटि के साथ सेवा को मारता है:

ThoughtWorks.CruiseControl.Core.Config.Preprocessor.EvaluationException: अज्ञात प्रतीक के लिए संदर्भ CCNetArtifactDirectory

प्रलेखन बल्कि विरल है, और अंड मुख्य रूप से .sln परियोजना फ़ाइल है, जो कि मैं क्या मैन्युअल रूप से इस परियोजना के बाद निर्माण करने में सक्षम होने के लिए बचना चाहते हैं संशोधित प्रस्तावों गूगल - मैं वास्तव में पसंद करेंगे /p:OutputPath

03/08/2008 को 22:25
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
6

CCNetArtifactDirectory डिफ़ॉल्ट रूप से MSBuild को पारित कर दिया है, तो आप इसके बारे में चिंता करने की जरूरत नहीं है। MSBuild "बिन स्थान" कार्यशील निर्देशिका आपके द्वारा उल्लिखित के लिए प्रासंगिक में निर्माण उत्पादन स्थापित करेंगे।

<executable>c:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe</executable>
<workingDirectory>C:\data\projects\FooSolution\</workingDirectory>
<projectFile>FooSolution.sln</projectFile>
<buildArgs>/noconsolelogger /p:Configuration=Debug </buildArgs>

इसलिए उपरोक्त उदाहरण में अपने निर्माण उत्पादन सी ​​में रखा जाएगा: \ डेटा \ परियोजनाओं \ FooSolution [ProjectName] \ बिन \ डिबग। आप किसी दूसरे स्थान पर उत्पादन करना चाहते हैं तो आप CCNET में टैग की को देखने के लिए चाहते हो सकता है।

<publishers>
  <xmllogger />
  <buildpublisher>
    <sourceDir>C:\data\projects\FooSolution\FooProject\bin\Debug</sourceDir>
    <publishDir>C:\published\FooSolution\</publishDir>
    <useLabelSubDirectory>false</useLabelSubDirectory>
  </buildpublisher>
</publishers>

यह आपको एक अलग स्थान पर अपने उत्पादन को प्रकाशित करने की अनुमति देगा।

04/08/2008 को 05:45
का स्रोत उपयोगकर्ता

वोट
5

आप MSBuild स्क्रिप्ट के अंदर ही विरूपण साक्ष्य निर्देशिका चर का उपयोग कर सकते हैं। वहाँ भी एक "बिल्ड" स्क्रिप्ट है कि करने के लिए SLN के खिलाफ एक MSBuild कार्य भी शामिल है में लक्ष्य - यहाँ है कैसे मैं अपने CC.Net MSBuild स्क्रिप्ट से FxCop चल रहा हूँ अभी का एक उदाहरण है (इस स्क्रिप्ट क्या करने के लिए अंक cc.net है वास्तविक संकलन करते हैं):

<Exec
  Command='FxCopCmd.exe /project:"$(MSBuildProjectDirectory)\FXCopRules.FxCop" /out:"$(CCNetArtifactDirectory)\ProjectName.FxCop.xml"'
  WorkingDirectory="C:\Program Files\Microsoft FxCop 1.35"
  ContinueOnError="true"
  IgnoreExitCode="true"
/>
04/08/2008 को 15:40
का स्रोत उपयोगकर्ता

वोट
2

पैरामीटर की तरह CCNetArtifactDirectoryवातावरण चर का उपयोग कर बाहरी प्रोग्राम करने के लिए पारित कर रहे हैं। वे बाहरी कार्यक्रम में उपलब्ध हैं, लेकिन वे अंदर नहीं हैं CCNETविन्यास। इस बार भ्रम होता है।

आप एक पूर्वप्रक्रमक निरंतर बजाय का उपयोग कर सकते हैं:

<cb:define project.artifactDirectory="C:\foo">
<project>
  <!-- [...] -->
  <artifactDirectory>$(project.artifactDirectory)</artifactDirectory>
  <!-- [...] -->
  <tasks>
    <!-- [...] -->
    <msbuild>
      <!-- [...] -->
      <buildArgs>/noconsolelogger /p:OutputPath=$(project.artifactDirectory)\test</buildArgs>
      <!-- [...] -->
    </msbuild>
    <!-- [...] -->
  </tasks>
  <!-- [...] -->
</project>
26/02/2010 को 18:29
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more