https://blog.csdn.net/sharphou/article/details/80746551
遇到的问题:
刚升级vs 2017进行dotnet core开发时,引用了之前封装好的dll,进行使用。引用、编译都正常,只是在运行的时候提示找不到方法或命名空间。然后在网上找到了一种临时的方案,启动启动时,动态加载dll。
private static void TryLoadAssembly()
{
Assembly entry = Assembly.GetEntryAssembly();
//找到当前执行文件所在路径
string dir = Path.GetDirectoryName(entry.Location);
string entryName = entry.GetName().Name;
//获取执行文件同一目录下的其他dll
foreach (string dll in Directory.GetFiles(dir, "*.dll"))
{
if (entryName.Equals(Path.GetFileNameWithoutExtension(dll))) { continue; }
//非程序集类型的关联load时会报错
try
{
AssemblyLoadContext.Default.LoadFromAssemblyPath(dll);
}
catch (Exception ex)
{
}
}
}
以上是在dotnet core里面强制引用的dll的方式。
引用包的方式:
1. 用vs2017打开之前的库的项目,在nuget包管理控制台执行: dotnet pack,就完成了打包的过程。
会在项目的bindebug目录下生成后缀为nupkg的文件,这就是包文件。
将包拷贝到
自己新建的包目录,然后项目中就会看到自己的包,右边点击安装就可以了。
安装后在项目中直接使用库里面的方法和类。