MS Visual Studio:如何从发布中排除某些项目文件夹?

mee*_*tpd 52 .net c# asp.net publish visual-studio

我有一些文件夹,我想保留在项目中,但不包括在发布中.

那可能吗?

jbo*_*ers 29

迈克尔是完全正确的,通过编辑.csproj文件,您可以手动排除文件/文件夹的发布.

如果您不想弄乱.csproj文件,一种更简单的方法是突出显示VS解决方案资源管理器中的文件.在属性面板下,将构建从"内容"更改为"无".

这样您就不必从解决方案中卸载项目,加载.csproj并为您添加的每个新文件添加一行,不需要发布,而是通过3次鼠标单击实现相同.

(假设您在发布选项卡下设置了"仅发布运行此应用程序所需的文件")

  • 对于文件夹,看起来您推荐的更简单的方法不起作用,因为"属性"面板上的文件夹没有"构建操作"属性(至少在VS2010和VS2012中没有).要排除整个文件夹(而不仅仅是单个文件),您可以使用迈克尔答案中提到的解决方案. (11认同)
  • @RSW,你说的没错..cproj <ExcludeFoldersFromDeployment>选项专门取代标记为"content"的所有文件.但是,如果您在文件夹中没有标记为"内容"的文件,则该文件夹将不会被发布.我仍然宁愿标记n个文件然后用隐藏/容易忘记的.csproj单行覆盖那些文件设置 - 但每个都是他们自己的. (4认同)
  • _".cproj <ExcludeFoldersFromDeployment>选项专门取代任何标记为'content'的文件"_...这非常有趣且重要但要知道......我没有意识到这一点!对我而言,这可能是一个潜在的陷阱...如果我标记整个文件夹,我可能会无意中覆盖其中的内容.如果我单独执行这些文件,我(或其他人)可能会在以后添加文件而忘记将其排除.我想与大多数双刃剑一样,最好完全理解其含义,以便你做出的任何选择都是充分了解的. (2认同)

HGM*_*aci 21

如果它是一个网站项目,您可以按如下方式排除某些文件夹和/或文件(请参阅ExcludeFoldersFromDeploymentExcludeFilesFromDeployment元素):

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <ExcludeApp_Data>True</ExcludeApp_Data>
        <publishUrl>D:\YAZILIM\Adopen.2015\PreCompiledWeb</publishUrl>
        <DeleteExistingFiles>True</DeleteExistingFiles>
        <PrecompileBeforePublish>True</PrecompileBeforePublish>
        <EnableUpdateable>True</EnableUpdateable>
        <DebugSymbols>False</DebugSymbols>
        <WDPMergeOption>MergeAllOutputsToASingleAssembly</WDPMergeOption>
        <UseMerge>True</UseMerge>
        <SingleAssemblyName>AdoIntranet</SingleAssemblyName>
        <ExcludeFoldersFromDeployment>customobjects;uploads</ExcludeFoldersFromDeployment> 
        <ExcludeFilesFromDeployment>app.config</ExcludeFilesFromDeployment>
    </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

  • @nasch发布定义文件存储在.\ App_Data\PublishProfiles下,扩展名为.pubxml (2认同)

Sta*_*low 7

您可以在Web.cspoj文件中执行"查找和替换",以快速从发布/部署过程中删除特定文件夹

像这样;

<Content Include="Uploads/
Run Code Online (Sandbox Code Playgroud)

<None Include="Uploads/
Run Code Online (Sandbox Code Playgroud)


小智 6

  • 卸载项目,
  • 右键单击编辑*.csproj,
  • 添加这个:
<ItemGroup>
<Content Update="Data\CernainFolder\*.*">
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</Content>
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
  • 重新加载项目。

这应该很好用