是否可以将 Web 项目中的文件夹排除在发布之外?我们有一些包含在特定项目文件夹中的文档和脚本,并被添加到项目中,但是当我进行 VS 发布时,我不希望它们进入生产服务器。
我知道他们不应该出现在项目中,但我想在我试图说服所有者修改他做事的方式之前找到一种解决方法。
是否可以将 Web 项目中的文件夹排除在发布之外?我们有一些包含在特定项目文件夹中的文档和脚本,并被添加到项目中,但是当我进行 VS 发布时,我不希望它们进入生产服务器。
我知道他们不应该出现在项目中,但我想在我试图说服所有者修改他做事的方式之前找到一种解决方法。
老问题,但我发现如果我将文件夹标记为hidden
在 Windows 资源管理器中,它不会在您的解决方案中显示/发布。
例如,这有助于阻止原始 Photoshop 图像包含在未使用且较大的上传中。尽管您可能想要编写自己的发布工具,但任何更复杂的东西。
这并不能完全回答您的问题,但我的感觉是,除非您是发布到服务器的单个开发人员,否则最好使用 MSBuild(或其他一些构建和部署解决方案)在专用工作站或服务器上进行构建直接(从而能够非常精细地控制生产中的内容)。MSBuild 不仅可以构建,而且使用一些扩展(包括开源类型),它也可以部署。微软有一款名为 MSDeploy 的产品处于测试阶段,这可能是一个更好的选择,但没有使用它的经验,我不能肯定地说。
在我们的情况下,我们有一个虚拟工作站作为构建框,我们所要做的就是双击启动 MSBuild 项目的批处理文件。它使用 VSS 标记所有代码,获取最新版本,构建解决方案,然后将其部署到两台服务器。我们准确地部署我们想要部署的东西,仅此而已。我们对此非常满意。
唯一的缺点,如果它可以被认为是一个缺点,是我们中的至少一个人必须学习如何使用 MSBuild。VS 本身使用 MSBuild。
对于您不想去的文件,循环属性并将“复制到输出目录”设置为“不复制”
但是,此选项不适用于目录。
您能否通过 Visual Studio 将它们排除在项目之外以阻止它们被发布。它们仍将存在于文件系统中
据我所知,您可以做到这一点的唯一方法是将其从项目中排除,进行发布,然后将其重新包含在项目中。这可能是个问题。
可能有更好的方法来解决这个问题,但是当我们为我们的开发服务器发布构建时,我们将在构建完成后运行一个批处理文件以删除不需要的文件夹和 web.configs(所以我们不需要覆盖那些已经部署的)。
根据http://www.mahinupta.com/mahinupta/blog/post/2009/12/04/AspNet-website-Exclude-folder-from-compilation.aspx你可以在windows中给文件夹“隐藏”属性资源管理器,它不会发布。我对此进行了测试,它对我有用。
对于快速和肮脏的目的来说,这似乎是一个简单的解决方案,但我认为它不会通过我们的版本控制(mercurial)进行。
选择所有不应发布的文件。
转到属性集构建操作-> 无
必须对每个子目录重复该过程。