问题的简短版本:
.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) 我有一个程序,我正在尝试迁移到.NET Standard/Core.该库的命令行界面是使用netcoreapp1.0的目标框架构建的.我尝试将其发送给只安装了.NET Core 1.1的测试人员(使用不同的操作系统).该程序将无法运行,并给出错误:
The specified framework 'Microsoft.NETCore.App', version '1.0.1' was not found.
- Check application dependencies and target a framework version installed at:
/usr/share/dotnet/shared/Microsoft.NETCore.App
- The following versions are installed:
1.1.0
- Alternatively, install the framework version '1.0.1'.
Run Code Online (Sandbox Code Playgroud)
这是预期的吗?据我了解,每个核心/标准版本都是前一版本的严格超集.因此,我预计一个针对1.0的程序仍然可以在1.1的系统上运行,而不是必须针对每个安装版本进行多目标.
更一般地说,我如何设置,以便我不必担心以后只有较新版本的.NET Core无法运行该程序的用户?