2

Visual Studioにファイルを保存するたびに自動的にrakeスクリプトを実行するにはどうすればよいですか?コマンドをラップするバッチファイルを作成できます。そして、でトリガーしたいと思いCTRL + Sます。ただし、VisualStudio2012にはマクロがありません。

JP Boodhooは、彼のスクリーンキャストの多くでそれを行っていますが、実装を共有していません。


参考までに、私のようにrakefile見えます

require 'albacore'

desc 'Build Solution'
msbuild :Build do |msb| 
  msb.properties :configuration => :Release 
  msb.targets :Clean, :Build 
  msb.solution = 'ProjoBot.sln' 
end 

desc 'Run Unit Tests' 
mspec :Test do |mspec| 
  mspec.command = 'Lib/Tools/MSpec/mspec-clr4.exe' 
  mspec.assemblies 'Src/Tests/ProjoBot.UnitSpecifications/bin/Release/ProjoBot.UnitSpecifications.dll'
end 

task :default => [:Build, :Test]
4

2 に答える 2

1

外部ツールを使用して、デフォルトのRakeタスクを実行するバッチファイルを実行しました。

@ECHO OFF
rake

ツールにショートカットキーを割り当てたCTRL + Sので、保存すると、レーキタスクがトリガーされます。これが同じことをしようとしている人に役立つことを願っています。

于 2013-01-24T14:13:57.907 に答える
1

VisualStudioを認識しないコマンドラインと統合するオプションがいくつかある場合があります。

ルビー/ガードウェイ

私は昨夜ガードの宝石で遊んでいました。基本的に、guardとGuardrakeプラグインをインストールします。

gem install guard
gem install guard-rake

GuardfileプレーンなRakeタスクを含むGuardの「テンプレート」を作成できます。

guard init rake

たとえば.cs、ディレクトリ内のファイルを監視するように編集できます。source(と

guard 'rake', :task => 'default', :run_on_start => false do
  watch(%r{^source/.+\.cs$})
end

次に、Guardを開始します

guard

-iこの「インタラクティブ」モードをオフにするためにを使用する必要がある場合があります。これにより、Windowsでエラーが発生する可能性があります。

guard -i

Guardは小さなローカルサーバーのように動作し、ログを表示します

12:07:08 - INFO - Guard uses TerminalTitle to send notifications.
12:07:08 - INFO - Starting guard-rake default
12:07:08 - INFO - Guard is now watching at 'D:/temp'
[1] guard(main)>

また、ファイルを強制的に変更すると(touchテストディレクトリに設定した偽のファイルに移動します)、rakeタスクの出力が得られます。

12:07:08 - INFO - Guard uses TerminalTitle to send notifications.
12:07:08 - INFO - Starting guard-rake default
12:07:08 - INFO - Guard is now watching at 'D:/temp'
12:07:54 - INFO - running default
building!...
[1] guard(main)>

PowerShellの方法

ファイルシステムのポーリングによってトリガーされたアクションをまとめるような派手なものはありませんが、それはあなたが自分で作成できないという意味ではありません!.\guard.ps1ソリューションルートにあるファイルを作成しました。がありFileSystemWatcher、ループ内の変更を待ちます。

$here = Split-Path $MyInvocation.MyCommand.Definition

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "$here\source"
$watcher.IncludeSubdirectories = $true

while($true) {
  # timeout here lets the console process kill commands and such
  $result = $watcher.WaitForChanged('All', 3000)

  if($result.TimedOut) {
    continue
  }

  # this is where you'd put your rake command
  Write-Host "$($result.ChangeType):: $($result.Name)"

  # and a delay here is good for the CPU :)
  Start-Sleep -Seconds 3
}

touchNew-Item <name> -Type File)ファイルを作成するとき、またはファイルを作成するときに、それが機能して印刷されていることを確認できます。しかし、非常に簡単にレーキを実行することもできます

rake

PowerShellは先に進み、それをネイティブコマンドとして実行します。あなたは空想を得て、このスクリプトをGuardのように見せたり感じさせたりすることができます(わかりました、それほど多くはありませんが、少しです!)

param(
  [string] $path = (Split-Path $MyInvocation.MyCommand.Definition),
  [string] $task = 'default'
)

$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $path
$watcher.IncludeSubdirectories = $true

while($true) {
  $result = $watcher.WaitForChanged('All', 3000)

  if($result.TimedOut) {
    continue
  }

  rake $task

  Start-Sleep -Seconds 3
}

そして、あなたはそれをこのように実行するでしょう

.\guard.ps1 -Path "$pwd\source" -Task 'build'
于 2013-02-12T17:23:02.310 に答える