IDEでバックグラウンドのコンパイル/ビルドが行われないのはなぜですか?


13

今日、私はかなり複雑なコンピューターで開発しています。複数のコア、SSDドライブなどがあります。それでも、私がコンピューターをプログラミングしているほとんどの時間は喜んで何もしていません。せいぜいやや複雑なプロジェクトをコンパイルして実行/デプロイする必要がある場合でも、数秒かかります。どうして?私たちは「インスタントエイジ」の時代にどんどん住んでいるのに、どうしてVisual StudioでF5キーを押して、すぐにアプリケーションを起動/展開できないのでしょうか。

数秒はそれほど悪くないように聞こえるかもしれませんが、それでも認知的な摩擦と時間が加算され、率直に言ってプログラミングが楽しくなりません。それでは、どのようにコンパイルを瞬時に行うことができますか?

さて、人々は異なるアセンブリのファイルを編集する傾向があります。VisualStudio / IDEが適切な場合はいつでも私が修正したすべてのもののコンパイル/ビルドを絶えず行っていたらどうでしょうか。本当に高度なものにしたい場合は、クラスごとのコンパイルを行うことができます。コンパイルは動作しないかもしれませんが、何もせずに何もしません(エラーウィンドウにエラーメッセージを追加する場合を除く)。

確かに今日のコンピューターはこのタスクに1つまたは2つのコアを割り当て、誰かがそれをうんざりさせたら、オプションで無効にすることができます。シームレスで実用的であるためには、おそらく1,000の技術的な問題と、いくつかの派手なシャドウコピーを解決する必要があることを知っていますが、プログラミングがよりシームレスになることは確かです。

このシナリオが不可能な実用的な理由はありますか?継続的にバイナリを作成することによる損耗は多すぎるでしょうか?展開/実行するまでアセンブリをメモリに保持できませんでしたか?


Visual Studioはvb.netに対して、少なくとも部分的にはc#に対して実行します。これは、実際にはc#/ vb.netの永遠の議論のポイントです。codinghorror.com
Matthieu

ええ、私はその記事を見ました。これは、主にエラーメッセージの解析/コンパイルのコンテキストであり、インスタントデプロイメント/実行中のアプリケーションではあまりありません
-Homde

@ konrad、VB.NETはバックグラウンドコンパイルも提供しませんか?
Pacerier

回答:


6

Eclipseは自動コンパイルとビルドを行います。あなたは彼らがそれをどうするかをチェックしたいかもしれません。オープンソースです。ファイルを保存するたびにコンパイルされると思います。


1
やったー!
MattC

それは素晴らしい、それを使用している人はいますか?違いはありますか?
オムデ

2
それは大きな違いをもたらします。また、プログラミングをすばやく行うのに非常に便利です-その場で書く呼び出しによってメソッド宣言を生成できます。Javaアプリケーションの開発から、Java、ffmpeg開発、および拡張に基づくWeb 2.0アプリケーションまで(Cで)長年使用しましたおよびC ++)、PERL、Python。考えられるほぼすべての言語のプラグインがあります。
ブライアン

6

ファイルをコンパイルできる状態にする前に、キーストロークの回数を考えたことはありますか?真剣に、クラスf、クラスfo、クラスfooなどをコンパイルしようとするとどうなるかを見てください。タイポを修正するのではなく、入力を終了させるのをIDEにいつ伝えたいですか。最初から何かを作成する際に、これをどれだけよく考えたのか疑問に思います。それは、これが非常に痛いのを見ることができる場所だからです。


私が実際に編集しているファイル/クラスをコンパイルしているという提案はありません。しかし、私が編集した他のアセンブリは公平なゲームである必要があり、部分的なコンパイルを実行できる場合は同じアセンブリ内の他のクラスも同様です(おそらく複雑なタスクです)。おそらく依存関係の解決にはいくつかの問題がありますが、克服できないはずではありません。最悪の場合に加えて、通常のようにコンパイルすることです。コンパイルスレッドがインターフェイスまたはコンピューターを過度に
動かさ

2

Visual Studioは自動コンパイル機能を提供していません。しかし、はい、EclipseのようないくつかのIDEは、ファイルを保存するときに自動コンパイルを行います。Visual Studioの将来のバージョンでMicrosoftがこの機能を追加することを願っています。


1

あなたが警告を出す最新のIDEを使用している場合、バックグラウンドコンパイルを実行しています。それは、それらのアイテムがそのままコンパイルされないことをどのように知るかです。


7
バックグラウンド解析を行っています。これは、完全なコンパイルとは異なります。
メイソンウィーラー

はい、もちろんですが、彼らは短いステップを停止するようです。とにかく何らかのコンパイル/解析が行われた場合、ビルド/実行プロセスで全体を使用してみませんか?
オムデ

1
@MKO:私の知る限り、多くのIDEでは、ソースが生成されてから変更されていない場合、(コンパイラーの再解析の代わりに)解析ツリービルドプロセスで使用されます。
アノン。

1

プロジェクトはいつでもプリコンパイルされたコンポーネントに分割できます。コンピューターをコマンドでコンパイルすることを好みます。ある男性の認知摩擦は、別の男性が熟考してコーヒーを飲む時間です。


1

Visual Studioを使用してC#またはVBで開発する場合、Reshaperがそれを実行できます。 http://www.jetbrains.com/resharper/ 手動で再コンパイルしなくても、インターフェイスを変更するとコードが破損する場所をすべて知っているので、時間を大幅に節約できます。

(また、Resharperは、他の多くの理由からくそだと思います。)


reSharperがコンパイルエラーについて通知することを意味すると思います。私の知る限り、実際にバイナリを生成することはありません。
テレム

1

わからない、何かをコンパイルしなければならないのが好きだ。私のコードを振り回して、コンピューターに「ハァッ!これを拒否するのを見てみましょう!

それからコンパイルエラーが出て、それを修正してから、「ハァ!これを拒否してみましょう!

その後、コンパイルしてコーヒーを飲みます。気持ちいい。:)


気分が良い.....一日に6500回それをしなければならないときを除いて。
Pacerier

0

注:これは、Netbeans(Java)での私の経験から取られているため、Visual Studioには適用されない場合があります

TMKこれは、ファイルの編集を開始するときにバックグラウンドでいくらか行われます。IDEがすべてのコンパイルエラーとその検出方法を認識していない限り、バックグラウンドでクラスをコンパイルし、エラーを報告すると想定します。

問題は、プロジェクト全体をビルドするときです。時々、この「ライブ」コンパイルですべてのエラーをキャッチできるわけではないので、すべてを再構築するだけです。また、ライブコンパイルされたクラスには、IDEに必要な追加情報が含まれている可能性がありますが、バイナリで配布することはできません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.