NAnt и двойная сборка платформы - лучший способ основываться на Windows AND Mono / Linux

Основываясь на том, что Стэн и Янн-ч сделали, но этот по умолчанию используется для первой кнопки. Красота этого общего подхода заключается в том, что он выбирает как щелчок, так и клавишу ввода (даже если фокус не был на кнопке. Если вам нужно разрешить ввод в форму, просто ответьте на это, когда кнопка сфокусирована ( то есть ответ Стэна). В моем случае я хотел разрешить ввод, чтобы отправить форму, даже если текущий фокус пользователя был в текстовом поле.

Я также использовал атрибут 'name', а не 'id ', но это тот же подход.

var pressedButtonName =
     typeof $(":input[type=submit]:focus")[0] === "undefined" ?
     $(":input[type=submit]:first")[0].name :
     $(":input[type=submit]:focus")[0].name;
6
задан Frep D-Oronge 28 August 2008 в 11:35
поделиться

3 ответа

Это не должно быть особенно трудным осуществлением. Мы делаем некоторый довольно подобный материал на одном из моих проектов, так как половина из него работает на Java с помощью Муравья для выполнения соответствующих целей, и другой половиной является.Net (C#) для UI. На проектах работают машины окон для разработки, но серверы (Java) запускают Linux, но в среде UAT (Linux) мы должны выполнить nunits (интеграционные тесты). Реальный прием (не действительно трудный прием) позади этого имеет файл типа "build" NAnt, который может работать в обеих средах, который, кажется, то же самое, которое Вы пытаетесь сделать здесь.

Конечно, Вы понимаете, что необходимо будет установить NAnt на Моно сначала:

$ export MONO_NO_UNLOAD=1
$ make clean
$ make
$ mono bin/NAnt.exe clean build

И затем Ваш файл типа "build" должен быть записан таким способом, которым он разделяет проблемы. Некоторые части файла типа "build", записанного для окон, не будут работать в Linux, например. Таким образом, действительно просто необходимо разделить его ITO определенные цели в файле типа "build". После этого существует много способов, которыми можно выполнить определенные цели из командной строки. Пример мог бы быть похожим на это:

<project name="DualBuild">
  <property name="windowsDotNetPath" value="C:\WINDOWS\Microsoft.NET\Framework\v3.5" />
  <property name="windowsSolutionPath" value="D:\WorkingDirectory\branches\1234\source" />
  <property name="windowsNUnitPath" value="C:\Program Files\NUnit-Net-2.0 2.2.8\bin" />
  <property name="monoPath" value="You get the idea..." />

  <target name="BuildAndTestOnWindows" depends="WinUpdateRevision, WinBuild, WinTest" />
  <target name="BuildAndTestOnLinux" depends="MonoUpdateRevision, MonoBuild, MonoTest" />

  <target name="WinUpdateRevision">
    <delete file="${windowsSolutionPath}\Properties\AssemblyInfo.cs" />
    <exec program="subwcrev.exe" basedir="C:\Program Files\TortoiseSVN\bin\"
          workingdir="${windowsSolutionPath}\Properties"
          commandline="${windowsSolutionPath} .\AssemblyInfoTemplate.cs
                       .\AssemblyInfo.cs" />
    <delete file="${windowsSolutionPath}\Properties\AssemblyInfo.cs" />
    <exec program="subwcrev.exe" basedir="C:\Program Files\TortoiseSVN\bin\"
          workingdir="${windowsSolutionPath}\Properties"
          commandline="${windowsSolutionPath} .\AssemblyInfoTemplate.cs 
                       .\AssemblyInfo.cs" />
  </target>

  <target name="WinBuild">
    <exec program="msbuild.exe"
          basedir="${windowsDotNetPath}"
          workingdir="${windowsSolutionPath}"
          commandline="MySolution.sln /logger:ThoughtWorks.CruiseControl.MsBuild.XmlLogger,
                       ThoughtWorks.CruiseControl.MsBuild.dll;msbuild-output.xml 
                       /nologo /verbosity:normal /noconsolelogger 
                       /p:Configuration=Debug /target:Rebuild" />
  </target>

  <target name="WinTest">
    <exec program="NCover.Console.exe"
          basedir="C:\Program Files\NCover"
          workingdir="${windowsSolutionPath}">
      <arg value="//x &quot;ClientCoverage.xml&quot;" />
      <arg value="&quot;C:\Program Files\NUnit-Net-2.0 2.2.8\bin
                       \nunit-console.exe&quot; 
                       MySolution.nunit /xml=nunit-output.xml /nologo" />
    </exec>
  </target>

  <target name="MonoUpdateRevision">
    You get the idea...
  </target>


  <target name="MonoBuild">
    You get the idea...
  </target>

  <target name="MonoTest">
    You get the idea...
  </target>

</project>

Для краткости я пропустил обе стороны. Аккуратная вещь - Вы, может использовать NUnit, а также NAnt на обеих средах, и это делает вещи действительно легкими с точки зрения зависимости. И для каждого исполняемого файла можно выгрузить для других, которые работают в той среде, например (xBuild для MSBuild и svn для черепахи и т.д.)

Для большего количества справки на Nunit и т.д. на Моно, проверьте это фантастическое сообщение.

Надежда, которая помогает,

Удачи,

Rob G.

8
ответ дан 9 December 2019 в 22:42
поделиться

@Rob G - Эй! Это - мое сообщение!;)

Для некоторых других хороших примеров, убедиться просмотреть исходный код NUnit. Я работаю в тесном сотрудничестве с Charlie каждый раз, когда я могу для проверки его создать и протестировать на Моно. Он пытается работать каждый раз, когда он может также.

2
ответ дан 9 December 2019 в 22:42
поделиться

Стоит отметить что много инструментов как Nant, на котором работают моно 'из поля', т.е.

mono nant.exe

работы

1
ответ дан 9 December 2019 в 22:42
поделиться
Другие вопросы по тегам:

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