none
1秒ごとに自動でソースコードをセーブするには? RRS feed

  • 質問

  • VisualStudioはコンパイル前に自動でコードを保存してくれますが、コンパイルする時では遅すぎます。

    コードを入力している最中に、キーをタイプしたら1秒後にはもう保存して欲しい。

    信じられないことにどこを探してもそのようなオプションが存在しないように見えます。

    ツールーオプションー環境ー自動バックアップは求めている動作ではありません。

    バックアップファイルではなく、変更をファイルにリアルタイムにセーブして欲しいのです。

    どうしたらこのような機能を実現できますか?

     

     

     

     

     

    2012年1月15日 6:04

回答

  • VSマクロで保存したいように適当に組めばいいです

    Private isStarted As Boolean
    
    Public Sub StartAutoSave()
        If (Not isStarted) Then
            Dim callback = New System.Threading.TimerCallback(AddressOf AutoSaveX)
            Dim timer = New System.Threading.Timer(callback, Nothing, 1000, 1000)
            isStarted = True
        End If
    End Sub
    
    Private Sub AutoSaveX(ByVal param As Object)
        For Each doc As EnvDTE.Document In DTE.Documents
            If (Not doc.Saved) Then
                doc.Save()
            End If
        Next
    End Sub
    
    #Expressエディションなどでマクロが使えないという苦情は受け付けません


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
    • 回答の候補に設定 山本春海 2012年1月25日 8:50
    • 回答としてマーク 山本春海 2012年1月31日 8:09
    2012年1月15日 7:27
  • Deleted
    • 回答としてマーク 山本春海 2012年1月31日 8:10
    2012年1月15日 8:05
  • そんな努力をするよりもっと安定した、信頼できる環境で開発をされたらどうでしょうか。
    # 例えばOS再インストールするとか。 
    • 回答としてマーク 山本春海 2012年1月31日 8:10
    2012年1月15日 9:12
  • VisualStudioはコンパイル前に自動でコードを保存してくれますが、コンパイルする時では遅すぎます。
    コードを入力している最中に、キーをタイプしたら1秒後にはもう保存して欲しい。
    信じられないことにどこを探してもそのようなオプションが存在しないように見えます。

    なぜ、その機能が必要なのか、理由を共有してみませんか?

    その理由に納得する人が多ければ、載せるように働きかければよいでしょう。
    逆に、その理由によっては、別のソリューション(解決策)が提案される可能性があります。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク 山本春海 2012年1月31日 8:10
    2012年1月15日 10:06
    モデレータ
  • 他の方も書かれていますが、1秒毎に自動保存が必要な状況と言うのが想像できません。

    よほど不安定な環境で開発をしていて、いつ開発環境が動かなくなるかわからないというような状態で
    作業を行なっているくらいしか思いつかないので状況としてはそういう状況の方が特殊で
    一般的にそのような必要性を感じている人は殆どいないのではと思います。

    ファイルの保存と言う動作はかなり重たい処理なのでコードを書いている最中に自動保存が動いて
    コードを書く手が止まる方を嫌がるケースの方が多いような気がします。
    なぜ、そこまでリアルタイム性を要求するような状況になっているのかを説明した方が話が通りやすそうです。


    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    • 回答としてマーク 山本春海 2012年1月31日 8:10
    2012年1月16日 9:48

すべての返信

  • VSマクロで保存したいように適当に組めばいいです

    Private isStarted As Boolean
    
    Public Sub StartAutoSave()
        If (Not isStarted) Then
            Dim callback = New System.Threading.TimerCallback(AddressOf AutoSaveX)
            Dim timer = New System.Threading.Timer(callback, Nothing, 1000, 1000)
            isStarted = True
        End If
    End Sub
    
    Private Sub AutoSaveX(ByVal param As Object)
        For Each doc As EnvDTE.Document In DTE.Documents
            If (Not doc.Saved) Then
                doc.Save()
            End If
        Next
    End Sub
    
    #Expressエディションなどでマクロが使えないという苦情は受け付けません


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)
    • 回答の候補に設定 山本春海 2012年1月25日 8:50
    • 回答としてマーク 山本春海 2012年1月31日 8:09
    2012年1月15日 7:27
  • Deleted
    • 回答としてマーク 山本春海 2012年1月31日 8:10
    2012年1月15日 8:05
  • そんな努力をするよりもっと安定した、信頼できる環境で開発をされたらどうでしょうか。
    # 例えばOS再インストールするとか。 
    • 回答としてマーク 山本春海 2012年1月31日 8:10
    2012年1月15日 9:12
  • VisualStudioはコンパイル前に自動でコードを保存してくれますが、コンパイルする時では遅すぎます。
    コードを入力している最中に、キーをタイプしたら1秒後にはもう保存して欲しい。
    信じられないことにどこを探してもそのようなオプションが存在しないように見えます。

    なぜ、その機能が必要なのか、理由を共有してみませんか?

    その理由に納得する人が多ければ、載せるように働きかければよいでしょう。
    逆に、その理由によっては、別のソリューション(解決策)が提案される可能性があります。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク 山本春海 2012年1月31日 8:10
    2012年1月15日 10:06
    モデレータ
  • 他の方も書かれていますが、1秒毎に自動保存が必要な状況と言うのが想像できません。

    よほど不安定な環境で開発をしていて、いつ開発環境が動かなくなるかわからないというような状態で
    作業を行なっているくらいしか思いつかないので状況としてはそういう状況の方が特殊で
    一般的にそのような必要性を感じている人は殆どいないのではと思います。

    ファイルの保存と言う動作はかなり重たい処理なのでコードを書いている最中に自動保存が動いて
    コードを書く手が止まる方を嫌がるケースの方が多いような気がします。
    なぜ、そこまでリアルタイム性を要求するような状況になっているのかを説明した方が話が通りやすそうです。


    解決した時は、参考になったレスポンスの所にある[回答としてマーク]ボタンをクリックしてスレッドを締めましょう。
    • 回答としてマーク 山本春海 2012年1月31日 8:10
    2012年1月16日 9:48
  • こんにちは、tueda さん。

    MSDN フォーラムのご利用ありがとうございます。オペレーターの山本です。
    しばらく経ちましたが、みなさんからのアドバイスは確認されましたか?
    アドバイスいただいているように、理由などの追加情報を投稿いただくと他にも情報を得られるかもしれません。

    今後とも、MSDN フォーラムをよろしくお願いいたします。
                                                                   
    日本マイクロソフト株式会社 フォーラム オペレーター 山本 春海

    2012年1月26日 9:17