2012-02-29 81 views
4

我一直在发布我的网站没有太多的麻烦。但是今天我注意到它不会用新版本覆盖现有的.cshtml剃须刀文件。我发布,查看文件夹,并看到文件仍然过时。如果我删除该文件然后发布,它会将新版本放在那里。但是,如果文件已经存在,它不会覆盖它,并且我的制作网站已过时。我试着做'发布前删除文件'选项,但它给我一个访问错误,它不能删除文件夹。我试图删除整个文件夹,但后来我失去了我的.svn文件夹,它不会识别版本控制。asp.net mvc发布不会覆盖cshtml文件

有没有办法强制发布命令覆盖我的.cshtml文件的最新版本? (注意:dll文件被覆盖的很好)

+0

如果你在生产服务器上有.SVN文件夹,那么你_definitely_必须做错了什么。也许你考虑将你发布的网站移动到另一个文件夹? – 2012-02-29 21:06:40

+0

你是如何发布的?从Visual Studio使用Web部署设置? – 2012-02-29 21:09:42

+0

要发布,我在VS中,然后右键单击项目并选择“发布”使用文件系统。 – user441058 2012-02-29 21:19:45

回答

2

似乎只读属性设置在文件上,因此它们不能被覆盖。检查VS输出窗口是否有错误迹象。

建议:尽量不要在源代码控制中包含生成的文件(这也意味着文件夹与发布的文件)。 VCS工具通常倾向于锁定他们工作的文件。

在Test/Prod服务器上有.svn文件也不是一个好主意。

+0

当我右键单击.cshtml文件并选择“属性”时,只读复选框未被选中。 此外,为什么在服务器上安装.svn文件不是一个好主意?服务器是远程服务器,复制/粘贴文件是一个巨大的痛苦。但是,远程访问服务器很容易,并右键单击它以获取已更新的最新文件。 – user441058 2012-02-29 21:17:16

+0

.svn文件只是VCS文件,它们绝对不属于项目,特别是在目标服务器上。他们也构成安全风险。 – 2012-02-29 21:22:23

+0

@ user441058:SVN并非设计时考虑到了发布,并且在很多情况下,您可能在文件访问方面遇到很大问题。很可能你的问题就是那种。 – 2012-02-29 21:22:35

3

您是否将复制到输出目录设置为始终复制?

我也使用Build Action = Content。