ASP.NET Core 发布排除文件夹(或 .json 文件)

Posted

技术标签:

【中文标题】ASP.NET Core 发布排除文件夹(或 .json 文件)【英文标题】:ASP.NET Core Publish Exclude Folder (or .json files) 【发布时间】:2018-11-15 00:37:44 【问题描述】:

我有一个 asp core 2.1 项目,我正在尝试通过网络部署发布。

我有一个名为“Angular”的文件夹,里面是我的源文件(包括一些用于 Angular 配置的 .json 文件)——这些文件(通过单独的进程“ng build”)构建到 wwwroot/app 目录中发布。因此,我不希望这个 Angular 目录中的任何内容最终出现在已发布的文件夹中。但我仍然希望 Angular 文件夹显示在项目/解决方案资源管理器/在文件中查找。

目前,它正在发布包含所有 .json 文件的 Angular 文件夹。显然这很糟糕,我需要阻止这种情况发生。我很确定这是因为这个... https://github.com/aspnet/websdk/blob/dev/src/ProjectSystem/Microsoft.NET.Sdk.Web.ProjectSystem.Targets/netstandard1.0/Microsoft.NET.Sdk.Web.ProjectSystem.props#L32

我正在使用以下命令发布:

dotnet publish C:\blah\ -c Release /p:PublishProfile=WebDeployProfile

(有时也可以通过 Visual Studio Publish 使用相同的配置文件,但频率较低 - 我注意到这些功能不同,我觉得这很奇怪)

我在 .csproj 和 .pubxml 中尝试了很多不同的东西,这变得越来越荒谬,而且我目前认为 msbuild/deploy 完全是一团糟,而且非常糟糕。

我希望有人可以帮助我完成一件极其简单易行的事情 - 从发布中排除文件夹(同时将其留在项目中)。

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。

我有一个文件夹,其中包含多个 json 文件,发布过程拾取并发送到发布输出。

要排除诸如“FolderYouDontWant”之类的文件夹,请将以下内容添加到您的 .csproj 文件中:

<ItemGroup>
    <Content Update="FolderYouDontWant\**\*.*" CopyToPublishDirectory="Never" />
</ItemGroup>

如果您有要排除的特定文件而不是整个文件夹,请使用确切的文件路径,例如:

<ItemGroup>
    <Content Update="FolderWithFile\dont-want.json" CopyToPublishDirectory="Never" />
</ItemGroup>

如果您有多个路径,您可以将所有内容元素添加到同一个 ItemGroup

【讨论】:

这对我使用带有 ASP Net Core 的 RIDER 很有用,谢谢!【参考方案2】:
  <ItemGroup>
    <Content Update="appsettings*.json" CopyToPublishDirectory="Never" /> 
  </ItemGroup>

【讨论】:

请在您的答案中添加一些描述/解释,并解释它是如何工作并解决问题的。 您的 .csproj 文件以“appsettings”开头所有“appsettings.test”等删除发布文件

以上是关于ASP.NET Core 发布排除文件夹(或 .json 文件)的主要内容,如果未能解决你的问题,请参考以下文章

[Asp.Net Core]IIS部署

如何对 asp.net core Blazor App 中的 oAuth 身份验证进行故障排除

[Asp.Net Core]IIS部署

需要帮助对 linux Docker 中的 .NET Core 2.1 API 进行故障排除

在 ASP.NET Core MVC6 中将文件和模型发布到控制器

ASP.NET Core appsettings.json 文件