Open utterances-bot opened 2 years ago
Mark :-)
之前的 WPF 项目 (.net framework) 好像行不通,就是项目文件长成下面这样的这种
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{BD1E888F-B5F0-4FCF-9F83-D72C7E5D76B2}</ProjectGuid>
<OutputType>WinExe</OutputType>
<RootNamespace>WpfApp6</RootNamespace>
<AssemblyName>WpfApp6</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
@afunc233 升级一下吧,见 删删删!快速将旧版 .NET Framework 的 WPF 项目格式(csproj) 迁移成新版 SDK 风格的项目格式 - walterlv
不安装VS2019,还有一种办法可以解决VS2022编译net4.0的问题,就是使用命令行直接安装VS2019的net4.0组件包。 但是无论怎么解决编译的问题,也没办法在VS2022里面打开Winform的设计器(部分项目),所以最终还是得安装回VS2019。
文件中的类都不能进行设计,因此未能为该文件显示设计器。设计器检查出文件中有以下类: TestForm --- 未能加载基类“XXXXXXX”。请确保已引用该程序集并已生成所有项目。
此错误的实例(1)
1. 隐藏调用堆栈
在 System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.EnsureDocument(IDesignerSerializationManager manager)
在 System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager manager)
在 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.PerformLoad(IDesignerSerializationManager serializationManager)
在 Microsoft.VisualStudio.Design.Serialization.CodeDom.VSCodeDomDesignerLoader.DeferredLoadHandler.Microsoft.VisualStudio.TextManager.Interop.IVsTextBufferDataEvents.OnLoadCompleted(Int32 fReload)
这里附上不需要安装VS2019,但是也可以编译net4.0项目的另外一种办法: 下载VS2019的安装程序,运行以下命令,把Microsoft.Net.Component.4.TargetingPack下载到c:\vslayout中(目前应该没其它办法可以拿得到这个包,当然也可以放到网盘里面,但是那样就不是官方渠道了)
.\vs_enterprise.exe --layout c:\vslayout --add Microsoft.Net.Component.4.TargetingPack --lang zh-CN
下载完成后,找到里面的Microsoft.Net.4.TargetingPack,version=4.0.30319.2文件夹,运行命令安装:
.\netfx_dtp.msi MSIFASTINSTALL=7 EXTUI=1
重启VS2022,你就会发现,可以正常编译过net4.0的项目了。
@QianMoXi 感谢,我试试
@QianMoXi 这个包在Windows 8 SDK里,如果不想装VS2019可以搞一个Win8 SDK的安装程序,然后除了.NET 4.5 SDK其它全部不选
.NET 4.5.2可能在Windows 8.1 SDK,这个我不是很确定
@driver1998 SDK应该比我这个大,而且找起来麻烦,我这样可以直接把安装包提取出来,只需要下载一次,就能一直复用,如果要找4.5.2,这样就能下载了,非常方便的。
.\vs_enterprise.exe --layout c:\vslayout --add Microsoft.Net.Component.4.TargetingPack --add Microsoft.Net.Component.4.5.2.TargetingPack --lang zh-CN
附上有可能需要到的Net版本的组件名称:
Microsoft.Net.3.5.SDK
Microsoft.Net.Component.4.TargetingPack
Microsoft.Net.Component.4.5.1.TargetingPack
安装参数应该都是MSIFASTINSTALL=7 EXTUI=1
找到个一劳永逸的方法:
用nuget方法拿到目标包之后,进入packages目录,将该目录下的所有文件复制到
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5
重启VS2022即可
最新【一键处理】方法: https://github.com/MrXhh/VSTools/releases 1)下载 VS2022Net4NotCompileFix 2)右键管理员执行 3)重启VS
无需安装 VS2019,在 Visual Studio 2022 中编译 .NET Framework 4.5/4/3.5 这样的古老框架 - walterlv
无需安装 VS2019,在 Visual Studio 2022 中编译 .NET Framework 4.5/4/3.5 这样的古老框架
https://blog.walterlv.com/post/support-old-netfx-on-vs2022-or-later.html