预编译事件中* .ASPX.VB文件中的注入代码未编译,必须编译两次,为什么?

时间:2013-01-29 20:36:47

标签: asp.net visual-studio-2010 visual-studio visual-studio-2012

我在Visual Studio的Web项目中有一个预构建事件(2012年,但2010年的行为相同)。

如果文件夹中有匹配的filename.html,prebuild会调用一个简单的exe来查找每个filename.aspx.vb文件。

如果是这样,它只是将filename.html作为字符串读取(转义和缩小)并将其作为字符串注入finename.aspx.vb中,如:

myStribBuilder.Append(“这是来自外部文件的html代码的去处”)

假设我对filename.html进行了修改,我保存并编译并测试网站。它应该反映调用filename.aspx

时的最新更改

发生了什么:

  • 如果我有一个或两个非常轻的项目,它确实有效。它按预期编译好。

  • 然后项目变得更大,它不再起作用了。我的意思是代码被注入但未按预期编译,如果我在webserver上刷新filename.aspx我仍然会有相同的版本,但是如果我在VS上打开filename.aspx.vb代码就在那里。第二次编译100%正常。

我可以忍受这一点但是我必须在html文件更改后每次编译TWICE以进行测试。 这对我没有意义。

“预构建”意味着实际上它似乎在执行预建例程之前在编译请求上正确缓存代码。

那么,我怎样才能确保在编译开始之前在我的* .vb文件中注入代码?

1 个答案:

答案 0 :(得分:0)

我发现问题不是VS没有等待exe在prebuild上完成,而是在编译时打开了filename.aspx.vb。

代码在IDE上自行更新(选项设置为自动修改外部修改的打开页面)但我想编译过程会保留打开文件的预构建版本,这在某种程度上是有意义的。

如果我在编译前关闭文件就可以了。

现在我想知道是否有解决方法,但我知道在编译之前外部修改IDE中的动态打开文件并不常见。然而,我确实非常依赖这种技术。