使用msbuild从网站部署中排除文件

时间:2011-06-15 13:42:26

标签: c# msbuild web web-site-project

我有一个使用msbuild部署的网站项目。在项目中,有一些构建所需的文件和文件夹(例如web.config部件替换文件),但我不想部署到目标站点。

我能想到的最好的是一个删除这些文件的构建后目标,但我想知道是否有办法将这些文件复制到输出文件夹中。

5 个答案:

答案 0 :(得分:7)

嗨检查this blog post,它保存了我的一天,

我试图排除javascripts的未缩小版本,并且在发布时只使用缩小版本(我正在删除大型javascripts和chirp.config),这只是调试所需的。

将其放在项目文件中,如链接中所述。

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


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

发布的网站不包含以下内容:

  • 脚本\大
  • mash.js.chirp.config

答案 1 :(得分:7)

您可以选择文件并将其“Build Action”设置为“ExcludeFromPackageFiles”。这样,visual studio将编辑csproj xml而你不需要。

答案 2 :(得分:3)

在属性资源管理器中为文件更改选项“复制到输出目录”不要复制“

enter image description here

答案 3 :(得分:3)

您可以将MSDeploy与Web发布管道一起使用,以排除要包含在程序包创建中的文件。 如果要从已部署的包

中排除例如App_Data文件夹,则可以使用类似这样的内容
<Target Name="ExcludeApp_Data" DependsOnTarget="$(ExcludeApp_DataDependsOn)" Condition="$(ExcludeApp_Data)" > 
  <ItemGroup>
    <ExcludeFromPackageFolders Include="App_Data">
      <FromTarget>ExcludeApp_Data</FromTarget>
    </ExcludeFromPackageFolders>
  </ItemGroup>
</Target>

不知何故,编辑器无法正确显示代码。 在配置Package / Publish Web时,会在proj文件中生成上述内容。您可以添加自己的目标来完成它。

例如,如果要从构建中排除Scripts \ jquery文件,请创建单独的ExcludeScriptFiles.wpp.targets文件,如下所示

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

这只是编写自己的目标的一个简单示例。

希望这有帮助

答案 4 :(得分:0)

我正在使用Jenkins的Visual Studio 2012,而对我有用的唯一的东西正在将“Build Action”更改为“None:”

enter image description here

在内部,它将 PROJECT .csproj文件中的XML标记从“内容”设置为“无:”

<None Include="form.coffee" />

我关闭了项目,然后使用其他编辑器手动编辑了该文件,以排除我所有的咖啡文件 en mass

(我的所有咖啡文件仍然被转换为js文件。)