11

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

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

如何将 Wpf 项目迁移到新的 VS2017 格式的问题的答案帮助我们在转换项目的 WPF 部分方面取得了长足的进步。但是,我们仍然有大量无法替换或升级的 Windows 窗体。

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

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

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

4

2 回答 2

7

我不相信 SDK 风格的项目支持各种设计师。虽然您可以让嵌套文件使用DependentUpon属性,但仅此而已。

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

只需手动删除所有 nuget 包,然后删除该packages.config文件。然后您可能必须<RestoreProjectStyle>PackageReference</RestoreProjectStyle>在您的 csproj 中进行设置。执行此操作时,旧项目类型现在应使用PackageReferenceNuGet 引用并执行传递还原。

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

于 2017-06-22T11:59:15.923 回答
2

随着 .NET Core 3.0 的发布,现在支持 WinForms,但设计器支持目前计划在2020 年第四季度进行,并且可以使用 Visual Studio 16.4 Preview 3 或更高版本进行预览,您必须设置Tools->Options->Preview Features -> 使用 .NET Core 应用程序的 Windows 窗体设计器预览复选框以启用此功能。

SDK 风格的项目应按如下方式设置...

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

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

于 2020-03-15T12:23:26.813 回答