当我在命令行中发出以下命令时:
dotnet publish -o "./../output" -c Release
The dotnetcli
正确发布项目。然而,它并不复制appsettings.Production.json
文件,仅appsettings.json
.
为什么是这样?我已经用谷歌搜索并阅读了官方核心文档,但还没有找到正确的环境appsettings.json
应该最终出现在发布输出中。
我应该复制吗appsettings.Production.json
手动到发布的文件夹?
Update:
对于当前(新).csproj 格式 the CopyToPublishDirectory
应该使用属性。它决定是否将文件复制到发布目录,可以具有以下值之一:
因此,将下一部分添加到您的.csproj
:
<ItemGroup>
<None Include="appsettings.Production.json" CopyToPublishDirectory="Always" />
</ItemGroup>
调查@诺弗回答 and SO 发布时排除或包含文件有关发布期间文件控制的更多信息。
“在你的project.json
文件你有该部分publishOptions
与小节include
,其中您已经有一些文件,例如“appsettings.json”:
"publishOptions": {
"include": [
"appsettings.json",
"hosting.json",
"project.json",
"web.config"
]
},
你应该添加"appsettings.Production.json"
到这个数组中。
根据评论更新:
请记住,所有appsettings.*.json
文件如appsettings.development.json
, appsettings.staging.json
and appsettings.production.json
总会在所有环境中结束。你不能简单地使用project.json
,因为它不支持任何条件规则。将来,当project.json
将换回来 to msbuild
and .csproj
。如果这对您的应用程序至关重要,请考虑使用其他配置存储,例如环境变量、数据库等。
-
请注意,该顺序很重要,因为如果设置存在于多个位置,则确定将应用哪些设置。从文档:
指定配置源的顺序很重要,因为这确定了设置在多个位置存在时应用的优先级。在下面的示例中,如果 appsettings.json 和环境变量中存在相同的设置,则将使用环境变量中的设置。如果一项设置存在于多个位置,则指定的最后一个配置源“获胜”。 ASP.NET 团队建议最后指定环境变量,以便本地环境可以覆盖部署的配置文件中设置的任何内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)