问题标签 [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.

0 投票
5 回答
6835 浏览

asp.net - 为什么 aspnet_compiler.exe 这么慢(并且可以做得更快)?

在我们的构建过程中,我们aspnet_compiler.exe针对我们的网站运行,以确保 ASP.NET/MVC 中的所有后期绑定的东西都实际构建(我对 ASP.NET 一无所知,但我确信这是防止在运行时发现故障所必需的)。

我们的网站规模相当大,有几百个页面/视图/控件/等。但是,在 10-15 分钟范围内所花费的时间似乎过多(作为参考,这比编译大约 40 个项目的整个解决方案所需的时间要长,而且我们只预编译了两个网站项目)。

我怀疑硬件是问题,因为我在最新的四核 Intel 芯片上运行,配备 4GB RAM 和 WD Velociraptor 10,000rpm 硬盘。奇怪的是,EXE 似乎并没有使用太多的 CPU (1-5%),而且似乎也没有做太多的 I/O。

那么......这是一个已知问题吗?为什么这么慢?有什么办法可以加快速度吗?

注意:为了澄清人们已经回答的一些事情,我并不是在谈论 Visual Studio 中的代码编译。我们已经在使用 Web 应用程序项目,编译速度不是问题。问题是作为开发构建脚本的一部分,这些项目已经被编译(有关更多详细信息,请参阅此 MSDN 页面)之后对站点进行预编译。我们正在执行就地预编译,而不是将文件复制到目标目录。

0 投票
4 回答
11898 浏览

asp.net - VS2008发布网站后无法解析全局资源

我有一个在 VS 2008 中运行的网络项目。我们在 App_GlobalResources 文件夹中有一些全局资源文件 (*.resx) 用于国际化。所有这些都像我在 VS 中安装的本地 IIS 的魅力一样。

但是当我将我的网络项目发布到本地文件系统和/或另一台服务器时,所有资源都找不到了。所以我猜预编译会以某种方式破坏东西。当我调用预编译的 web 时,我得到一个错误,即无法找到带有键 xyz 的资源对象,尽管它之前可以找到。

我使用 .NET 反射器检查了资源是否进入 *.dll。所有这些标识符都在那里(bin/Web.dll、bin/<culture>/Web.resources.dll)。标识符的加载方式如下:

资源文件称为 MyProject.resx 和 MyProject.<culture>.resx,其中 <culture> 对应于特定的文化(即 MyProject.de-DE.resx)。

任何想法如何解决这个问题?

我真的很感激任何帮助。

谢谢

编辑:

如果我手动将 App_GlobalResources 文件夹复制到输出,则资源可能会正常加载。所以我真的很想知道这个预编译是关于什么的。

我仍然对“以正确的方式”解决问题感兴趣。

0 投票
11 回答
6517 浏览

php - Ruby、PHP 或 Perl 可以为 Python 等代码创建预编译文件吗?

对于 Python,它可以创建一个预编译版本 file.pyc 以便程序可以运行而无需再次解释。Ruby、PHP 和 Perl 可以在命令行上做同样的事情吗?

0 投票
4 回答
39802 浏览

build-process - 如何在 CMake 生成的 Makefile 中在编译时运行命令?

我想将一些选项传递给编译器。该选项必须在编译时计算 - 每次调用'make'时,而不是'cmake'时,所以execute_process命令不会削减它。(可以?)

例如,将日期传递给 g++ 编译器,如下所示:

但是在编译时计算 DATETIME。

知道如何在 CMake 中做到这一点吗?

赏金编辑:

将接受一个最少黑客的解决方案。

请注意,我希望能够在编译时执行任意命令,而不仅仅是“日期”。

编辑2:

它必须在 Linux、Windows (VS)、Mingw、Cygwin 和 OS X 上工作。你不能假设 Ruby、Perl 或 Python,因为它们在 Windows 上是非标准的。你可以假设 BOOST,但我想这没有用。

目标是强制 cmake 生成 Makefile(在 Linux 的情况下),当 make 执行时,它将完成这项工作。

创建自定义 *.h 文件是可以的,但它必须由 make 由 Makefile(或其他操作系统上的等效文件)启动。*.h 的创建不必(也不应该)使用 cmake。

0 投票
1 回答
576 浏览

command-line - 我可以从命令行应用 PL/SQL 美化规则吗?

主题是不言自明的。

我的目标是自动化代码美化的过程,所以像 SQLPlus 这样的程序会在美化后编译代码。

0 投票
3 回答
3556 浏览

preprocessor - 如何根据默认的 Inno Setup 变量设置 ISPP 定义?

我试图:

但它产生:

编译器错误

[ISPP] 应为表达式,但找到了左大括号 ("{")。

如何使用 Inno Setup PreProcessor 实现这一点?

0 投票
2 回答
2004 浏览

asp.net - Visual Studio 中的发布选项是否被视为 ASP.net Web 应用程序的预编译?

我无法理解该网站何时被视为“预编译”。据我了解,如果我在 Visual Studio 中使用 Publish 或 Build Deployment Package 选项,则它是预编译的,但如果我只使用 xcopy 之类的东西,则它不是预编译的。那是对的吗?

0 投票
1 回答
2262 浏览

asp.net - 引用预编译母版页时无法加载类型“ASP.xxx”

我正在尝试预编译一些母版页(不可更新)以在多个应用程序之间共享它们。我正在预编译的项目是一个网站。引用预编译程序集的项目是 Web 应用程序。但是,每次尝试从客户端引用母版页时,我都会收到无法加载类型“ASP.xxx_master”。

我的预编译母版页如下所示。

我难住了。不知道为什么类型没有解决。有人有建议吗?这两个项目(预编译的网站和客户端 Web 应用程序)都是为 ASP.NET 4.0 构建的。

编辑:这是预编译程序集的依赖项列表。没有第三方引用。

mscorlib,系统,System.Web

UDPATE 1

好吧,这个问题的快速解决方法是指定母版页的完整路径。

之后,我收到以下错误:

尝试加载字符串资源时出错(FindResource 失败,错误为 -2147023083)。

经过一些研究,这似乎与母版页中 HTML 标记的解析方式有关。还不完全确定。我还没有深入研究它。总的来说,我不敢相信这是共享控件的推荐方式,因为它绝对是令人难以置信的白痴。

更新 2

我无法从中获得任何有价值的东西。它似乎讨厌头部中的“脚本”标签,但我不知道为什么。母版页适用于单个脚本包含。一旦我开始添加更多内容,我就会不断收到该错误。在为此浪费了一整天之后,我最终向微软提交了一份错误报告。如果有人想撞它,请做。

更新 3

在 MS 没有回应后,我又花了几天时间调试这个问题。这是我的发现。我最初认为 CodeDOM 提供程序生成的代码正在寻找一个 .NET 资源,该资源在发布时以某种方式没有嵌入到程序集中。我错了。经过一番调查,似乎发生的事情是在母版页达到一定大小后,其中的一部分存储在程序集的 PE 数据目录部分的资源表中。事实上,在 PE 资源查看器中查看生成的程序集后,我可以通过在资源表中找到我的所有脚本来确认这一点。现在,这是实际的问题。发生的情况是 CodeDOM 提供程序生成对 Win32 FindResource 的调用以从资源表中提取该资源。但是, FindResource 没有 t 适用于内存中的程序集,仅适用于磁盘。所以它失败了,上面的例外。我已经接近了,但仍然没有解决方法。

0 投票
0 回答
505 浏览

linq-to-sql - linq to sql 查询预编译

如果 where 子句中有条件逻辑,linq 可以根据搜索参数的值构建不同的 sql 查询。

在这种情况下如何利用查询预编译并将条件考虑在内?看起来必须生成一个以上的预编译查询。然后需要根据输入参数触发正确的预编译查询。

大多数博客条目/文章都非常有限,并且仅在查询中没有条件逻辑时才处理 linq 查询预编译。然后他们只是在小字中提到查询预编译并不总是有益的,你最好不要使用它。

例如,如果 linq 查询中有一个条件参数,则可以构建 2 个不同的 sql 查询。那么为什么不预编译这两个 linq 查询并相应地重用呢?我敢肯定,如果您多次重复使用不同的预编译查询,那么它最终会节省一些处理能力。

我提出这个问题的原因是我目前正在开发一个具有相当复杂的搜索表单的 web 应用程序。典型的搜索表单可以有大约 20 个字段(字符串、整数、下拉列表等)。95% 的搜索使用默认参数。但其他搜索使用多个搜索参数。底层 linq 查询将所有参数纳入帐户,语法非常好,尤其是可以为空的整数,例如:.Where(row=>!model.id.HasValue || row.id==model.id)。所以根据是否int可以产生两个不同的sql查询?id 是否有价值。而我的 where 子句要复杂得多——它需要大约 20 个条件参数。

所以问题是:如果我根据条件参数预编译 linq 查询,是否会提高性能?这将导致每个条件参数组合的预编译查询。因此,必须分析参数以确定预编译查询是否已经存在并且可以使用,或者是否需要创建新的预编译查询。

该解决方案可以在以后进一步采取。因此,当 Web 应用程序启动时,所有 linq 查询都将针对所有可能的条件参数组合进行主动预编译。或者,为了减少预编译查询的数量,我可以对少数最常用的条件参数组合使用预编译,并在更复杂的场景中强制使用未预编译的查询。

0 投票
3 回答
13864 浏览

ruby-on-rails - application.css 没有被用作资产

编辑 4、5 和 6

8 小时后,欢迎提出更多想法 :) 也许这个错误已经为人所知并已解决,但是当您在 app/assets/stylesheets 中的 .css.erb 文件中有此错误时,我得到了我在编辑 2 和 3 中描述的行为:

问题部分似乎是asset_path方法调用,但 .css.scss 也打破了它:

我的 GemFile 是:

我的 Gemfile.lock 是:

application.rb 内容:

config/environments/production.rb 内容:

---存档---

原帖

我有一个 Rails 3.1 应用程序,它在生产模式下为 application.css 文件提供服务。 在遇到一些不相关的问题后,我发现使用以下方法预编译资产

我的 application.css 文件,预编译生成:'application-79d6fafe46c10758d8f5a921f1e55ecd.css',但尽管存在于 public/assets 文件夹中,但现在没有提供服务。application.js 文件运行良好(如 application-9a36deba94d6308ab9bebe4e30a93959.js)。另外我注意到这个问题是在我创建了一个 .css.erb 文件之后首先出现的,正如关于precompile的文章所建议的那样。

关于我尝试做什么的任何想法?我将尝试撤消 .css.erb 文件,再次运行预编译并查看我的 application.css 文件是否得到服务。

编辑 1

问题不来自将.css文件更改为.css.erb. 并且 erb 工作正常。asset_path使用该功能时似乎出现问题,例如:

这可以提供正确的字符串,例如:assets/activities/text_editor_toolbar.png",它显示在已编译的application-(hash).css文件中,该文件在开发模式下提供,但在生产模式下不提供。这太奇怪了。:| :@

编辑 2 好的,这变得更好了,但更奇怪了。似乎如果我在生产模式下运行一次,它就会失败。在开发中再次运行它,然后在生产中再次运行它,它会花费很长时间并启动“基于 Microsoft 控制台的脚本主机”,就像它正在预编译资产一样,从输出来看,它似乎正在做,然后最终呈现页面并提供服务application-(hash).css 成功:

. . . :-做 ?

编辑 3 您不需要先在生产模式下运行一次(即它实际上是在开发中运行的行为,它会触发生产模式以(?)重新预编译资产)。在使用rake预编译资产之后,它只需要在开发模式下运行,请求一个页面(这必要的),然后在生产环境中运行并再次请求主页就足以触发看起来像第二次预编译的事情。

这现在已经在我的机器完全重启后幸存下来(win 7-64bit)。所以我认为这是一个一致的错误。

StackOverflow 是继续讨论的最佳场所,还是最好转到Sprocket git-hub 页面,或者其他什么?