Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MS Visual Studio:如何从发布中排除某些项目文件夹?_C#_Asp.net_.net_Visual Studio_Publish - Fatal编程技术网

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

C# MS Visual Studio:如何从发布中排除某些项目文件夹?,c#,asp.net,.net,visual-studio,publish,C#,Asp.net,.net,Visual Studio,Publish,我想在项目中保留某些文件夹,但不想在发布中包含这些文件夹 这可能吗?另一种方法是,您可以在windows资源管理器中隐藏不需要发布的文件夹(这不是最佳解决方案,但如果您仍需要在“开发”框中保存大量图像,则可以使用它)。完全正确,通过编辑.csproj文件,您可以手动从发布中排除文件/文件夹 如果不想弄乱.csproj文件,一种更简单的方法是突出显示VS解决方案资源管理器中的文件。在“属性”面板下,将“生成到操作”从“内容”更改为“无” 通过这种方式,您不必从解决方案中卸载项目,加载.csproj

我想在项目中保留某些文件夹,但不想在发布中包含这些文件夹


这可能吗?

另一种方法是,您可以在windows资源管理器中隐藏不需要发布的文件夹(这不是最佳解决方案,但如果您仍需要在“开发”框中保存大量图像,则可以使用它)。

完全正确,通过编辑.csproj文件,您可以手动从发布中排除文件/文件夹

如果不想弄乱.csproj文件,一种更简单的方法是突出显示VS解决方案资源管理器中的文件。在“属性”面板下,将“生成到操作”从“内容”更改为“无”

通过这种方式,您不必从解决方案中卸载项目,加载.csproj并为您添加的每个新文件添加一行,这些文件不需要发布,但只需单击3次鼠标即可实现相同的效果


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

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


文件系统
释放
任何CPU
真的
真的
D:\YAZILIM\Adopen.2015\PreCompiledWeb
真的
真的
真的
假的
合并AllOutput到单个程序集
真的
AdoIntranet
海关物品;上传
app.config

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

就这样,

<Content Include="Uploads/

由于问题是用ASP标记的,因此没有要处理的
.proj
文件。VS2015还有另一个有用的文件:
website.publishproj
。并提到
.wpp.targets
文件

所有这些文件都包含
元素,这些元素可能包含
之类的元素。由于这些功能似乎已被记录在案,所以只要使用它们,就不会因为黑客或“搞乱”而感到内疚。对我来说,排除使用该链接的简单说明的目录和
website.publishproj
文件非常有用

  • 卸载项目
  • 右键单击编辑*.csproj
  • 添加以下内容:

从未
  • 重新加载项目

这应该可以很好地工作

如果你有一个网站类型的项目,这是唯一的解决方案。如果您有一个批处理文件进行发布,您可以在发布之前使用ATTRIB+H FolderName,并在发布之后使用ATTRIB-H FolderName将其设置回文件夹。对于文件夹,您建议的简单方法似乎不起作用,因为在“属性”面板上没有文件夹的“生成操作”属性(至少在VS2010和VS2012中没有). 要排除整个文件夹(而不仅仅是单个文件),您可以使用Michael回答中提到的解决方案。@RSW,您是对的。.cproj选项特别否决任何标记为“内容”的文件。但是,如果文件夹中没有标记为“内容”的文件,则不会发布该文件夹。我还是宁愿标记n个文件,然后用一个隐藏的/容易忘记的.csproj一行代码来否决这些文件设置,但每个文件都有自己的.“.cproj选项专门否决任何标记为“内容”的文件…这很有趣,很重要…我没有意识到!对我来说,这是一个潜在的陷阱…如果我标记整个文件夹,我可能会无意中覆盖其中的某些内容。如果我单独处理这些文件,我(或其他人)可能会在以后添加一个文件并忘记将其排除。我想就像大多数双刃剑一样,最好充分理解其中的含义,这样无论你做什么选择,都会得到充分的信息。这是一个很好的解决方案。另一个类似的解决方案是,如果需要将这些规则应用于所有发布配置文件,则创建一个.wpp.targets文件。这将转到何处?我有一个.publishproj文件,但其中有一条注释说不要修改它。@nasch发布定义文件存储在扩展名为。\App\u Data\PublishProfiles的下。pubxml@nasch:Solution Explorer>Project>Properties>PublishProfiles>your.PubXml我认为应该将其标记为answer,因为当前的答案对于排除整个文件夹,除非对其中的每个文件和新添加的文件执行此操作!这似乎是可能的。请签出。对于.NET Core,请参阅我使用Data\CernainFolder,因为我已将其放入“Data”文件夹中。。。您必须使用自己的文件夹路径
<Content Include="Uploads/
<None Include="Uploads/
<ItemGroup>
<Content Update="Data\CernainFolder\*.*">
<CopyToPublishDirectory>Never</CopyToPublishDirectory>
</Content>
</ItemGroup>