我将netcore1.1项目升级到新的VS2017 / csproj。
仅在我的测试项目中,它添加了:
<PropertyGroup>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
</PropertyGroup>
我做some digging以发现它在bin目录中生成这些文件:
ProjectName.Tests.runtimeconfig.json
ProjectName.Tests.runtimeconfig.dev.json
这个设置和这些文件是什么,为什么我需要它们?
为什么他们只为我的测试项目生成?
答案 0 :(得分:7)
这些特定于.NET Core项目并指定
Microsoft.NETCore.App
。 “主机框架解析程序”在shared
文件夹中查找匹配的文件夹(例如C:\Program Files\dotnet\shared\Microsoft.NETCore.App\1.1.2
)。这很重要,因为可以并排安装多个运行时,并且主机需要知道在运行dotnet myapp.dll
时要使用哪个运行时。<ServerGarbageCollection>true</ServerGarbageCollection>
时,这将导致设置runtimeconfig.json
中的值。 (对于Web项目,此属性默认为true)additionalProbingPath
设置为包含已还原包的本地NuGet缓存。您可能已经注意到,引用NuGet包不会导致其dll文件被复制到输出目录(默认情况下)。主机使用额外的探测路径来查找在此位置引用的包/ dll(实际上它是两步查找:deps.json
告诉主机要使用哪些包,此属性告知在哪里查找此包)。由于这仅用于开发,并且不应该在已发布的输出中结束(因为这意味着依赖于目标上的NuGet缓存),因此将此设置放入runtimeconfig.dev.json
。“经典”.NET Framework项目还有一个让应用程序设置一些运行时设置的概念。这是通过拥有一个.exe.config
文件(如果存在的话,将从项目中的App.config
文件构建)来实现的。您可以将runtimeconfig.json
视为“新.exe.config
”,但唯一有一些重叠的问题。