Ookii-dialogs-wpf: 需要.Net Core 3.0预发行版本

创建于 2019-07-26  ·  10评论  ·  资料来源: ookii-dialogs/ookii-dialogs-wpf

需要.Net Core 3.0预发行版本

enhancement help wanted

最有用的评论

一个小小的麻烦,我们正在将WPF项目迁移到.NET Core,如果能够尽快迁移Ookii库,那将是很棒的。

所有10条评论

谢谢@stricq。

.NET Core 3.0支持绝对是一个目标。 不过,我可能会在RTM发行后开始着手这项工作,因此,如果您关心的是预发行版本,那么我很高兴获得PR

这个问题的当前状态是什么?

一个小小的麻烦,我们正在将WPF项目迁移到.NET Core,如果能够尽快迁移Ookii库,那将是很棒的。

我在Core 3.1项目中安装了现有框架版本,并向编译器发出警告,指出已使用4.8之前的各种框架版本(而不是Core 3.1)还原了该软件包,并且该软件包可能与我的项目不完全兼容。
但是,对于以下用法,它似乎可以编译并正常工作:

     var dialog = new Ookii.Dialogs.Wpf.VistaFolderBrowserDialog( );
     dialog.Description = "choose folder in which to store scripts for this project";
     dialog.RootFolder = Environment.SpecialFolder.MyComputer;  // not implemented
     dialog.ShowNewFolderButton = true;
     dialog.UseDescriptionForTitle = true;

     bool result = dialog.ShowDialog( this ).GetValueOrDefault( );

如果将Ookii代码粘贴到新的Core 3.1项目的文件中怎么办?
最好在VistaFolderBrowserDialog中实现RootFolder属性。

在.NET Core项目中使用.NET Framework程序集有两个后果:

  1. 该项目将仅在Windows上运行。 由于它是WPF项目,并且该库使用的基础API仅在Windows上可用,因此不必担心。
  2. 如果.NET Framework程序集使用.NET Core中不存在的某些API,则将引发运行时异常。 由于我们已经在.NET Core项目中使用该库已有一段时间了,并且没有发生任何此类异常,所以我想这也不是问题。

因此,通常来说,如果您可以忍受编译器警告,则在.NET Core项目中使用此库似乎很安全。 我仍然希望我们可以得到.NET Core版本。

TaskDialog在.NET Core 3.1中不起作用。 但是VistaFolderBrowserDialogProgressDialog没问题。

低于TaskDialog.ShowDialog()引发的异常。

System.EntryPointNotFoundException
在DLL'comctl32.dll'中找不到名为'TaskDialogIndirect'的入口点。

我也尝试过#7,但结果相同。

操作系统为Windows 10 1909。

复制

  1. 在Visual Studio 2019中创建WPF(.NET Core)项目。
  2. 将以下代码添加到MainWindow .ctor中。
    csharp TaskDialog taskDialog = new TaskDialog() { WindowTitle = "Title", MainIcon = TaskDialogIcon.Information, MainInstruction = "test", Content = "TEST", ExpandedInformation = "detail" }; taskDialog.Buttons.Add(new TaskDialogButton(ButtonType.Ok)); taskDialog.ShowDialog();
  3. 生成并运行。

@ haruby511我也有这个问题。 但是只需要在项目中进行一点编辑,库就可以访问TaskDialog

  1. 添加一个app.manifest。
  2. 打开清单文件。 您会看到以下内容:
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>

取消注释。

  1. 右键单击项目,然后单击属性。
  2. 在“应用程序”选项卡中,从列表中选择清单文件。

那应该解决问题。

GitHub通过PR#7的合并自动解决了这个问题,所以我要重新开始。 我计划在下个周末发布预发布软件包。

Ookii.Dialogs.Wpf 2.0.0-preview1已发布在nuget.org上

Install-Package Ookii.Dialogs.Wpf -Version 2.0.0-preview1

请在您的应用中进行测试,并报告您发现的所有问题。


感谢@ acemod13完成所有工作!

带有.NET 3.1支持的稳定版本已发布到nuget.org:Ookii.Dialogs.Wpf 2.0.0

Install-Package Ookii.Dialogs.Wpf -Version 2.0.0

注意:.NET Core 3.1上的WPF应用程序需要声明一个应用程序清单才能使用Ookii对话框。 清单是在.NET Framework应用程序中自动添加的,但是对于.NET Core 3.1而言,情况不再如此,因此开发人员需要做一些额外的步骤。 有关此存储库的自述文件的更多详细信息。


再次感谢@ acemod13的贡献!
/ cc @stricq @cheesi @lklauder @hillin @ haruby511 @vpenades @Agagamand @ NateTheGreat714 @andreasgrosche

此页面是否有帮助?
0 / 5 - 0 等级