C# - 将来自一个项目的源嵌入另一个项目

时间:2016-05-31 11:26:33

标签: c# pdf dll

我有一个独立的C#应用​​程序,我在其中成功使用MoonPDF(https://github.com/reliak/moonpdf)在我的应用程序主窗口中显示PDF文件。

我现在正尝试将此功能添加到另一个C#应用程序,并通过将第一个应用程序中使用的代码复制到第二个应用程序来完成此操作。

然而,虽然我的代码编译,并且应用程序加载并正确运行,但当我尝试加载PDF文档(文件 - >加载 - >选择文档)以在第二个应用程序的窗口中显示它时,我得到一个运行时错误,上面写着:

DLLNotFoundException was unhandled

它抱怨MoonPDF库提供的一个DLL。

如果我点击查看详情'在Visual Studio中的异常中,InnerException只是说:null

我知道DLL就在那里,因为我已将其复制到那里,当我浏览到Windows文件浏览器中的那个位置时,我可以看到它。

我尝试用来打开PDF文档的功能是:

private void openFileMenuItem_click(object sender, RoutedEventArgs e)
    {
        /*Create Open File Dialog */
        Microsoft.Win32.OpenFileDialog OFDlg = new Microsoft.Win32.OpenFileDialog();

        /*Set filter for file extension and default file extension */
        OFDlg.DefaultExt = ".pdf"; 
        OFDlg.Filter = "PDF Documents (.pdf | *.pdf";

        /*Display OFDialog by calling ShowDialog method */
        Nullable<bool> result = OFDlg.ShowDialog();

        /*Get the selected filename and display in a text box */
        if(result == true)
        {
            /*Open document */
            string filename = OFDlg.FileName;
            docFP = OFDlg.FileName;

            Console.WriteLine("Panel height: " + PdfPanel.ActualHeight);

            try
            {
                PdfPanel.OpenFile(docFP);
            }catch(Exception ex){
                Console.WriteLine("Document could not be opened: {0}" + ex.InnerException);
            }
        }
    }

如果我已经将使用它们的源代码复制到{{1第二个项目中的文件,还是我需要在这个新位置内构建DLL?

修改

我已经添加了一块手表&#39;变量PdfPanel.OpenFile(docFP),并且在抛出异常时,&#39;观察&#39;说明:

.cs

但它显然确实如此,因为我正在为docFP指定一个值,在那里抛出异常......任何人都有任何建议为什么编译器认为变量不存在于这一点?

修改

我认为上面编辑中的错误可能是因为我忘记更改我试图运行应用程序的配置 - 它被设置为&#39; Debug&#39; &安培; &#39;任何CPU&#39; - 我已将其更改为&#39; x86&#39;,因为即使我正在运行64位版本的Windows,我尝试使用的DLL也是32位。

但是,当我现在尝试运行它时,我在error CS0103: The name 'docFP' does not exist in the current context 中得到try-catch,其中说:

  

在类型&#39; RiviamAgent.MainWindow&#39;上调用构造函数。匹配指定的绑定约束引发异常。&#39;行号&#39; 6&#39;和行位置&#39; 9&#39;。

XamlParseException说:

  

但是PresentationFramework.dll说:

  

WebKitBrowser

并且InnerException表示在我声明Source的实例的地方发生了异常:

StackTrace

进一步修改

我已使用WebKitBrowser块围绕对WebKit.WebKitBrowser browser = new WebKit.WebKitBrowser(); 的调用,现在我在控制台中获得以下输出:

  

抛出异常:&#39; System.ComponentModel.Win32Exception&#39;在WebKitBrowser.dll中

     

抛出异常:&#39; System.Reflection.TargetInvocationException&#39;在mscorlib.dll中

     

抛出异常:&#39; System.Reflection.TargetInvocationException&#39;在mscorlib.dll中

     

抛出异常:&#39; System.Xaml.XamlObjectWriterException&#39;在System.Xaml.dll

为什么我在DLL中遇到这些异常,以前我没有遇到任何问题?为什么我的应用程序现在抱怨它们之前抱怨的不同的DLL?我有什么想法可以解决这些问题吗?

1 个答案:

答案 0 :(得分:0)

我猜你在Visual Studio中工作。在这种情况下,您应该设置新的参考。在您的解决方案资源管理器中,应该有一个&#34;参考资料&#34;菜单项。右键单击它并单击&#34;添加引用&#34; (或类似的)。然后你需要点击按钮&#34;浏览&#34;并选择复制的DLL文件。

希望我能提供帮助。如果有任何问题,请发表评论。