Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.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# 如何将DLL文件放入.NET framework_C#_.net_Dll - Fatal编程技术网

C# 如何将DLL文件放入.NET framework

C# 如何将DLL文件放入.NET framework,c#,.net,dll,C#,.net,Dll,很抱歉,如果这是一个明显的问题,但我是C#新手,正在尝试在项目中使用2个dll。我应该把它们放在哪里 我试图在一个空的C#项目中添加SoundTouch.dll作为引用,但Visual Studio表示要确保该文件是可访问的,并且是有效的程序集或COM组件。有人建议我将dll放在\bin\debug路径中,但它在哪里?谢谢你的帮助 每个项目在其项目目录下都应该有自己的\bin\debug(和\bin\release)目录结构,但在构建项目之前不会创建它们。至于无效程序集,听起来您的dll已损坏或

很抱歉,如果这是一个明显的问题,但我是C#新手,正在尝试在项目中使用2个dll。我应该把它们放在哪里


我试图在一个空的C#项目中添加SoundTouch.dll作为引用,但Visual Studio表示要确保该文件是可访问的,并且是有效的程序集或COM组件。有人建议我将dll放在\bin\debug路径中,但它在哪里?谢谢你的帮助

每个项目在其项目目录下都应该有自己的\bin\debug(和\bin\release)目录结构,但在构建项目之前不会创建它们。至于无效程序集,听起来您的dll已损坏或不是有效的.NET程序集


编辑:查看SoundTouch网站,有人已经为这个dll创建了一个适合与C#一起使用的包装,可以找到它

如果您的dll是.NET或COM dll,您只需在Visual Studio中添加一个引用即可。有关该过程的详细信息,请参阅

如果DLL是Win32 DLL(不公开COM接口),则可以通过平台调用(p/Invoke)机制与它进行接口

使用p/Invoke时,DLL必须位于.NET运行时可以解析的位置,并且您可以使用DllImport属性将入口点从DLL“拉”到C#代码中,例如

[DllImport("msvcrt.dll", EntryPoint="puts")]
.NET将在.exe所在的同一目录中搜索Win32 DLL。如果在Visual Studio下生成,将在项目文件夹下创建一个文件夹

bin\debug

用于调试生成或发布生成

bin\release


它是Win32 DLL还是COM DLL?太棒了,谢谢,海象!所以我把SoundTouch.dll放在项目的文件夹中,比如说它叫\SoundTouchTest\bin\Debug,对吗?我应该把SoundTouchSharp.cs放在哪里?谢谢是,\SoundTouchTest\bin\Debug对于dll应该可以。我会将SoundTouchSharp.cs包含在项目源代码文件夹中(在您的示例“\SoundTouchTest”中),并通过在解决方案资源管理器中右键单击并选择add->add Existing Item将其添加到项目中。太棒了,很高兴这能起作用。我刚刚把.cs文件做成了一个DLL,并把它放在了同一个位置上,这样做行吗?我还可能提出一个新问题,即如何尽快访问库中的方法。谢谢你的帮助!是的,应该行。请注意,这将只找到调试配置的dll。如果您想在发行版配置下进行构建,您需要将dll复制到\bin\Release.Perfect,那么为了安全起见,最好将这些dll放在那里。非常感谢你的帮助,里奇海象!:)谢谢,埃里克J!所以,如果VS不允许我通过给我这个错误消息来添加对它的引用,那么最好使用P/Invoke吗?