发布选项以递归方式创建cshtml文件

时间:2016-10-18 20:03:34

标签: asp.net-core coreclr

我有ASP.NET Core应用程序。在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 \发展\ netcoreapp1.0 \发布\观

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

  

C:\ MySolutionDir \ SRC \ MyUIProjectDir \ BIN \发展\ netcoreapp1.0 \发布\ BIN \发展\ netcoreapp1.0 \发布\观

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

  

C:\ MySolutionDir \ SRC \ MyUIProjectDir \ BIN \发展\ netcoreapp1.0 \发布\ BIN \发展\ netcoreapp1.0 \发布\ BIN \发展\ netcoreapp1.0 \发布\观

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

我还有其他环境,有像

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

发布命令还会复制来自" Staging"的cshtml。和"生产"进入发展。

如何修复此问题,以便发布命令仅复制来自' MyUIProjectDir \ Views'文件夹(但不是从bin)

3 个答案:

答案 0 :(得分:3)

**/*模式也会在wwwroot文件夹中查找文件。您有两个选择:

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

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

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

答案 1 :(得分:2)

作为Set said in his comment,您应该包含Views文件夹,因为**将搜索解决方案中的所有位置,包括wwwroot文件夹。

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

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

答案 2 :(得分:0)

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

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

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