Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态链接库,解决方案can';t负载组件_C#_.net_Dll_.net Core_Filenotfoundexception - Fatal编程技术网

C# 动态链接库,解决方案can';t负载组件

C# 动态链接库,解决方案can';t负载组件,c#,.net,dll,.net-core,filenotfoundexception,C#,.net,Dll,.net Core,Filenotfoundexception,最近,我开始学习如何在Visual Studio中使用C#创建动态链接库 我遵循了有关如何创建DLL的联机说明: 完成这些步骤后,我尝试将.dll文件添加到我的项目中 执行时,我收到以下消息: System.IO.FileNotFoundException:'无法加载文件或程序集 'MySql.Connect,版本=1.0.0.2,区域性=neutral,PublicKeyToken=null'。这个 系统找不到指定的文件。' 当我开始我的项目时,我选择了.NETFramework 4

最近,我开始学习如何在Visual Studio中使用C#创建动态链接库

我遵循了有关如何创建DLL的联机说明:

完成这些步骤后,我尝试将
.dll
文件添加到我的项目中

执行时,我收到以下消息:

System.IO.FileNotFoundException:'无法加载文件或程序集 'MySql.Connect,版本=1.0.0.2,区域性=neutral,PublicKeyToken=null'。这个 系统找不到指定的文件。'

当我开始我的项目时,我选择了.NETFramework 4.6.1。应用程序选项卡下属性文件中的目标框架被选择为.NET framework 2.0

应该引用该文件的项目的目标是.NETCore2Framework

我已经研究这个问题将近一周了,并在网上寻找解决方案。
非常感谢您的帮助。

您需要将DLL放在运行时可以找到的地方。最简单的方法是将它放在与.exe相同的目录中,但您还有其他选项(请参阅)。

您需要将DLL放在运行时可以找到它的地方。最简单的方法是将它放在与.exe相同的目录中,但您还有其他选项(请参阅)。

仔细决定要使用DLL的平台非常重要

当我开始我的项目时,我选择了.NET Framework 4.6.1

如果您的意思是在启动DLL项目时,那么您已经将可以使用此DLL的应用程序的类型限制为.NET Framework 4.6.1+

应用程序选项卡下的属性文件被选择为.Net Framework 2.0

如果我理解正确,您将DLL目标从.NET Framework 4.6.1更改为.NET Framework 2.0。这拓宽了兼容性,因此消费库可以是.NET Framework 2.0+。然而,这是以牺牲.NET Framework的所有较新功能为代价的

请注意,对.NETFramework2.0的官方支持(即修补程序)已经发布,而且较新的计算机不太可能安装它

应该引用该文件的项目的目标是.NETCore2Framework

这是你问题的症结所在。NET核心不是.NET框架。这是一个完全不同的平台

也就是说,.NET Core对引用.NET Framework程序集的支持有限,但它肯定不能与.NET Framework 2.0一起使用(这也是多年来不受支持的)。此外,这种“兼容性模式”可能意味着失去跨操作系统的支持,这是.NETCore的主要优点之一

选择1 因此,下意识的答案是,如果您想将DLL与.NET Core应用程序一起使用,就将其作为.NET Core的目标

选择2 但是,还有一个选项可以使.NET Framework 4.5+和.NET Core可移植的DLL成为您的DLL目标


有关将DLL更改为目标.NET标准的说明,请参阅。

仔细决定要使用DLL的平台非常重要

当我开始我的项目时,我选择了.NET Framework 4.6.1

如果您的意思是在启动DLL项目时,那么您已经将可以使用此DLL的应用程序的类型限制为.NET Framework 4.6.1+

应用程序选项卡下的属性文件被选择为.Net Framework 2.0

如果我理解正确,您将DLL目标从.NET Framework 4.6.1更改为.NET Framework 2.0。这拓宽了兼容性,因此消费库可以是.NET Framework 2.0+。然而,这是以牺牲.NET Framework的所有较新功能为代价的

请注意,对.NETFramework2.0的官方支持(即修补程序)已经发布,而且较新的计算机不太可能安装它

应该引用该文件的项目的目标是.NETCore2Framework

这是你问题的症结所在。NET核心不是.NET框架。这是一个完全不同的平台

也就是说,.NET Core对引用.NET Framework程序集的支持有限,但它肯定不能与.NET Framework 2.0一起使用(这也是多年来不受支持的)。此外,这种“兼容性模式”可能意味着失去跨操作系统的支持,这是.NETCore的主要优点之一

选择1 因此,下意识的答案是,如果您想将DLL与.NET Core应用程序一起使用,就将其作为.NET Core的目标

选择2 但是,还有一个选项可以使.NET Framework 4.5+和.NET Core可移植的DLL成为您的DLL目标


有关将DLL更改为目标.NET标准的说明,请参阅。

从第二段到最后一段提到了.NET的3个不同版本。这可能会引起问题,或者是打字错误。您还应该纠正您在解决方案中所做的工作。不要发布你所遵循的教程的链接告诉我们你做了什么是的@Dave我也这么认为,但这些是它设置为默认的版本。我无法为我的应用程序选择任何其他版本(它只允许.Net Core)..DLL应用程序构建也不允许使用.Net Framework 2.0以上版本。我学到的是,您需要证明您尝试过做一些事情,教程中可能有错误,因为VS最近更新过,并且过程可能发生了轻微更改。所以我发布了这些链接来证明我试过@Davey。你的第二段到最后一段提到了.net的3个不同版本。这可能会引起问题,或者是打字错误。您还应该纠正您在解决方案中所做的工作。不要发布你所遵循的教程的链接告诉我们你做了什么是的@Dave我也这么认为,但这些是它设置为默认的版本。我无法为我的应用程序选择任何其他版本(它只允许.Net Core)。DLL应用程序版本也不允许.Net Framework 2.0以上的版本。我了解到,您