問題タブ [pre-compilation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - aspnet_compiler.exe が非常に遅いのはなぜですか (さらに速くすることはできますか)?
ビルド プロセス中にaspnet_compiler.exe
、Web サイトに対して実行して、ASP.NET/MVC のすべての遅延バインディングが実際にビルドされることを確認します (ASP.NET については何も知りませんが、実行時にエラーが見つからないようにするためにこれが必要であると確信しています)。
私たちのサイトはサイズがかなり大きく、数百のページ/ビュー/コントロールなどがあります。ただし、所要時間は 10 ~ 15 分の範囲で長すぎるようです (参考までに、これは約 40 プロジェクトのソリューション全体をコンパイルするのにかかる時間よりも長く、2 つの Web サイト プロジェクトのみをプリコンパイルしています)。
4GB RAM と WD Velociraptor 10,000rpm ハードディスクを搭載した最新のクアッド コア Intel チップで実行しているため、ハードウェアが問題であるとは思えません。奇妙な点の 1 つは、EXE が CPU をあまり使用していないよう (1 ~ 5%) であり、I/O も大量に使用していないように見えることです。
それで...これは既知の問題ですか?なぜそんなに遅いのですか?そして、それをスピードアップする方法はありますか?
注:人々が回答したいくつかのことを明確にするために、私は Visual Studio 内でのコードのコンパイルについて話しているのではありません。既に Web アプリケーション プロジェクトを使用しており、それらのコンパイルの速度は問題ではありません。問題は、これらのプロジェクトが開発ビルド スクリプトの一部として既にコンパイルされた後のサイトの事前コンパイルです(詳細については、この MSDN ページを参照してください)。ファイルをターゲットディレクトリにコピーするのではなく、インプレースで事前コンパイルを実行しています。
asp.net - VS2008 で Web サイトを公開した後、グローバル リソースを解決できない
VS 2008 で Web プロジェクトを実行しています。国際化のために App_GlobalResources フォルダーにいくつかのグローバル リソース ファイル (*.resx) があります。これはすべて、VS からのローカル IIS インストールで魅力的に機能します。
しかし、Web プロジェクトをローカル ファイルシステムや別のサーバーに公開すると、すべてのリソースが見つからなくなります。したがって、プリコンパイルが何らかの形で破損していると思います。コンパイル済みの Web を呼び出すと、キー xyz を持つリソース オブジェクトが見つからないというエラーが表示されますが、以前は見つかっていました。
リソースが* .dllに含まれているかどうかを.NETリフレクターで確認しました。これらの識別子はすべてそこにあります (bin/Web.dll、bin/<culture>/Web.resources.dll)。識別子は次のようにロードされます。
リソース ファイルは MyProject.resx および MyProject.<culture>.resx と呼ばれ、<culture> は特定のカルチャ (つまり、MyProject.de-DE.resx) に対応します。
これを解決する方法はありますか?
どんな助けでも本当に感謝しています。
ありがとう
編集:
App_GlobalResources フォルダーを手動で出力にコピーすると、リソースが正常に読み込まれる場合があります。ですから、このプリコンパイルは一体何なのか、本当に気になります。
私はまだ問題を「正しい方法」で解決することに興味があります。
php - Ruby、PHP、または Perl は、Python のようなコードのコンパイル済みファイルを作成できますか?
Python の場合、コンパイル済みバージョンの file.pyc を作成できるため、再度解釈することなくプログラムを実行できます。Ruby、PHP、および Perl はコマンドラインで同じことを行うことができますか?
build-process - CMakeによって生成されたMakefile内でコンパイル時にコマンドを実行するにはどうすればよいですか?
いくつかのオプションをコンパイラに渡したいと思います。オプションはコンパイル時に計算する必要があります-'cmake'ではなく、'make'が呼び出されるたびに、execute_processコマンドはそれをカットしません。(そうですか?)
たとえば、次のようなg++コンパイラに日付を渡します。
ただし、DATETIMEはコンパイル時に計算されます。
CMakeでそれを行う方法はありますか?
バウンティ編集:
最小限のハックの解決策が受け入れられます。
'date'だけでなく、コンパイル時に任意のコマンドを実行できるようにしたいことに注意してください。
編集2:
Linux、Windows(VS)、Mingw、Cygwin、OS Xで動作する必要があります。Ruby、Perl、PythonはWindowsでは標準ではないため、想定できません。BOOSTを想定することはできますが、役に立たないと思います。
目標は、cmakeにMakefile(Linuxの場合)を生成させることです。Makefileは、makeが実行されるとジョブを実行します。
カスタム*.hファイルの作成は問題ありませんが、Makefile(または他のOSでは同等のもの)によってmakeによって開始される必要があります。* .hの作成では、cmakeを使用する必要はありません(使用する必要はありません)。
command-line - コマンドラインからPL/SQLビューティファルールを適用できますか?
トピックは自明です。
私の目標は、コードの美化のプロセスを自動化することです。そのため、SQLPlusのようなプログラムは、美化された後にコードをコンパイルします。
preprocessor - デフォルトの Inno Setup 変数に基づいて ISPP 定義を設定する方法は?
私はしようとしていた:
しかし、それは得られます:
コンパイラ エラー
[ISPP] 式が必要ですが、左中かっこ ("{") が見つかりました。
Inno Setup PreProcessor でこれを達成する方法は?
asp.net - Visual Studio の発行オプションは、ASP.net Web アプリケーションの事前コンパイルと見なされますか?
サイトがいつ「コンパイル済み」と見なされるのか理解できません。私が読んだことを理解しているように、Visual Studio 内から Publish または Build Deployment Package オプションを使用するとプリコンパイルされますが、xcopy などを使用するだけではプリコンパイルされません。あれは正しいですか?
asp.net - プリコンパイルされたマスターページを参照するときにタイプ「ASP.xxx」を読み込めませんでした
複数のアプリケーション間で共有するために、いくつかのマスターページ(更新不可)をプリコンパイルしようとしています。私がプリコンパイルしているプロジェクトはWebサイトです。プリコンパイルされたアセンブリを参照するプロジェクトは、Webアプリケーションです。ただし、クライアントからマスターページを参照しようとするたびに、「ロードできませんでした」タイプの「ASP.xxx_master」が表示されます。
プリコンパイルされたマスターページは次のようになります。
私は困惑しています。タイプが解決されない理由がわかりません。誰か提案がありますか?両方のプロジェクト(プリコンパイルされたWebサイトとクライアントWebアプリケーション)は、ASP.NET4.0用に構築されています。
編集:これは、プリコンパイルされたアセンブリの依存関係のリストです。サードパーティの参照はありません。
mscorlib、System、System.Web
UDPATE 1
この問題の簡単な解決策は、マスターページへのフルパスを指定することです。
それを行った後、次のエラーが発生します。
文字列リソースのロード中にエラーが発生しました(FindResourceがエラー-2147023083で失敗しました)。
いくつかの調査を行った後、これはHTMLマークアップがマスターページ内で解析される方法に関連しているようです。まだ完全にはわかりません。私はそれを深く掘り下げていません。全体として、これが絶対に、気が遠くなるほどばかげているので、これがコントロールを共有するための推奨される方法であるとは信じられません。
更新2
私はこれから価値のあるものを作ることができませんでした。ヘッドセクションの「script」タグが嫌いなようですが、理由はわかりません。マスターページは、単一のスクリプトインクルードでうまく機能します。さらに追加を開始するとすぐに、そのエラーが発生し続けます。これで丸一日を無駄にした後、私はマイクロソフトにバグレポートを提出することになりました。誰かがそれをぶつけたいなら、してください。
更新3
MSからの応答がなかった後、これをデバッグするためにさらに数日を費やしました。これが私の発見です。私は当初、CodeDOMプロバイダーによって生成されたコードが、公開時にアセンブリに埋め込まれなかった.NETリソースを探していると思っていました。私は間違っていた。調査の結果、マスターページが特定のサイズに達した後、そのチャンクがアセンブリのPEデータディレクトリセクションのリソーステーブルに保存されているようです。実際、PEリソースビューアで生成されたアセンブリを確認した後、リソーステーブルに含まれているすべてのスクリプトを見つけることでこれを確認できました。さて、これが実際の問題です。何が起こっているのかというと、CodeDOMプロバイダーはWin32 FindResourceへの呼び出しを生成して、リソーステーブルからそのリソースをプルします。ただし、FindResourceは ディスク上でのみ、メモリ内のアセンブリで動作します。したがって、上記の例外で失敗します。近づいていますが、まだ回避策はありません。
linq-to-sql - linq to sql クエリのプリコンパイル
where句に条件付きロジックがある場合、検索パラメータの値に応じて、linqはさまざまなSQLクエリを作成できます。
この場合、クエリのプリコンパイルを利用して、条件を考慮に入れてみませんか? 複数のプリコンパイル済みクエリを生成する必要があるようです。次に、入力パラメーターに応じて、正しいプリコンパイル済みクエリを起動する必要があります。
ほとんどのブログ エントリ/記事はかなり制限されており、クエリに条件付きロジックがない場合にのみ linq クエリのプリコンパイルを処理しています。そして、クエリのプリコンパイルが常に有益であるとは限らず、使用しない方がよい場合があることを小さな活字で述べているだけです。
たとえば、linq クエリに 1 つの条件付きパラメーターがある場合、2 つの異なる SQL クエリを作成できます。では、これら 2 つの linq クエリをプリコンパイルして、適宜再利用しないのはなぜでしょうか? さまざまなプリコンパイル済みクエリを複数回再利用すると、最終的に処理能力がいくらか節約されると確信しています。
これを提起する理由は、現在、非常に複雑な検索フォームを備えた Web アプリケーションに取り組んでいるためです。典型的な検索フォームには、約 20 のフィールド (文字列、整数、ドロップダウンなど) を含めることができます。検索の 95% で既定のパラメーターが使用されます。しかし、他の検索では複数の検索パラメーターを使用しています。基になる linq クエリはすべてのパラメーターを考慮に入れています。構文は非常に優れており、特に .Where(row=>!model.id.HasValue || row.id==model.id). したがって、int かどうかに応じて、2 つの異なる SQL クエリを生成できます。id に値があるかどうか。私の where 句はもっと複雑で、約 20 個の条件付きパラメーターが必要です。
問題は、条件付きパラメーターに応じてlinqクエリをプリコンパイルすると、パフォーマンスが向上するかどうかです。これにより、条件パラメータの組み合わせごとにプリコンパイルされたクエリが作成されます。したがって、プリコンパイル済みクエリが既に存在して使用できるかどうか、または新しいプリコンパイル済みクエリを作成する必要があるかどうかを判断するには、パラメーターを分析する必要があります。
このソリューションは、後でさらに一歩進めることができます。そのため、Web アプリケーションが開始されると、すべての linq クエリが、条件付きパラメーターのすべての可能な組み合わせに対して事前にコンパイルされます。または、プリコンパイルされたクエリの数を減らすために、最も一般的に使用されるいくつかの限定パラメーターの組み合わせに対してプリコンパイルを使用し、より複雑なシナリオではプリコンパイルされていないクエリを強制的に使用することができます。
ruby-on-rails - application.cssがアセットとして提供されていない
4、5、6を編集
8時間後、これ以上のアイデアを歓迎します:)このバグはすでにわかっていて解決されているかもしれませんが、アプリ/アセット/スタイルシートの.css.erbファイルにこれがあると、編集2&3で説明した動作が得られます。
問題のある部分はasset_path
メソッド呼び出しのようですが、.css.scssも次のようにそれを壊します:
私のGemFileは次のとおりです。
私のGemfile.lockは次のとおりです。
application.rbの内容:
config / environment / product.rbの内容:
---アーカイブ済み---
元の投稿
本番モードでapplication.cssファイルを提供していたRails3.1アプリケーションがあります。 いくつかの無関係な問題を抱えた後、私は以下を使用してアセットをプリコンパイルすることについて知りました:
'application-79d6fafe46c10758d8f5a921f1e55ecd.css'を生成するようにプリコンパイルされた私のapplication.cssファイルですが、public/assetsフォルダーに存在しているにもかかわらず提供されていません。application.jsファイルは正常に提供されています(application-9a36deba94d6308ab9bebe4e30a93959.jsとして)。また、この問題は、プリコンパイルに関する記事で示唆されているように、.css.erbファイルを作成した後に最初に発生したことにも注意してください。
私がやろうとしていることについて何か考えはありますか?.css.erbファイルを元に戻し、プリコンパイルを再度実行して、application.cssファイルが提供されるかどうかを確認します。
編集1
.css
ファイルをに変更しても問題は発生しません.css.erb
。そして、erbは正常に機能します。関数を使用すると問題が発生するようasset_path
です。例:
これは正しい文字列を与えるために機能します。例: 、これは、開発モードでは提供されますが、本番モードでは提供されないassets/activities/text_editor_toolbar.png"
コンパイル済みファイルに表示されます。application-(hash).css
これはとても奇妙です。:| :@
編集2 さて、これはちょうど良くなりましたが、奇妙です。本番モードで一度実行すると失敗するようです。開発中、そして本番環境で再度実行すると、アセットをプリコンパイルするのと同じように、何年もかけて「Microsoftコンソールベースのスクリプトホスト」を起動します。これは、出力から、最終的にページをレンダリングして提供する前に実行しているように見えます。アプリケーション-(hash).cssが正常に実行されました:
。。。:-行う ?
編集3
最初に本番モードで一度実行する必要はありません(つまり、実際には開発で実行する行為であり、本番モードをトリガーしてアセットを(?)再プリコンパイルします)。アセットのプリコンパイルに使用rake
した後は、開発モードで実行し、ページをリクエストし(必要です)、本番環境で実行し、ホームページを再度リクエストするだけで、2番目のプリコンパイルのように見えます。
これは私のマシンの完全な再起動(win 7-64bit)を乗り越えました。ですから、これは一貫したバグだと思います。
StackOverflowはこの議論を続けるのに最適な場所ですか、それともSprocket git-hubページなどに進むのが最適ですか?