【问题标题】:How to send a form/notification to user from a DLL?如何从 DLL 向用户发送表单/通知?
【发布时间】:2021-08-10 22:36:22
【问题描述】:

我有一个 DLL 。 并希望从此 dll 向用户(将引用我的 dll)发送表单/通知。

我只想在我的 dll 中的一个类中构建一个函数,这样 ->,一旦用户运行他的本地程序并引用我的 dll -> 并调用 dll 中存在的函数 -> 该特定函数应该显示向用户发送表单/通知(来自 dll 中的某些功能)?有没有其他相同的方法?

我尝试将库从类库类型转换为 Winform,这会将其属性更改为可执行文件,并且需要存在主函数。但我只是在构建一个可以引用的库,当用户调用时会在他们的末尾生成一个表单?

我尝试了 toast 通知,但没有 .show() 方法在 new ToastContentBuilder() 中不起作用,而我从我的库中调用它。否则作为一个独立的控制台应用程序,它工作得很好


有没有办法我可以在与我的库相同的解决方案中创建一个用于 toast 通知的项目,然后从我的主库中的一个类中调用 -> 这个不同项目中存在的用于 toast 通知的函数并会产生吐司通知。

【问题讨论】:

    标签: visual-studio winforms dll dllimport toast


    【解决方案1】:

    您可以尝试以下步骤从 dll 向用户发送通知。

    首先,请创建一个名为TestDll的类库(目标框架为.NET Core 3.1)。

    其次,可以在类库中安装nuget-packageMicrosoft.Toolkit.Uwp.Notifications

    第三,可以添加一个类,参考如下代码示例。

    namespace TestDll
    {
        public class Example
        {
            public void Setnotifications()
            {
                new ToastContentBuilder().AddArgument("action", "viewConversation")
    .AddArgument("conversationId", 9813)
    .AddText("Ev2 Compiler Library")
    .AddText("Allow sending build Data to Microsoft")
    .AddButton(new ToastButton()
        .SetContent("Yes")
        .AddArgument("action", "reply")
        .SetBackgroundActivation())
        .AddButton(new ToastButton()
        .SetContent("No")
        .AddArgument("action", "like")
        .SetBackgroundActivation())
    .SetToastScenario(ToastScenario.Reminder)
    .Show();
            }
        }
    }
    

    第四,请重建类库并创建控制台应用程序(目标框架为.NET Core 3.1)。

    第五,我们可以将项目引用TestDll添加到控制台应用程序中,并在main方法中编写如下示例。

    static void Main(string[] args)
            {
                Example example = new Example();
                example.Setnotifications();
    
            }
    

    最后,我们可以在电脑右下角看到通知如下:

    另外,关于'toast notification but not .show() method'的问题可能是你使用了.net标准框架,你可以改成.net 核心 框架。

    【讨论】:

    • 等等!我做了 toast 通知的事情,并在我的 toast 上写了完全相同的事情。你从哪里得到这个 toast 通知的图像或者你自己建立的?这是恶作剧吗??
    • @plsHELP,我在运行应用程序后从屏幕右下角获取图像。您目前的问题是什么?
    • AddText("Ev2 编译器库") 。这部分 - 实际上我写这是我的代码参考我的项目。在这里看到同样的文字让我震惊。因此,我想知道这条线的来源。目前我的整个库都在 .net 框架中,而 .cspproj 没有提到它,它只是显示在依赖项中/因此,我对如何更改感到困惑。我在 .csproj 文件中将目标框架更改为 .net core 3.1,但我仍然收到有关 .net 标准的错误,并且它并没有脱离依赖项部分
    • @plsHELP,根据我的进一步测试,在我将目标框架更改为 .net core 3.1 后,对我来说没有错误。你重建项目了吗?如果还是不行,另一种解决方法是直接创建一个console app(.net core 3.1),而不是改变target-framework。
    • 在引用 .NET CORE 3.1 时会引发此错误:项目 '..\Ev2\Ev2.csproj' 的目标是 'netcoreapp3.1'。以“.NETStandard,Version=v2.0”为目标的项目不能引用它。该库在依赖文件中依赖于 .net 标准
    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多