Publishoptions递归创建cshtml文件

Publishoptions recursively creating cshtml files

我有 ASP.NET 核心应用程序。在 project.json 中,我将发布选项配置如下

"publishOptions": {
    "include": [
      "wwwroot",
      "**/*.cshtml",
      "appsettings.json",
      "appsettings.development.json",
      "appsettings.staging.json",
      "appsettings.production.json",
      "web.config"
    ]
  },

我正在使用 vs 2015 为 asp.net 核心 Web 项目创建的默认项目模板。所以所有 .cshtml 文件都在 Views 文件夹下。

当我执行 dotnet publish -c Development 命令时,dotnet 在

下发布视图

C:\MySolutionDir\Src\MyUIProjectDir\bin\Development\netcoreapp1.0\publish\Views

然后我再次执行相同的命令。这次 bin\Development\netcoreapp1.0\publish\Views 下已经存在 cshtml 文件所以这次发布命令额外创建以下文件夹结构

C:\MySolutionDir\Src\MyUIProjectDir\bin\Development\netcoreapp1.0\publish\bin\Development\netcoreapp1.0\publish\Views

如果我再次执行该命令,它会创建

C:\MySolutionDir\Src\MyUIProjectDir\bin\Development\netcoreapp1.0\publish\bin\Development\netcoreapp1.0\publish\bin\Development\netcoreapp1.0\publish\Views

它基本上递归地查找 "MyUIProjectDir" 下的 .cshtml 文件并继续创建 Views 文件夹的深层层次结构。

我还有其他环境,有像

这样的文件夹
 C:\MySolutionDir\Src\MyUIProjectDir\bin\Staging
 C:\MySolutionDir\Src\MyUIProjectDir\bin\Production

发布命令还会将 "Staging" 和 "Production" 中的 cshtml 复制到开发中。

我该如何解决这个问题,使发布命令只从 'MyUIProjectDir\Views' 文件夹(而不是从 bin)复制 cshtml

一样,您应该包括 Views 文件夹,因为 ** 将在您的解决方案中的任何地方搜索,包括 wwwroot 文件夹。

从其他环境文件夹复制的 .cshtml 文件的行为相同,因为 ** 将从项目的根文件夹开始递归搜索。

"publishOptions": {
    "include": [
      "wwwroot",
      "Views",
      "appsettings.json",
      "appsettings.development.json",
      "appsettings.staging.json",
      "appsettings.production.json",
      "web.config"
    ]
  },

**/* 模式还将在 wwwroot 文件夹中查找文件。您有 2 个选择:

  • 修改 **/ *.cshtml 模式以仅在特定文件夹中搜索 .cshtml,或者直接包含包含 .cshtml 文件的文件夹(我猜是 Views) :

    "publishOptions": {
       "include": [
          "wwwroot",
          "Views",
          ...
       ]
    }
    
  • 不发布位于 wwwroot 文件夹中的 .cshtml 文件。使用 publishOptions 中的 exclude 部分:

    "publishOptions": {
      "exclude": [
          "wwwroot/*.cshtml"
      ]
    

唯一对我有用的是明确排除 bin 和 obj 文件夹。

"publishOptions": {
"include": [
  "wwwroot",
  "Views",
  "appsettings.json",
  "web.config"
],
"exclude": [
  "bin",
  "obj"
]  }

我还必须在发布前删除 AppData\Local\temp\PublishTemp 文件夹中的所有内容。出于某种原因它仍在使用旧设置,直到我从 PublishTemp 文件夹中删除所有内容。