msbuild 的 GenerateRuntimeConfigurationFiles 的目的是什么?
What is the purpose of msbuild's GenerateRuntimeConfigurationFiles?
我将 netcore1.1 项目升级到新的 VS2017/csproj。
仅在我的测试项目中,它添加了:
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
我 some digging 发现它在 bin 目录中生成了这些文件:
ProjectName.Tests.runtimeconfig.json
ProjectName.Tests.runtimeconfig.dev.json
这个设置和这些文件是什么,我为什么需要它们?
为什么它们只为我的测试项目生成?
这些特定于 .NET Core 项目并指定
- 使用哪个运行时间和版本。通常
Microsoft.NETCore.App
。 "host framework resolver" 在 shared
文件夹中查找匹配的文件夹(例如 C:\Program Files\dotnet\shared\Microsoft.NETCore.App.1.2
)。这一点很重要,因为可以并排安装多个 运行 次,当您 运行 dotnet myapp.dll
. 时,主机需要知道使用哪个
- 运行时间的其他选项。最突出的可能是在 "desktop" 和 "server" 模式之间切换的垃圾收集设置。当您在 csproj 文件中设置
<ServerGarbageCollection>true</ServerGarbageCollection>
时,这将导致设置 runtimeconfig.json
中的值。 (此 属性 对于 Web 项目默认为 true)
- 主机的其他选项。
additionalProbingPath
例如设置为包含已恢复包的本地 NuGet 缓存。您可能已经注意到,引用 NuGet 包不会导致将其 dll 文件复制到输出目录(默认情况下)。主机使用额外的探测路径来查找在此位置引用的包/dll(实际上它是一个两步查找:deps.json
告诉主机要使用哪些包,这个 属性 告诉在哪里寻找这个包裹)。由于这仅用于开发,不应最终出现在已发布的输出中(因为这意味着依赖目标上的 NuGet 缓存),此设置被放入 runtimeconfig.dev.json
.
"Classic" .NET Framework 项目也有让应用程序设置一些 运行 时间设置的概念。这是通过拥有一个 .exe.config
文件(如果存在的话,它将从项目中的 App.config
文件构建)来实现的。您可以将 runtimeconfig.json
视为 "the new .exe.config
",但只有一些重叠问题。
我将 netcore1.1 项目升级到新的 VS2017/csproj。
仅在我的测试项目中,它添加了:
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
我 some digging 发现它在 bin 目录中生成了这些文件:
ProjectName.Tests.runtimeconfig.json
ProjectName.Tests.runtimeconfig.dev.json
这个设置和这些文件是什么,我为什么需要它们?
为什么它们只为我的测试项目生成?
这些特定于 .NET Core 项目并指定
- 使用哪个运行时间和版本。通常
Microsoft.NETCore.App
。 "host framework resolver" 在shared
文件夹中查找匹配的文件夹(例如C:\Program Files\dotnet\shared\Microsoft.NETCore.App.1.2
)。这一点很重要,因为可以并排安装多个 运行 次,当您 运行dotnet myapp.dll
. 时,主机需要知道使用哪个
- 运行时间的其他选项。最突出的可能是在 "desktop" 和 "server" 模式之间切换的垃圾收集设置。当您在 csproj 文件中设置
<ServerGarbageCollection>true</ServerGarbageCollection>
时,这将导致设置runtimeconfig.json
中的值。 (此 属性 对于 Web 项目默认为 true) - 主机的其他选项。
additionalProbingPath
例如设置为包含已恢复包的本地 NuGet 缓存。您可能已经注意到,引用 NuGet 包不会导致将其 dll 文件复制到输出目录(默认情况下)。主机使用额外的探测路径来查找在此位置引用的包/dll(实际上它是一个两步查找:deps.json
告诉主机要使用哪些包,这个 属性 告诉在哪里寻找这个包裹)。由于这仅用于开发,不应最终出现在已发布的输出中(因为这意味着依赖目标上的 NuGet 缓存),此设置被放入runtimeconfig.dev.json
.
"Classic" .NET Framework 项目也有让应用程序设置一些 运行 时间设置的概念。这是通过拥有一个 .exe.config
文件(如果存在的话,它将从项目中的 App.config
文件构建)来实现的。您可以将 runtimeconfig.json
视为 "the new .exe.config
",但只有一些重叠问题。