【问题标题】:UWP FullTrustProcess can't load dllUWP FullTrustProcess 无法加载 dll
【发布时间】:2018-11-01 16:30:54
【问题描述】:

我正在使用 uwp 和 winforms 项目作为完全信任进程。在 winF 项目中,我通过 NuGet 添加了对 Dotras.dll 的引用。 dll被添加到引用中,一切看起来都不错,直接从winforms启动效果很好。 但是在启动 UWP 和调用 fullTrustProcess 时(连接正常,消息已发送)并尝试调用 Dotras.dll 时抛出异常。

无法加载文件或程序集“DotRas,版本=1.3.5166.33435,Culture=neutral,PublicKeyToken=b378f04384b7892a”或其依赖项之一。系统找不到指定的文件。

我尝试添加对 UWP 项目的引用,但它不允许导致目标是 .net 核心而 DotRas 是 .net 框架。 任何提示在哪里放置 dll 以使其工作?谢谢!

【问题讨论】:

    标签: c# uwp desktop-bridge


    【解决方案1】:

    确保 exe 和 dll 部署到同一个文件夹。

    这里是如何。

    在Visual Studio中打开项目,有一个Assets文件夹,一般用来存放logo图片。

    将exe和dll都放入这个文件夹,右键文件夹,在菜单中选择“添加新项目”,将它们的Build Action设置为Content,这样在应用部署时它们将被复制到C:\Program Files\WindowsApps\YouPackageFamilyName\中的安装目录,在同一个Assets文件夹下。

    在appxmanifest文件中,确保可执行路径正确。

    <desktop:Extension Category="windows.fullTrustProcess" Executable="Assets\YourWinForms.exe">
    </desktop:Extension>
    

    编辑:不一定是Assets文件夹,关键是把dll添加到项目中,Build Action设置为Content,和exe放在同一个文件夹.

    【讨论】:

    • 错误。 Dotras.dll 是一个 .net framework 库。你不能在 UWP 项目中加载它,因为它是 .net core 项目。
    • 它不是引用 dll,它是“添加新项目”,您可以将几乎任何文件添加到项目中,只要它的 Build ActionContent
    • 当然可以。使用相同的结果,您可以创建一个空文本文件并将其重命名为“Dotras.dll”。抛出异常是因为应用程序试图加载 Dotras.dll,所以如果你添加它,FileNotFoundException 将被替换为BadImageException。这有什么帮助?
    • 也许你还没有尝试过FullTrustProcessLauncher,这是一种从 UWP 中调用 win32 应用程序的方法,很像 Process.Start 它将产生一个新进程,这是这个问题的上下文。 dll没有加载到UWP app的进程中,是加载到单独的WinForm进程中,所以不会抛出BadImageException
    • 哦,我明白了,你在哪里,我很抱歉误导了 cmets
    猜你喜欢
    • 2017-12-21
    • 2017-02-15
    • 1970-01-01
    • 2017-06-26
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多