问题的简短版本:
.NET Core 3 中是否有任何方法可以使用与<probing>app.config 中的元素相同的规则来指定本地探测路径?additionalProbingPaths似乎不起作用。
问题的长版:
我正在将一个项目从 .NET Framework 迁移到 .NET Core 3。在原始项目中,我在 lib/ 文件夹中保留了许多辅助 dll。这很好用,因为我在 中设置了探测路径App.exe.config,如下所示:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="lib" />
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)
但是,将项目转换为 .NET Core 3 后,程序将无法运行,说找不到 dll。将App.exe.config仍然存在,并且仍在读/使用,因为它也包含了对System.Configuration参数信息,程序的一部分也可正常工作。
我已经确定有一个新的 json 文件存储程序的配置信息,在App.runtimeconfig.json. 它是自动生成的,默认情况下不包含其他探测路径,但App.runtimeconfig.dev.json文件包含一些。
现在,我无法使用 .dev.json 文件中的路径,因为这些路径指向本地用户目录,并且不能用于部署。但是,我可以通过使用runtimeconfig.template.json项目目录中的模板文件 ( )将我自己的版本添加到主 runtimeconfig中。这会将属性添加到runtimeOptions主 runtimeconfig 文件中的分组中。模板代码为:
{
"additionalProbingPaths": [
"lib"
]
}
Run Code Online (Sandbox Code Playgroud)
App.runtimeconfig.json文件的最终输出是:
{
"runtimeOptions": {
"tfm": "netcoreapp3.0",
"framework": {
"name": "Microsoft.WindowsDesktop.App",
"version": "3.0.0-preview6-27804-01"
}, …Run Code Online (Sandbox Code Playgroud)