2012-01-27 71 views
2

我使用VS 2010构建的ASP.Net项目。我们使用“生成”菜单中的“发布”选项将应用程序发布到本地服务器上的文件夹。未发布到服务器的ASP.Net DLL

这对我们的服务器之一正常工作 - 文件正确复制,并且一切正常(我们不会在发布前删除服务器上的文件,因为有额外的文件不是来自VS) 。但是,在我们的其他服务器上,发布似乎不起作用。这些DLL不会被替换,这意味着我们必须手动复制解决方案中的/obj/Debug/Package/PackageTmp目录的内容(这是VS在发布所有文件之前将它们复制到的地方)。

服务器和本地计算机上的时间都相同 - 两者都同步到本地网络上的同一个NTP服务器,所以这不是问题。

有什么我们可以做的强制VS覆盖目标目录中的所有文件(没有实际删除文件)?

回答

2

我经常遇到这个问题,并得出结论,VS的发布命令是简单的破坏。有时它起作用,有时不起作用。我甚至提出了一些MS Connect问题。

问题可以追溯到至少VS 2005,也许之前。

通常它归结为远程服务器稍微超前的时间。不过,看起来你已经在研究这一点。我们也看到,即使在两台机器上的时间相同时,它也无法发布已更改的.aspx页面...

要解决此问题,我们发布到一个空的临时目录,然后发出命令以xcopy文件到真正的目标位置。一旦xcopy完成,我们清除临时目录。

+0

是的,我已经采取手动复制文件,至少现在。我打算很快写一个脚本来为我做,因为它似乎不再适用(它曾经偶尔工作)。 – 2012-01-27 15:13:29

+1

我最终为我们的项目编写了一个定制构建工具,它调用'msbuild'来在本地发布文件(这似乎总是有效),然后递归地将它们复制到服务器。这似乎每次都有效,我借此机会通过将SQL更新自动化到同一个工具中来让事情更好。出于坏事,有时候会有好的事情发生 - 现在我们的整个构建/升级只是一步! – 2012-02-03 20:03:00

+0

@ a_m0d:很高兴听到。 – NotMe 2012-02-03 20:55:57

相关问题