2011-06-15 52 views
5

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

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

在性能资源管理器中的文件

回答

3

改变选择“复制到输出目录‘不复制’

enter image description here

+0

这是一个网站项目,而不是一个Web应用程序。我需要一种方法来从msbuild文件中做到这一点。 – 2011-06-15 13:58:51

2

可以使用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网页时,上述内容会在proj文件中生成。你可以添加你自己的目标来完成它。

例如,如果要排除脚本\ 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> 

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

希望这有助于

+0

感谢您的提示,我会尽快尝试。要回答您的(现在已编辑过的)问题,您可以在SO中正确格式化XML,您只需将其分布在多行中即可。 – 2011-06-16 06:57:29

+0

@Paolo感谢格式化提示。当我尝试跨多行分发时,格式化没有通过我按回车后。我错过了什么?我目前也正在完成一项任务,用于一次性为不同环境(测试/阶段/生产)生成配置文件并创建部署包。 – DotNetInfo 2011-06-16 14:17:05

4

喜检查this blog post出它救了我的一天,

我是想排除的JavaScript的非精缩版,并且只使用缩小的版本发布的时候(我删除大的JavaScript和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
7

您可以选择文件,并设置自己的“生成行动“改为”ExcludeFromPackageFiles“。这样Visual Studio将编辑csproj xml,你不需要。