【问题标题】:How-to migrate old WinForms projects to the new VS2017 project format如何将旧的 WinForms 项目迁移到新的 VS2017 项目格式
【发布时间】:2017-06-22 10:23:52
【问题描述】:

我们目前正在将我们的项目升级到新的 VS2017 项目格式。这背后的主要原因是将一些库从 PCL 转换为 .NetStandard,并能够使用新项目格式附带的新内置 Nuget 包功能,从而摆脱整个 nuget/库引用/依赖问题。

[编辑] 迁移解决方案中所有项目的主要原因是防止在混合旧(仍在使用 .nuspec)和新格式项目时无法在 .nupkg 中获得正确的依赖项的问题

How-to migrate Wpf projects to the new VS2017 format 问题的答案帮助我们在转换项目的 WPF 部分方面取得了很大进展。但是,我们仍然有大量无法替换或升级的 Windows 窗体。

只需转换项目文件,为文件依赖项(对于 *.Designer.cs 和 *.resx 文件)添加适当的设置,我们就可以编译它。

我们现在如何声明项目项以制作 Visual Studio 2017 a) 将它们识别为 UserControl 或 Form ? b) 打开 WinForms 设计器工具以相应地编辑 .cs 或 Designer.cs 文件?

非常感谢任何有关寻找解决方案的提示。

【问题讨论】:

  • 使用 Upgrade Assistant 然后只需将 TargetFramework 更改为您想要的任何风格的 .NET。

标签: c# .net winforms visual-studio-2017 msbuild-15


【解决方案1】:

随着 .NET Core 3.0 的发布,现在支持 WinForms,但设计器支持目前计划为 Q4 2020 并且可以使用 Visual Studio 16.4 Preview 3 或更高版本进行预览,您必须设置 Tools ->Options->Preview Features->Use the Preview of Windows Forms Designer for .NET Core apps 复选框以启用此功能。

SDK 风格的项目应该如下设置...

<ProjectSdk="Microsoft.NET.Sdk.WindowsDesktop">
  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <UseWindowsForms>true</UseWindowsForms>
  </PropertyGroup>
</Project>

在开始之前,建议您针对项目运行 Portability Analyzer,因为存在一些已知的差异/不兼容性。还有另一个名为try-convert 的工具会尝试转换您的项目。

【讨论】:

  • 感谢您的意见,保罗。令人惊讶的是,该工具花了 3 年多的时间才准备好最终支持这一点。我这样的问题现在有点过时了。
【解决方案2】:

我认为 SDK 风格的项目还不支持各种设计器。虽然您可以让嵌套文件与 DependentUpon 属性一起使用,但它只能做到这一点。

也就是说,如果您的主要目标是使用新的 NuGet 功能并使用传递 NuGet 引用,那么现有项目系统现在支持这一点。

只需手动删除所有 nuget 包,然后删除 packages.config 文件。然后,您可能必须在您的 csproj 中设置 &lt;RestoreProjectStyle&gt;PackageReference&lt;/RestoreProjectStyle&gt;。当您这样做时,旧项目类型现在应该使用 PackageReference NuGet 引用并执行传递恢复。

请注意,只有包是这样传递的,项目到项目的引用不是,所以你需要像以前一样的 p2p refs。

【讨论】:

  • 感谢您的回复。不幸的是,主要问题仍然存在,旧项目格式和新项目格式(使用 .nuspec 用于 nuget 包的旧项目格式)和项目到项目引用之间的混合不会生成 nuget 依赖项。我们知道如何更改为新的 PackageReference 样式的过程。
  • 如前所述,我认为设计师还不支持新的项目系统。今天可能没有办法让它发挥作用。
  • 14个月过去了,这方面有进展吗?
猜你喜欢
  • 1970-01-01
  • 2019-12-08
  • 2020-12-04
  • 2018-06-07
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2017-09-22
相关资源
最近更新 更多