先看一下错误
起因是因为在项目中引用了一个自己编写的dll类库,发布之后调用dll中的方法提示找不到此文件。
dotnet core 只支持引用项目和nuget中的dll,外部dll虽然也可以引用进项目,并且可以被vs识别,而且编译后也可以在bin文件夹下看到对应的dll。
但是,运行时并不会加载这些外部dll,因此在运行时就会收到找不到dll文件的异常。
在 github 上的 issue 中,曾经看到有一个人说这个问题在 dotnet core 2.0 会修复,,,然而并没有
因此需要在代码中去主动加载
在startup文件中的Main方法中增加以下代码
Assembly entry = Assembly.GetEntryAssembly();
string dir = Path.GetDirectoryName(entry.Location);//获取网站根目录,我把dll文件放在了根目录
var filePath = Path.Combine(dir, "AuthorizationUpload.dll");
AssemblyLoadContext.Default.LoadFromAssemblyPath(filePath);
完成