You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Visual Studio 2013 Web部署项目排除文件夹至MSI失败问题

解决VS2013中MSI安装包排除整个文件夹的问题

我之前也踩过这个坑,VS2013的安装项目里用ExcludeFilter有时候确实会出现路径匹配不生效的情况,给你几个亲测有效的解决办法:

方法一:手动编辑安装项目的.vdproj文件(最可靠)

VS的安装项目本质是基于.vdproj配置文件运行的,直接修改这个文件能精准控制要排除的内容:

  • 先关闭Visual Studio,找到你的安装项目对应的.vdproj文件,用记事本或VS Code打开。
  • 找到对应来自XXX(活动)的内容文件的节点,通常是类似 <FileGroup Name="ContentFilesFromXXX(Active)"> 的区块。
  • 在这个区块里,找到所有路径包含\Test\TimerWorker\1\<File>条目,直接删除这些行;如果要排除整个文件夹的所有内容,删掉该文件夹下所有对应的文件节点即可。
  • 保存文件后重新打开VS加载项目,这些文件就不会被打包进MSI了。

方法二:从源项目控制文件输出

如果要排除的文件来自你的业务项目(不是安装项目),可以先在源项目里调整文件属性:

  • 打开你的业务项目,定位到Test\TimerWorker\1文件夹下的所有文件。
  • 选中这些文件,在右侧属性窗口里把复制到输出目录改成不复制
  • 重新生成业务项目,回到安装项目,右键点击来自XXX(活动)的内容文件选择"刷新",这些文件就不会被同步到安装项目中了。

方法三:修正ExcludeFilter的路径格式

你之前用的路径格式可能不对,VS2013的ExcludeFilter需要使用相对路径(相对于内容文件的源根目录),不能带开头的反斜杠:

  • 选中安装项目里的来自XXX(活动)的内容文件项,在属性窗口找到ExcludeFilter,点击编辑按钮(...)。
  • 添加以下规则:
    • 排除Test\TimerWorker\1下的所有文件:Test\TimerWorker\1\*
    • 排除该文件夹及所有子内容:Test\TimerWorker\1\**
  • 确定后重新生成安装项目,应该就能生效了。

如果还是不行,试试清理整个解决方案(菜单→生成→清理解决方案),然后删除安装项目的obj文件夹再重新生成,有时候缓存会导致筛选规则不生效。

内容的提问来源于stack exchange,提问作者vbguyny

火山引擎 最新活动