dll不在我的可执行文件中,在visual studio中工作但不在执行中
问题描述:
我是新来的社区。我的项目中有一个主要问题。我在学校,但这是一个个人项目,所以老师不会有任何帮助。 我在C#中使用Visual Studio工作。dll不在我的可执行文件中,在visual studio中工作但不在执行中
在我的项目中,我从POP3中的特定专用Gmail帐户收到邮件。我使用S22.POP3是因为它是一个免费的程序集,并且与我正在尝试做的事情非常吻合。
因此,这里是我的问题:当我使用的可执行文件我得到一个错误:
System.IO.FileNotFoundException
错误说,文件或组件丢失。
经过大量的搜索和尝试,我仍然不知道该怎么做。我查了一下关于参照的适当性的互操作性的东西,但它似乎不是要走的路。它在我使用程序集中的类时会产生一些错误。 然后,我抬头看DllImport,但我很缺乏经验,我根本不理解它。我试过这样的事情:
[DllImport("S22.Pop3.dll")]
static extern
但我不明白我在这里做什么,它很明显,它不起作用。我知道我至少需要把东西放在static extern
之后,但我不知道是什么?无论如何,这可能不是要走的路。
我也见过一些人在谈论ILMerge。但同样的问题,我不知道我在做什么。从我发现它是用于实现C++的文档。
请帮助我,如果您有时间,请尝试执行能够获取邮件的可执行文件。因为在Visual Studio中它工作正常。一旦可执行文件出现错误。
答
由于此库是托管代码,因此不需要使用DllImport
。
只需使用Nuget安装它就像this。
然后按照project page的教程进行操作。
这是第一个例子:
using System;
using S22.Pop3;
namespace Test {
class Program {
static void Main(string[] args) {
/* connect on port 995 using SSL */
using (Pop3Client Client = new Pop3Client("pop.gmail.com", 995, true))
{
Console.WriteLine("We are connected!");
}
}
}
}
你可以很容易地通过将参照项目解决这个问题,然后在那个特定的.dll和'CopyLocal ='财产'false变更为TRUE' – MethodMan