CruiseControl.net, msbuild,/p:OutputPath и CCNetArtifactDirectory

Я считаю, что синтаксис предыдущих ответов является избыточным и трудно запоминаемым. Пандас представил метод query() в v0.13, и я предпочитаю его. Для вашего вопроса вы можете сделать df.query('col == val')

Воспроизводится из http://pandas.pydata.org/pandas-docs/version/0.17.0/indexing.html#indexing-query

In [167]: n = 10

In [168]: df = pd.DataFrame(np.random.rand(n, 3), columns=list('abc'))

In [169]: df
Out[169]: 
          a         b         c
0  0.687704  0.582314  0.281645
1  0.250846  0.610021  0.420121
2  0.624328  0.401816  0.932146
3  0.011763  0.022921  0.244186
4  0.590198  0.325680  0.890392
5  0.598892  0.296424  0.007312
6  0.634625  0.803069  0.123872
7  0.924168  0.325076  0.303746
8  0.116822  0.364564  0.454607
9  0.986142  0.751953  0.561512

# pure python
In [170]: df[(df.a < df.b) & (df.b < df.c)]
Out[170]: 
          a         b         c
3  0.011763  0.022921  0.244186
8  0.116822  0.364564  0.454607

# query
In [171]: df.query('(a < b) & (b < c)')
Out[171]: 
          a         b         c
3  0.011763  0.022921  0.244186
8  0.116822  0.364564  0.454607

Вы также можете получить доступ к переменным в среде, добавив @.

exclude = ('red', 'orange')
df.query('color not in @exclude')

15
задан CloudyMarble 7 February 2013 в 11:24
поделиться

3 ответа

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>

Так в вышеупомянутом примере Ваш вывод сборки будет помещен в C:\data\projects\FooSolution[ProjectName]\bin\Debug. Если Вы хотите произвести к другому местоположению, можно хотеть посмотреть на тега в CCNET.

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

Это позволит Вам публиковать свой вывод к другому местоположению.

6
ответ дан 1 December 2019 в 04:41
поделиться

Можно использовать переменную каталога артефакта в самом сценарии MSBuild. Вот пример того, как я выполняю FxCop прямо сейчас из моего сценария MSBuild CC.Net (этот сценарий - то, на что указывает CC.Net - существует также цель "Сборки" в сценарии, который включает задачу MSBuild против SLN, чтобы сделать фактическую компиляцию):

<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"
/>
5
ответ дан 1 December 2019 в 04:41
поделиться

Такие параметры, как 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>
2
ответ дан 1 December 2019 в 04:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: