0

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

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

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

myStribBuilder.Append("这是来自外部文件的 html 代码的去向")

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

这里会发生什么:

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

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

我可以忍受,但在 html 文件更改后,我必须每次编译两次以进行测试。这对我来说没有意义。

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

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

4

1 回答 1

0

我发现问题不在于 VS 不等待 exe 在预构建时完成,而是在编译时打开了 filename.aspx.vb。

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

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

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

于 2013-01-29T21:34:59.627 回答