2011-05-24 237 views

回答

23

迈克尔是完全正确的,经过编辑的.csproj文件,你可以手动从被公布排除文件/文件夹。如果你不想用的.csproj文件乱七八糟

一个更简单的方法就是要突出VS解决方案资源管理里面的文件(S)。在属性面板下,将构建从“内容”更改为“无”。

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

(假设你设置了“只发布到运行该应用程序所需文件的发布选项卡下)

+8

对于文件夹后,将其设置回,它看起来像由于在“属性”面板上没有“生成操作”属性文件夹(至少不在VS2010和VS2012中),因此建议的更简单的方法不起作用。要排除整个文件夹(而不是单个文件),您可以使用Michael提到的解决方案。 – RSW 2013-09-19 16:56:46

+3

@RSW,你是对的。 .cproj 选项明确否决了标记为“内容”的任何文件。 但是,如果您没有在文件夹中标记为“内容”的文件,那么该文件夹将不会被发布。 我还是宁愿标志着N档,然后用一个隐藏/容易被人遗忘的.csproj一个班轮否决那些文件设置 - 但每个自己。 – jbokkers 2013-09-19 17:15:30

+2

_“.cproj 选项明确否决了标记为”内容“的任何文件”_...,这是非常有趣且重要的知道......我没有意识到这一点!对我来说,这是一个潜在的陷阱,如果我标记整个文件夹,我可能会无意中覆盖它里面的东西。如果我单独执行这些文件,我(或其他人)可能稍后添加一个文件并忘记排除它。我想用大多数双刃剑,最好完全理解这些含义,以便你做出的任何选择都能得到充分的了解。 – RSW 2013-09-19 17:37:17

17
+3

它也可以在不编辑项目文件的情况下完成http://www.asp.net/web-forms/tutorials/deployment/advanced-enterprise-web-deployment/excluding-files-and-folders-from-deployment – rdans 2014-02-12 11:19:34

+0

这个工作在Visual Studio 2013中非常有魅力。 – 2014-09-16 21:22:00

+0

截至目前为止断开的链接。 – 2016-11-03 15:34:48

4

你可以做的另一种方法是你可以隐藏那些不需要被得到发表Windows资源管理器的文件夹(不是最好的解决办法,但如果你有大组仍然需要在发展框图像的作品)。

+4

如果您有一个网站类型的项目,这是唯一的解决方案。 http://forums.asp.net/post/1997766。ASPX – RobD 2012-09-13 10:39:41

+0

如果你有一个批处理文件,做出版,您可以使用** ATTRIB + H文件夹名称**刚刚发布之前和** ATTRIB -H文件夹名称**刚刚发布 – mrd3650 2014-04-30 10:27:30

13

如果它是一个网站项目,您可以排除某些文件夹和/或文件如下(见元素ExcludeFoldersFromDeploymentExcludeFilesFromDeployment):在Web.cspoj文件

<?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> 
+0

这是一个很好的解决方案。如果您需要将这些规则应用于所有发布配置文件,则另一个类似的解决方案是创建* <项目名称> .wpp.targets *文件。 – crush 2015-05-29 14:55:47

+0

这是哪里?我有一个.publishproj文件,但有一个评论说,不要修改它。 – nasch 2016-10-10 15:02:02

+2

@nasch发布定义文件存储在\ App_Data文件\ PublishProfiles与扩展.pubxml – HGMamaci 2016-10-12 16:50:31

3

你可以做一个 '查找&替换' 快速elimin吃了特定文件夹从发布/部署过程

像这样;

<Content Include="Uploads/ 

<None Include="Uploads/ 
+0

感谢您的最佳答案 – vaqifrv 2016-11-18 07:16:11

0

随着问题被加上ASP,没有.proj文件与混乱。使用VS2015,还有另一个有用的文件:website.publishproj。并且this Asp.Net article on excluding files and folders提到了.wpp.targets文件。

所有这些文件都包含<ItemGroup>元素,可能有像<ExcludeFromPackageFolders>这样的元素。由于这些似乎有文件记载的功能,只要使用它们,不要因为黑客或“混乱”而感到内疚。对我而言,使用该链接和website.publishproj文件的简单说明不包括目录,就像一个魅力!

相关问题