0

背景:有一个 C# 项目,其中涉及一个 javascript 块,该块以编程方式注入 webbrowser 控件显示的网页中。但是,最好缩小这个 javascript 块并将其嵌入/写入资源文件的属性中。我知道 javascript 的缩小是可能的。我只是想知道是否也可以使用预构建事件将结果字符串写入资源文件的特定属性。

PS:当然,生成的字符串可以写入一个文件,该文件又绑定到资源属性。但是我宁愿避免这样的事情,担心它会在运行时施加性能损失(javascript块经常加载)。如果我对此有误,请随时纠正我。

4

1 回答 1

0

对于在那里遇到类似问题的任何人,这是我在 Visual Studio 2010 的上下文中选择的分步方法(已经用完了替代解决方案)。下面的方法处理统一中的 javascript 文件的缩小在尊重您可能使用的版本控制系统的同时(通过避免在其托管的文件中生成幻像更改)。以下是步骤:

  1. 安装 Java 和 Google 的 Closure(用于 javascript 缩小)。

  2. 打开项目的资源,转到文件资源并创建一个虚拟文件属性 a-la foo.txt。这应该在您的项目中创建并包含名为 Resources 的目录。您可以在此之后删除 foo.txt 文件。

  3. 右键单击 Resources 目录并创建一个以 Uniminified.js 结尾的 javascript 文件(例如 MyInjectableJavascript.Unminified.js)。编辑此文件的属性并确保构建操作设置为“无”。顺便说一句,不要在资源中引用这个文件。

  4. 现在回到资源的文件属性并添加一个新的文件属性,它与上面创建的文件的基本名称相同,只是这次以 min.js 结尾(例如 MyInjectableJavascript.min.js)。

  5. 转到在资源目录下创建的 .min.js 文件并将其转换为嵌入式资源。

  6. 现在转到项目的属性 -> 构建事件并插入以下代码:

预构建事件(一行):

call "$(ProjectDir)JavascriptMinificationWithGoogleClosure.bat" "$(ProjectDir)Resources\MyInjectableJavascript.Unminified.js" "$(ProjectDir)Resources\MyInjectableJavascript.min.js"

构建后事件(两行):

 del "$(ProjectDir)Resources\MyInjectableJavascript.min.js"
 call echo. 2> "$(ProjectDir)Resources\MyInjectableJavascript.min.js"

它的作用是在构建项目之前缩小 javascript 代码,在构建之后将缩小的文件重置为单个换行符。

注意:我们不一起删除缩小文件的原因是,如果找不到资源引用的缩小文件(在我的情况下,Visual Studio 删除了 Resources. Designer.cs 完全出乎意料... 5 次)。通过将 min.js 文件截断为单个换行符,您可以保留它,甚至可以将其添加到您的版本控制系统中,而无需再打扰它。

  • 在您的项目目录下放置一个名为 JavascriptMinificationWithGoogleClosure.bat 的文件,其内容如下:

    "%JAVA_HOME%jre6\bin\java" -jar "%CLOSURE_JS_HOME%compiler.jar" --js %1 --js_output_file %2

  • 最后,创建两个名为 JAVA_HOME 和 CLOSURE_JS_HOME 的环境变量(右键单击计算机 -> 属性 -> 环境变量),它们分别指向您安装 Java 和 Closure 的可执行文件的目录。例如:

    JAVA_HOME -> C:\Program Files\Java\ CLOSURE_JS_HOME -> C:\Program Files\Closure\

注意:确保在两条路径的末尾都包含斜杠。

  • 您现在可以使用以下方法访问将在 C# 代码构建期间生成的缩小 javascript:

    Resources.MyInjectableJavascript_min

希望这可以帮助。祝你好运。

干杯,多米尼克

于 2011-12-19T15:51:08.280 回答