引用的DLL的NuGet未找到工作的Visual Studio

问题描述:

我加了的NuGet库调用Mpir.Net,擅长操纵巨大的数字比内置的BigInteger类做要快得多。当我添加它时,Visual Studio 2017能够找到该DLL,将其添加到我的引用中,并根据DLL中定义的变量和函数提供建议。 Visual Studio显然能够找到DLL,这与来自具有类似问题的人的许多问题不同。引用的DLL的NuGet未找到工作的Visual Studio

的问题是,当我运行程序,它说xmpir64.dll没有发现,尽管Visual Studio可以参考在代码编辑器里面的东西。

我试过改变目标.NET版本无济于事。问题是什么? 作为一个方面说明,我对C#和Visual Studio很新,所以请在回答时记住这一点。 Here是一个链接到我的解决方案资源管理器的图片。

+0

您是否还可以包含项目中包含的Mpir.Net.dll文件的属性视图? – CodexNZ

+0

@CodexNZ我得到它的工作。谢谢! – Byte11

Mpir.Net是一个非托管库(GMP)的包装。当它说它无法找到DLL时,这是因为它正在寻找您的项目文件夹中的非托管程序(xmpir64.dll)(而不是引用中的托管程序,它是包装程序)。

你可能只需要点击xmpir64.dll(和X32一个太),看看它在右下角的属性,并确保副本输出目录设置为“复制总是”。

作为一个侧面说明,Mpir.NET不出售其非托管资源的正确,所以如果你有一个大的内存泄漏不要感到惊讶。我不认为我会将它用于商业代码。

+0

我已经经历了50个箍,以找到一个支持小数的快速BigInteger库。你知道任何没有任何重大缺陷的C#吗?我不知道Mpir有内存泄漏问题。我没有使用这个商业应用程序,但我用它来记忆很重的东西。我应该只使用内置的BigInteger吗? – Byte11

+0

它的工作!为什么我要将它设置为始终复制? – Byte11

+0

这就是我们最终做的,但我们正在使用低于256位的整数。我们还需要创建并销毁它们中的很多,并且很快就发现了内存泄漏。 – MineR