VS2019运行.NET Framework4.7.2 SDK项目时控件/表单缺图标和视图设计器选项
仅当csproj.user文件存在时,表单和控件才能在设计器中打开。
有2个均继承自同一基控件的控件,但其中一个在解决方案资源管理器中缺少控件图标:
显示正常的控件源码开头如下:
public partial class UniTabMaterialsControl : UnitabBaseControl { public UniTabMaterialsControl() { InitializeComponent(); }
显示异常的控件源码开头如下:
public partial class UniTabMaterialsControl : UnitabBaseControl { public UniTabMaterialsControl() { InitializeComponent(); }
基控件类代码如下:
public class UnitabBaseControl : UserControl { }
已尝试关闭并重新打开Visual Studio。
更新1
新增了一个同样设置为继承UnitabBaseControl的用户控件,问题表现恢复了正常。之后删除了这个新增控件,正常表现依然保持。
Git显示UnitabBaseControl.cs存在变更,但除了UserControl文本的颜色外,看不出其他改动。
之后重新克隆了整个解决方案,这次所有继承自UnitabBaseControl的控件都出现了异常表现。
更新2
现在表单也出现了相同问题。
Form1代码如下:
using System.Windows.Forms; namespace SBD.VivSnap.UI { public partial class Form1 : Form { public Form1() { InitializeComponent(); } } }
另一个表单Form2代码如下:
using System.Windows.Forms; namespace SBD.VivSnap.UI { public partial class Form2 : Form { public Form2() { InitializeComponent(); } } }
更新3
之前遗漏说明,项目是被启动项目引用的类库项目。在启动项目中删除并重新添加类库项目引用后,所有表单和控件都正常显示了。Git中找不到任何改动可以说明解决方案为何生效。
之后在主项目中也发现了这个问题。
更新4
后来发现项目是SDK风格格式,尽管运行的是.NET Framework 4.7.2,推测这可能和问题有关。
项目头配置为:Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"
将代码检出到运行VS2019 16.1.4的其他设备上可以正常构建,本地使用的是16.11.4版本。
更新5
已升级到VS2019 16.11.5版本,重新克隆后问题依旧存在。
更新6
项目文件内容如下:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> <PropertyGroup> <TargetFramework>net472</TargetFramework> <OutputType>WinExe</OutputType> <AssemblyName>Main</AssemblyName> <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\</SolutionDir> <RestorePackages>true</RestorePackages> <GenerateAssemblyInfo>false</GenerateAssemblyInfo> <UseWindowsForms>true</UseWindowsForms> </PropertyGroup> <PropertyGroup> <StartupObject>SBD.VivSnap.Main.Program</StartupObject> </PropertyGroup> <ItemGroup> <PackageReference Include="Microsoft.CSharp" Version="4.7.0" /> <PackageReference Include="Microsoft.Data.SqlClient"> <Version>2.0.1</Version> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore"> <Version>3.1.12</Version> </PackageReference> <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer"> <Version>3.1.12</Version> </PackageReference> <PackageReference Include="NuGet.Build.Tasks.Pack" Version="5.7.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> <PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" /> <PackageReference Include="System.Data.DataSetExtensions" Version="4.5.0" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\SnapInUI\SBD.VivSnap.UI.csproj" /> </ItemGroup> <ItemGroup> <Compile Update="Properties\Settings.Designer.cs"> <DesignTimeSharedInput>True</DesignTimeSharedInput> <AutoGen>True</AutoGen> <DependentUpon>Settings.settings</DependentUpon> </Compile> </ItemGroup> <ItemGroup> <None Update="Properties\Settings.settings"> <Generator>SettingsSingleFileGenerator</Generator> <LastGenOutput>Settings.Designer.cs</LastGenOutput> </None> </ItemGroup> </Project>
csproj.user文件内容见回答。
内容的提问来源于stack exchange,提问作者Kirsten

