Exclude files from web site deployment with msbuil

2020-06-17 17:00发布

I have a web site project that I deploy using msbuild. In the project there are some files and folders that are needed for the build (e.g. the web.config part replacement files) but that I don't want to deploy to the target site.

The best I could think of is a post-build target that removes these files, but I'd like to know if there is a way to have these files not copied to the output folder.

5条回答
疯言疯语
2楼-- · 2020-06-17 17:48

Hi Check this blog post out it saved my day,

I was trying to exclude the un-minified version of the javascripts, and use only the minified version when published (I'm removing large javascripts and chirp.config) its only needed for debug.

just put this on the Project file as stated on the link.

<ItemGroup>
    <ExcludeFromPackageFolders Include="Scripts\large">
      <FromTarget>Project</FromTarget>
    </ExcludeFromPackageFolders> 


    <ExcludeFromPackageFiles Include="Scripts\mash.js.chirp.config" />  
    <ExcludeFromPackageFiles Include="Content\mash.js.chirp.config" />
  </ItemGroup>

The published site will not include the following:

  • Scripts\large
  • mash.js.chirp.config
查看更多
神经病院院长
3楼-- · 2020-06-17 17:51

You can select the files and set their "Build Action" to "ExcludeFromPackageFiles". That way visual studio will edit the csproj xml and you don't have to.

查看更多
▲ chillily
4楼-- · 2020-06-17 17:53

in the properties explorer for the files change the option "copy to output directory to "do not copy"

enter image description here

查看更多
Fickle 薄情
5楼-- · 2020-06-17 17:55

I'm using Visual Studio 2012 with Jenkins and the only thing that worked for me was changing "Build Action" to "None:"

enter image description here

Internally this sets the XML tag in the PROJECT.csproj file from "Content" to "None:"

<None Include="form.coffee" />

I closed the project then manually edited the file using another editor to exclude all my coffee files en mass.

(All my coffee files are still transcompiled to js files.)

查看更多
Anthone
6楼-- · 2020-06-17 18:00

You can use MSDeploy with Web Publishing Pipeline to exclude files to be included in the package creation. You can use something like this if you want to exclude for example App_Data folder from the deployed package

<Target Name="ExcludeApp_Data" DependsOnTarget="$(ExcludeApp_DataDependsOn)" Condition="$(ExcludeApp_Data)" > 
  <ItemGroup>
    <ExcludeFromPackageFolders Include="App_Data">
      <FromTarget>ExcludeApp_Data</FromTarget>
    </ExcludeFromPackageFolders>
  </ItemGroup>
</Target>

Somehow editor doesn't display the code properly. The above gets generated inside the proj file when you configure the Package/Publish web. You can add your own target to get it done.

For example, if you want to exclude Scripts\jquery files from your build, create seperate ExcludeScriptFiles.wpp.targets file as below

<ItemGroup> 
  <ExcludeFromPackageFolders Include="Internal">
    <FromTarget>ExcludeScriptFiles.wpp.targets</FromTarget>         
  </ExcludeFromPackageFolders>
  <ExcludeFromPackageFiles Include="Scripts\jquery.js;xyz.js">
    <FromTarget>ExcludeScriptFiles.wpp.targets </FromTarget> 
  </ExcludeFromPackageFiles>
</ItemGroup>

This is just a simple example to write your own target.

Hope this helps

查看更多
登录 后发表回答