问题的简短版本:
.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) 我有一个包含3个项目的解决方案.其中2个项目引用了log4net和其他几个DLL.
当我创建安装包并为每个项目添加项目输出时 - 它将DLL放入主"应用程序文件夹"中.如果我将这些DLL拖到我在安装项目中创建的单独文件夹中,应用程序将无法运行"无法找到log4net".我希望这些DLL引用真的像"bin"或任何名称,只是不是主文件夹,他们添加混乱 - 我只是想在我的主文件夹中的2.exe.
我尝试在每个项目中添加一个引用路径指向"bin"文件夹.然后在安装项目中,我添加了一个名为"bin"的输出文件夹,并将DLL移动到该文件夹中,仍然无效.
我错过了什么!我花了几个小时环顾四周试图弄清楚我做错了什么,也许这就是我出生的方式!谢谢你的帮助!