如何防止VS 2008在发布过程中发布.svn文件夹?

8
当在Visual Studio 2008中发布asp.net网站时,是否有一种方法可以强制它忽略本地工作副本中的.svn文件夹,以便我的目标文件夹不会成为输出的一部分包含.svn文件。
谢谢,
杰森
3个回答

4
Visual Studio在网站内部的“.svn”文件夹上存在问题。因此,您应该应用Subversion ASP.NET hack,使用“_svn”目录代替“.svn”。
当使用TortoiseSVN时,这只是TSVN设置中的一个选项(请参见常规页面)。当使用SVN命令行客户端时,则必须设置环境变量(有关详细信息,请参见this page)。
应用此解决方法/黑客后,发布网站操作将按预期工作(_svn文件夹将被忽略)。
更新:
上述问题存在于Visual Studio 2003(或其使用的前端扩展)中。较新版本的Visual Studio不应该有这个问题。
因此,关键似乎是简单地对Subversion文件夹(_svn或.svn)设置隐藏标志。然后,在发布网站时会忽略这些文件夹。(我正在使用TortoiseSVN,我想它会自动为Subversion文件夹设置隐藏标志)。

1
Martin,感谢您的回复。将设置更改为隐藏可以解决除了 /bin 文件夹内的 .svn 文件夹之外的所有问题。即使该文件夹已被隐藏,它仍会发布其中的 .svn 文件夹。以下是显示我的本地工作副本 /bin 和目标 /bin 的屏幕截图。对于这种特殊情况,您有什么想法吗? - Jason Sherrill
1
抱歉,我不知道为什么会发生这种情况。我也使用 SVN 和网站项目,从未遇到过这个问题(一个区别是我使用 "_svn" 而不是 ".svn")。您正在使用 "web site" 还是 "web application" 项目? - M4N

1

bin文件夹不应该是您源代码控制的一部分,只需在解决方案资源管理器中右键单击Bin文件夹并选择“从项目中排除”即可。

现在使用Windows资源管理器,在bin文件夹中找到并删除.svn文件夹。

下次发布时(在删除所有内容后),您将不会有.svn文件,此外,每次构建解决方案时,它都不会看起来需要检入更改。


但是如果您的项目中有一些不是由您的项目生成的dll,例如Elmah.dll或其他第三方dll,该怎么处理呢? - Scott
我会建立一个名为“依赖项”(dependencies)的文件夹,并将其纳入源代码控制。然后编写一个后构建脚本,将所有文件复制到你的“输出”目录。这样,无论是进行调试还是发布构建,你都有依赖项。[要添加一个后构建脚本,请在项目的设置/属性页面中找到编译部分。] - adudley
如果从依赖文件夹中获取了额外的程序集,您可以使用“添加为链接”到项目,并将其属性设置为复制到输出。 - eglasius

0
您可以在 VS 中右键单击文件夹并将其从项目中删除,或者确保文件夹中包含的任何文件的“生成操作”设置为“无”并且“复制到输出目录”设置为“不复制”。

.svn文件夹实际上不会在解决方案资源管理器中显示(请参见此处的屏幕截图http://screencast.com/t/WR1tmU1WyR3) - Jason Sherrill
这对于大型项目来说也是非常不实际的。 - Nik Reiman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接