如何让SourceAFIS在Ubuntu上运行?

时间:2016-06-15 05:42:20

标签: c# .net winforms ubuntu mono

我试图在Ubuntu上使用SourceAFIS 1.7.0和mono,但是会出现一些错误。

1

  

$ mono DatabaseAnalyzer.exe

     

扫描文件夹TestDatabase

     

运行提取器基准

     

未处理的异常:System.IO.FileNotFoundException:无法加载   文件或汇编' PresentationCore,版本= 4.0.0.0,文化=中立,   公钥= 31bf3856ad364e35'或其中一个依赖项。

     

文件名:' PresentationCore,版本= 4.0.0.0,文化=中性,   公钥= 31bf3856ad364e35'

     

在DatabaseAnalyzer.DatabaseAnalyzer.RunExtractorBenchmark()   < 0x40674790   + 0x00033> in:0在DatabaseAnalyzer.DatabaseAnalyzer.RunMatcherBenchmark()< 0x40674600 +   0x000eb> in:0

     

在DatabaseAnalyzer.DatabaseAnalyzer.Run()< 0x40642a40 + 0x000bf>在   :0

     

在DatabaseAnalyzer.DatabaseAnalyzer.Main(System.String [] args)   < 0x4063bd50 + 0x00037> in:0

     

[ERROR]致命的未处理的异常:System.IO.FileNotFoundException:   无法加载文件或程序集' PresentationCore,Version = 4.0.0.0,   Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个   依赖。

     

文件名:' PresentationCore,版本= 4.0.0.0,文化=中性,   公钥= 31bf3856ad364e35'在   DatabaseAnalyzer.DatabaseAnalyzer.RunExtractorBenchmark()< 0x40674790   + 0x00033> in:0在DatabaseAnalyzer.DatabaseAnalyzer.RunMatcherBenchmark()< 0x40674600 +   0x000eb> in:0

     

在DatabaseAnalyzer.DatabaseAnalyzer.Run()< 0x40642a40 + 0x000bf>在   :0

     

在DatabaseAnalyzer.DatabaseAnalyzer.Main(System.String [] args)   < 0x4063bd50 + 0x00037> in:0

根据https://sourceforge.net/p/sourceafis/discussion/1051112/thread/dd8df289/#a006,应该在这里应用WinForms而不是WPF,并使用位图类来替换WPF的bitmapimage类,但我不知道如何准确地完成它。有没有人有过这样的经历?

这是原始函数使用的WPF位图类



  static MyPerson Enroll(string filename, string name)
        {
            Console.WriteLine("Enrolling {0}...", name);

            // Initialize empty fingerprint object and set properties
            MyFingerprint fp = new MyFingerprint();
            fp.Filename = filename;
            // Load image from the file
            Console.WriteLine(" Loading image from {0}...", filename);
            BitmapImage image = new BitmapImage(new Uri(filename, UriKind.RelativeOrAbsolute));
            fp.AsBitmapSource = image;
            // Above update of fp.AsBitmapSource initialized also raw image in fp.Image
            // Check raw image dimensions, Y axis is first, X axis is second
            Console.WriteLine(" Image size = {0} x {1} (width x height)", fp.Image.GetLength(1), fp.Image.GetLength(0));

            // Initialize empty person object and set its properties
            MyPerson person = new MyPerson();
            person.Name = name;
            // Add fingerprint to the person
            person.Fingerprints.Add(fp);

            // Execute extraction in order to initialize fp.Template
            Console.WriteLine(" Extracting template...");
            Afis.Extract(person);
            // Check template size
            Console.WriteLine(" Template size = {0} bytes", fp.Template.Length);

            return person;
        }




  1.   

    $ mono SourceAFIS.FingerprintAnalysis.exe
      无法加载入口点方法

  2. 如何通过更有意义的例外来解决这个问题?

2 个答案:

答案 0 :(得分:1)

  应该在这里应用WinForms而不是WPF并使用位图类   替换WPF的bitmapimage类,但我不知道该怎么做   究竟。有没有人有过这样的经历?

你知道怎么用C#语言编程吗?他们在该论坛中的意思是您需要将代码更改为不使用WPF库,而是使用Windows窗体UI工具包。

如果您尝试加载" PresentationCore"在运行时,这意味着它仍在尝试加载WPF。

答案 1 :(得分:0)

尝试安装mono-complete包,例如

apt-get install mono-complete

相关:Mono, failing to open executable

还要确保您已安装.NET Framework,例如使用winetricks

apt-get install winetricks
winetricks dotnet46

请参阅:Could not load file or assembly 'PresentationCore'

  

PresentationCore是.NET 4

此外,您可以尝试以下suggestions

  • IIS 中尝试在应用程序池的高级设置中启用32位应用程序
  • 配置身份验证,如下所示:

    • 禁用匿名身份验证。
    • 启用ASP.NET模拟。
    • 启用Windows身份验证。