zoukankan      html  css  js  c++  java
  • web站点和windows服务项目发布时如何排除指定文件

      在发布asp.net站点和windows服务项目时,有的时候这样的需求:msbuild编译之后发布到服务器指定目录时要排除指定文件,比如通过jenkins构建时,不希望覆盖原来的Web.config和App.config,那么该如何排除呢?

    web站点项目

    比如不希望发布Web.config文件,有以下三种方法。

    1,将项Content改为None

    修改前:

    1 <Content Include="Web.config" />

    修改后:

    1 <None Include="Web.config" />

      

    2,使用项的Exclude属性

    如下代码:

    1 <Content Include="Web.config" Exclude="Web.config" />

    注意:

    这种方式虽然可以实现发布时排除,但是同时也从项目中排除了,对于本地开发调试不方便。

    3,使用Target和ExcludeFromPackageFiles

    添加新的Target节点,如下代码:

    1 <!--通过ExcludeFromPackageFiles排除Web.config-->
    2 <Target Name="CustomExcludeFiles" BeforeTargets="ExcludeFilesFromPackage">
    3 <ItemGroup>
    4   <ExcludeFromPackageFiles Include="Web.config"></ExcludeFromPackageFiles>
    5 </ItemGroup>
    6 </Target>
    View Code

    总结:最佳实践是使用方法3,既可以实现发布时排除,又能保证文件存在于项目中,不影响本地开发和调试。

    另外:

    由于msbuild基于.csproj项目文件,所以以上操作都是修改.csproj文件,修改方法如下:

    1,卸载项目

    如下图:

    2,编辑csproj文件

    如下图:

     

    windows服务项目

    由于在windows服务项目中,App.config本来就是None类型的,且使用Target和ExcludeFromPackageFiles的方式不适用,所以暂时使用项的Exclude属性实现。

    修改前:

    1 <None Include="App.config" />

    修改后:

    1 <None Include="App.config" Exclude="App.config" />

    参考资料

    1,https://stackoverflow.com/questions/6358635/exclude-files-from-web-site-deployment-with-msbuild

    2,msbuild参考:https://docs.microsoft.com/zh-cn/visualstudio/msbuild/msbuild

  • 相关阅读:
    vscode maven
    clojure + sumblime text SublimeREPL
    .zsh_history
    springboot-自动装配
    任务调度-Quartz
    springcloud alibaba
    canal与kafka的结合使用
    centos7安装Zookeeper
    centos7安装kafka
    vmware+centos7 设置静态ip
  • 原文地址:https://www.cnblogs.com/mcgrady/p/7127352.html
Copyright © 2011-2022 走看看