在发布asp.net站点和windows服务项目时,有的时候这样的需求:msbuild编译之后发布到服务器指定目录时要排除指定文件,比如通过jenkins构建时,不希望覆盖原来的Web.config和App.config,那么该如何排除呢?
web站点项目
比如不希望发布Web.config文件,有以下三种方法。
1,将项Content改为None
修改前:
1
修改后:
1
2,使用项的Exclude属性
如下代码:
1
注意:
这种方式虽然可以实现发布时排除,但是同时也从项目中排除了,对于本地开发调试不方便。
3,使用Target和ExcludeFromPackageFiles
添加新的Target节点,如下代码:
1 23 4 65
总结:最佳实践是使用方法3,既可以实现发布时排除,又能保证文件存在于项目中,不影响本地开发和调试。
另外:
由于msbuild基于.csproj项目文件,所以以上操作都是修改.csproj文件,修改方法如下:
1,卸载项目
如下图:
2,编辑csproj文件
如下图:
windows服务项目
由于在windows服务项目中,App.config本来就是None类型的,且使用Target和ExcludeFromPackageFiles的方式不适用,所以暂时使用项的Exclude属性实现。
修改前:
1
修改后:
1
参考资料
1,
2,msbuild参考: