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 文件夹中删除所有内容。
我有 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 文件夹中删除所有内容。