C# 无法从.NetCore应用程序中的GAC加载dll
我的示例控制台应用程序(比如App1)是使用.NETCore3.1开发的,它调用另一个.NETCoreDLL(比如Dll1)。我已经添加了“Copy Local=Yes”作为参考dll。我使用VisualStudio2019作为开发环境 它在直接场景中运行良好。是指,当我在App1中设置“Copy Local=Yes”时 我已经在GAC中注册了.Net核心dll(Dll1),并在App1中设置了“Copy Local=No” 现在我无法加载.NETCore(Dll1),它抛出以下异常 未处理的异常。System.IO.FileNotFoundException:无法加载文件或程序集“xxxxx,版本=1.0.0.0,区域性=中性,PublicKeyToken=66f432805192946d”。系统找不到指定的文件。 文件名:“xxxxx,版本=1.0.0.0,区域性=neutral,PublicKeyToken=66f432805192946d” 在xxxxx.Program.Main(字符串[]args) 我的疑问是: .NETCore是否支持从GAC调用dll 请帮我解决这个问题 问候,C# 无法从.NetCore应用程序中的GAC加载dll,c#,visual-studio-2019,.net-core-3.1,C#,Visual Studio 2019,.net Core 3.1,我的示例控制台应用程序(比如App1)是使用.NETCore3.1开发的,它调用另一个.NETCoreDLL(比如Dll1)。我已经添加了“Copy Local=Yes”作为参考dll。我使用VisualStudio2019作为开发环境 它在直接场景中运行良好。是指,当我在App1中设置“Copy Local=Yes”时 我已经在GAC中注册了.Net核心dll(Dll1),并在App1中设置了“Copy Local=No” 现在我无法加载.NETCore(Dll1),它抛出以下异常 未处理的异
哈里你的问题 .Net Core是否从全局程序集缓存(GAC)加载程序集 简短的回答: 没有 长答案: 当使用设置了
CopyLocal=false
的程序集时,这意味着程序集(.dll文件)将不会被放置到刚生成的任何程序集的输出目录中
此处,.Net Core的行为与.Net Framework不同:
在.Net框架中
一旦在执行代码中的某个地方使用了缺少的程序集,运行时环境将尝试搜索、查找并加载它。对于.Net Framework,这是在一个非常特定的环境中发生的,包括在可用时从GAC(全局程序集缓存)加载它
dotnetcore就是这样做的:
那些dotnetcore应用程序设计成独立的、易于处理的,并且不想依赖于他们的环境。你提供了他们需要知道的一切。因此,这些应用不会四处搜索丢失的DLL,也不会调查GAC。这是正常的部署方法,称为“自包含部署”
但是,有一种称为的方法可以帮助优化您的部署,方法是定义您的.Net核心应用程序不是“自包含”的,而是根据定义的“框架”(=其中定义了一组库)。这称为“依赖于框架的部署”
如果您需要有关.Net核心应用程序的框架相关部署的更多信息
看看这个
你的问题 .Net Core是否从全局程序集缓存(GAC)加载程序集 简短的回答: 没有 长答案: 当使用设置了
CopyLocal=false
的程序集时,这意味着程序集(.dll文件)将不会被放置到刚生成的任何程序集的输出目录中
此处,.Net Core的行为与.Net Framework不同:
在.Net框架中
一旦在执行代码中的某个地方使用了缺少的程序集,运行时环境将尝试搜索、查找并加载它。对于.Net Framework,这种情况会在非常特定的情况下发生,包括在可用时从GAC(全局程序集缓存)加载它
dotnetcore就是这样做的:
那些dotnetcore应用程序设计为独立的、易于处理的应用程序,并且不希望依赖于其环境。您可以将他们需要了解的所有信息与它们一起提供。因此,这些应用程序不会四处搜索丢失的DLL,也不会查看GAC。这是正常的部署方法,称为“自包含部署”
但是,有一种称为的方法可以帮助优化您的部署,方法是定义您的.Net核心应用程序不是“自包含的”,而是根据定义的“框架”(即定义了一组库的位置)进行部署。这称为“依赖于框架的部署”
如果您需要有关.Net核心应用程序的框架相关部署的更多信息
看看这个
.NET Core没有GACFrist的概念。试着了解一下.NET Core和.NET framework之间的区别。NET Core没有GACFrist的概念。试着了解一下.NET Core和.NET framework之间的区别