2017-05-19 27 views
0

我是新来的社区。我的项目中有一个主要问题。我在学校,但这是一个个人项目,所以老师不会有任何帮助。 我在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中它工作正常。一旦可执行文件出现错误。

+0

你可以很容易地通过将参照项目解决这个问题,然后在那个特定的.dll和'CopyLocal ='财产'false变更为TRUE' – MethodMan

回答

0

由于此库是托管代码,因此不需要使用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!"); 
      } 
     } 
    } 
} 
相关问题