我遇到了一个Web应用程序的问题,当我通过构建服务器构建应用程序并发布网站时,global.asax类中的事件没有被执行。在Application_Start中是一行代码设置我们的日志记录,而在Application_Error中我有一些错误处理代码。在本地它一切正常,如果我直接从我的开发文件夹复制文件到服务器而不是通过构建服务器发布它一切正常。
从谷歌搜索的负载来看,这似乎是预编译的app.config文件丢失的问题 - 确定它在任何地方都不存在。但是,我无法找到实际上如何获得TFS构建服务器或Visual Studio(2010)来创建此文件以便我可以发布它。
有关如何生成此文件的任何建议将非常感谢。
编辑:更多信息。我刚刚尝试通过Visual Studio 2010而不是构建服务器发布网站,这创建了precompiledapp.config文件。我将所有文件复制到服务器(我保留完整的web.config除外)并且它成功记录(这表明正在触发global.ascx事件)。我现在需要做的是尝试让构建服务器做同样的事情 - 任何想法?
答案 0 :(得分:1)
我现在似乎已经解决了这个问题。
正如我在编辑原始邮件中所提到的,当我通过Visual Studio 2010将网站发布到本地文件夹时,它创建了Precompiledapp.config文件,并将文件夹内容复制到应用程序的测试版本使一切正常。由于我似乎无法让TFS Build服务器创建这个文件,我决定尝试将文件从我的本地发布文件夹复制到测试应用程序,以及来自tfs构建的其余文件,似乎一切要正常工作。
因此,尽管我还没有弄清楚如何让构建服务器生成此文件,但我的主要问题已解决,我可以再次使用global.asax文件。
答案 1 :(得分:0)
确保将自定义配置文件设置为内容文件,并在Visual Studio的配置文件属性中将“复制到输出”设置为“始终”。
答案 2 :(得分:0)
我在这个问题上迟到了,但是您可能应该验证您是否拥有 Visual Studio 用于构建预编译应用程序的正确 SDK(我认为它是 Azure SDK,即使没有对 Azure 做任何事情,但不是 100%) ).
如果您在构建服务器上安装了 Visual Studio,您可以只安装 Web 工作负载(打开解决方案会提示它)。我今天用 Visual Studio 2019 做到了这一点。 MSBuild 不仅忽略了我的 *.pubxml 设置,甚至还通过命令行参数将属性传递给了 msbuild.exe(覆盖了 *.pubxml 文件中的那些)。
我打开了 Visual Studio,它提示我安装必要的工作负载,我做到了。在那之后,一切都开始按预期工作。
要预编译,请确保在您的 pubxml 文件中包含以下内容:
<PrecompileBeforePublish>True</PrecompileBeforePublish>
此外,这篇文章引用了您关于如何让构建服务器在您的机器上运行时执行它的编辑评论。