我有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)
答案 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文件夹中的所有内容。