将13岁的.NET WPF应用程序转换为.NET升级助手

2021-04-26 10:49:35

13年前,我写了一个.NET 3.5 WPF应用程序,为我的2岁婴儿/幼儿提供。也许他是18个月。他很小。他现在想开车。即使在今天,https://www.babysmash.com/仍然是一件事。最近"克里斯记忆神"拥有2000万景观Tiktok,其中包括Babysmash ......在那里他未能提及URL。叹。

无论如何,代码已经在http://github.com/shanselman/babysmash多年来,除了几个小修复,真的有4或5年的触摸。

直到.NET团队从.NET团队的Cathy Sullivan将BabysMash用作测试应用程序,以便在2021年升级到.NET 5.她使用.NET升级助手。她甚至在升级过程中流动!

Cathy发出了一个公关,我们将结果.NET 5 Babysmash应用程序在Https://github.com/shanselman/babysmash/tree/dotnet5的新DotNet5分支中应用。我' D鼓励你看看它和#39;现在很容易构建。

确保您获得DotNet5分支和" dotnet build"从那里,不是主要的分支。

Cathy在Visual Studio中发出的版本在Visual Studio中建立了很好,但在从命令行构建时发出了一个小问题。幸运的是,Alex Elia随访了他自己的公关,使BabysMash能够用只有.NET 5 SDK从命令行清洁地建立。

我不愿意找到.NET 5.0版本的BabysMash的工件,因此我用连续集成流水线对存储库进行了拉拔请求,更新了README和调整以使用.NET CLI进行构建/运行/发布工作流程。 https://github.com/shanselman/babysmash/pull/25它是一个项目属性[它阻止它从命令行构建。] .NET CLI针对一个版本的MSBuild,而Visual Studio / devenv.exe则针对另一个版本。在CSProj中有一个特定的属性,GenerateManifests,MSBuild的.NET CLI版本被拒绝。属性为true链设置为true链触发到对msbuild的呼叫,以获取任务格式url(https://docs.microsoft.com/en-us/visualstudio/msbuild/formaturl-task?view=vs-2019)相当直观地命名;它格式化了一个URL。 MSBuild的.NET CLI版本不支持此任务,从而拒绝构建。有趣的说明为什么很难找到这个。 WPF项目触发名为markupcompilepass1的构建任务(https://docs.microsoft.com/en-us/visupstudio/msbuild/markcompilepass1-task?view=vs-2019)以将XAML / CS视图文件进入生成的.g。 CS和BAML文件。如果构建由于GenerateManifests错误导致错误,则DotNet.exe进程将挂起,后续构建由于WPF .g.cs生成的文件上的碰撞导致。

极好的! 我跟进这个小调整到" dotnet publish" 命令行允许我们现在制作包含整个应用程序和.NET的单个BabysMash.exe文件,没有安装。 您可以从https://github.com/shanselman/babysmash/releases/tag/dotnet5-v0.1获取babysmash.exe如果您' d喜欢,或者只是从http:// www安装旧的。 Babysmash.com! 赞助商:延长您的跑道并扩大您的范围。 Oracle for Startups在一个启动价格标签中提供企业云,免费云积分,帮助您在大鱼中卷起。 学到更多! Scott Hanselman是前任财经首席建筑师的前教授,现在是演讲者,顾问,父亲,糖尿病和微软员工。 他是一个失败的站立漫画,一个檐口和一本书作者。 关于时事通讯