launchsettings.json, appsettings.json, web.config

46

我有几个疑问:

  1. 我发布了一个 ASP.NET Core 项目,但在 bin\Release\PublishOutput 中没有看到 launchsettings.json 文件。如果我使用 Octopus,我该如何基于服务器类型配置属性?

  2. 是否可以将 launchsettings.json 移动到根目录而不是 properties 下面?

  3. 如果我想要只使用一个像 appsettings.json 这样的 json 文件,我可以将两者合并到根目录吗?

  4. 是否可以使用 web.config 代替 launchsettings.json,如何实现?


13
launchSettings.json 只适用于 Visual Studio。除此之外,您试图做什么不清楚。 - Chris Pratt
一般而言,在Stack Overflow上,我们不鼓励在一个帖子中提出多个问题。希望您在以后的提问中遵循这个准则 :) - Will Barnwell
3
@Chris Pratt,最近我在 Linux 上托管了 ASP Core 应用程序。当我更改 launchSettings.json 文件中应用程序 URL 键的值并运行 dotnet run 命令时,托管将配置为此值。因此,我认为此文件对 dotnet run 命令也有影响。如果是这样,那么在 Program.cs 的 CreateDefaultBuilder() 方法中是否会读取此文件? - XPD
1
当使用dotnet run启动应用程序时: 如果有launchSettings.json文件,则会读取该文件。在launchSettings.json中的environmentVariables设置将覆盖环境变量。 - Fish
1个回答

47

你的问题答案:

  1. 如Chris Pratt在评论中提到的那样,launchSettings.json只被Visual Studio使用。你可以在Octopus中使用Octopus变量
  2. 发布应用程序时不需要launchSettings.json
  3. 如果有一些应用程序需要使用的设置,请将它们存储在appsettings.json中。这将使部署更容易,因为Octopus默认识别此文件。
  4. 这取决于您的要求。web.config由IIS使用,而不是直接由您的.NET Core应用程序使用,因此可能会应用IIS对您可以配置的限制。

提示。

  • 如果您有一些环境特定的变量,您可以将它们存储在环境特定的appsettings.json中,例如appsettings.Release.json
  • 您可以在appsettings.json文件中留下Octopus变量替换的占位符,特别是在环境特定的文件中,例如appsettings.Release.json可以包含一个配置值,如“#{ConnectionString}”,在部署期间,Octopus将使用实际的Octopus变量值替换此占位符。

感谢您的回复。Net Core没有web.config,那么IIS如何处理它?IIS是否也可以读取appsettings.json? - newbeedeveloper
1
如果您的项目中没有 web.config 文件,它将在发布时自动生成。如果已经有了该文件,则在发布时会进行转换以确保参数正确。请参阅 https://learn.microsoft.com/en-us/aspnet/core/publishing/iis?tabs=aspnetcore2x。 而 IIS 无法使用 appsettings.json 文件,只有您的应用程序可以使用。 - Ignas
@OffirPe'er,您在应用程序中使用applicationurl是用于什么目的?您的所有应用程序都是不同的产品,而不仅仅是同一应用程序的另一个实例吗? - Ignas
2
为什么dotnet watch run --launch-profile "launchsettings.json中的某个配置文件"会起作用,如果'launchSettings.json只被Visual Studio使用'? - Lei Yang
2
以下是有关编程的内容,需要从英语翻译成中文。请仅返回已翻译的文本:此答案需要制作成博客文章。 - John Nyingi
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接