15

我们Windows Azure用于在 a 上托管我们的应用程序,Cloud Service并用于Powershell使用msbuild.

在发布我们的第一个响应时间非常慢,所以我们自然需要预编译应用程序。

有很多使用 aspnet_compiler 进行预编译的文档,但是我找不到任何有关使用的官方文档:

msbuild Web.sln /p:PrecompileBeforePublish=true

针对 MSDN的谷歌搜索没有给我任何信息,而 MSDN 通常是相当彻底的。我所能看到的只是今年早些时候的一篇有用的Stack 帖子。

那么有人知道任何正式文件PrecompileBeforePublish吗?我在看错误的来源吗?

如果做不到这一点,标志究竟为我们提供了什么,它与Precompilation for Deployment with an Updatable UI参考)相同吗?

4

3 回答 3

5

自从这个问题发布以来已经有一段时间了,仍然没有好的答案。最近想改变 MSBuild 运行 aspnet_compiler.exe 的方式,但是没有找到文档。我做了一些挖掘,这是我的经验。

只有同时使用DeployOnBuildPrecompileBeforePublish参数时才会进行预编译。其他可用参数是EnableUpdateableUseFixedNames

msbuild Web.sln /p:DeployOnBuild=true /p:PrecompileBeforePublish=true /p:EnableUpdateable=false /p:UseFixedNames=true

如果您在 Visual Studio 中更改预编译选项,您可以获得类似的结果。这可以在Project > Publish > Configure > Settings > File Publish Options > Precompile during publishing > Configure.

图片链接

这是参数在 .pubxml 文件中的显示方式:

    <PrecompileBeforePublish>True</PrecompileBeforePublish>
    <EnableUpdateable>False</EnableUpdateable>
    <DebugSymbols>True</DebugSymbols>
    <WDPMergeOption>CreateSeparateAssembly</WDPMergeOption>
    <UseFixedNames>True</UseFixedNames>

由于找不到文档,您可能希望更改这些选项并查看生成的 .pubxml 文件,以了解在命令行中要使用哪些进一步的参数。

于 2019-03-28T11:34:43.377 回答
1

我认为,您的问题不是预编译,我知道,您已经做好了预编译。

我认为您的项目太大(检查您的最终 bin 目录大小)IIS 读取每个 dll,并在运行任何代码行之前调试符号并将它们加载到内存中。

如果您的项目规模太大,并且您的虚拟环境资源低,磁盘,内存低,cpu 低,那么它就没有什么魔力了。

建议:

  1. 尝试减少项目输出的大小。(可以选择删除调试符号)。
  2. 删除所有未使用的引用...(.net 和第 3 方)(编辑,添加)
  3. 扩展您的环境配置。

问候...

于 2016-02-02T16:45:59.833 回答
-1

rex 解决您的问题的方法是,为您的网站添加一个新的 Web 部署项目,该项目将自动预编译您的网站,并且该项目将包含预编译的 Web 输出。如果您没有在右键单击中获得 Web 部署项目,请下载用于 Visual Studio 的 32 位或 64 位工具,该工具将添加到您的 Visual Studio 或者如果您想通过 MS Build 完成,您需要参考https://msdn.microsoft.com/en-us/library/ms227972.aspx或者你也可以参考http://www.asp.net/web-forms/overview/older-versions-getting-started /deploying-web-site-projects/precompiling-your-website-vb 我希望我能以某种方式帮助你。

于 2015-03-25T11:38:29.810 回答