如何在发布/部署Visual Studio 2013 Web应用程序时排除文件夹

19

我正在从Visual Studio 2013中发布Web应用程序。我需要包含不属于项目的文件夹,并排除一些文件夹(有些是项目的一部分,有些不是)。所以我进入了我的项目属性,将要部署的项字段设置为此项目文件夹中的所有文件,如下图所示:

enter image description here

然后我开始寻找一种方法来从此项目文件夹中的所有文件中排除文件夹。我发现这个页面,它明确说明:

Visual Studio界面未公开您可以配置的所有部署设置。例如,您无法使用UI来排除单个文件夹的部署。但是,您可以通过编辑存储配置设置的文件来实现此目的。对于每个发布配置文件,都有一个可以直接编辑的.pubxml文件。

这个页面链接到另一个页面,解释了如何编辑文件,但没有解释如何排除特定的文件夹。

我在其他网站上(包括这个)找到了如何在旧版本的Visual Studio中使用以下标记排除文件夹的说明:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
  ... 
  <ExcludeFilesFromDeployment>File1.aspx;File2.aspx</ExcludeFilesFromDeployment> 
  <ExcludeFoldersFromDeployment>Folder1;Folder2</ExcludeFoldersFromDeployment> 
</PropertyGroup>

但是在 Visual Studio 2013 中,似乎 csproj 文件的 XML 元素已经不再相关了。我曾经在某个地方(现在想不起来了)看到一个建议,说这个元素已经被移动到 [PublishProfileName].pubxml 文件中,但是尝试后并没有成功。

我相信在 Visual Studio 2013 中有一种方法可以实现这个功能,但是半天也想不出来。我在 Stackoverflow 和其他论坛上找到了许多相关问题,但是在 VS2013 中,它们中的任何解决方案都不适用于我。非常感谢任何帮助。


这是针对VS 2019的解决方案:https://dev59.com/clgQ5IYBdhLWcg3weD2E#66607054 - Randy Burden
3个回答

30

这些元素确实已经在Visual Studio 2012及以后的版本中移到了.pubxml文件中。关于排除文件和文件夹的部署,MSDN有相关文档

在Visual Studio Solution Explorer的Properties/Publish Profiles中找到相应的.pubxml文件,在PropertyGroup元素下添加一个新元素ExcludeFilesFromDeploymentExcludeFoldersFromDeployment,列出要排除的文件或文件夹,用分号分隔。

请注意,在我键入它们的时候,这些元素在Visual Studio 2015的IntelliSense选择中没有出现作为选项 - 但项目编译并且排除仍然起作用。


1
我注意到在VS 2015中,IntelliSense似乎不喜欢.pubxml文件中的<ExcludeFilesFromDeployment>标签。它能正常工作,只是会显示蓝色波浪线表示无效。 - nickvans
1
在 VS 2019 中,我的情况恰好相反。没有智能感知错误,但是文件没有被排除在部署之外 :( - Doug
1
对于使用 VS 2019 进行发布,似乎有些变化。请参阅:https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-3.1#selective-file-inclusion - Randy Burden
1
以上内容针对的是ASP.NET Core开发,因此可能不适用于发布ASP.NET项目。 - techSage
1
这个答案在VS 2019中仍适用于ASP.NET(非Core)项目。 - Theophilus

1
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
   .
   .
   .
  </PropertyGroup>
  <ItemGroup>
    <Content Update="appsettings.Development.json">
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </Content>
    <Content Update="appsettings.TestBed.json">
      <CopyToPublishDirectory>Never</CopyToPublishDirectory>
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </Content>
    <Content Update="wwwroot\files\**\*" CopyToPublishDirectory="Never" />
    <Content Update="wwwroot\originals\**\*" CopyToPublishDirectory="Never" />
  </ItemGroup>
</Project>

测试它在VS 2019和2022上是否可行,这是最佳解决方案。 - Mr. Squirrel.Downy

-4
在您的 cpproj 项目文件中,您可以通过以下方式添加那些不需要包含在发布过程中的文件夹和文件:
<Content Include="Documentation\**" CopyToPublishDirectory="Never" />

你的回答似乎消失了? - SGP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接