问题描述
我正在为C#项目使用“新” SDK格式的项目样式。我仍在使用.NET Framework 4.8,它是一个winforms应用程序。我已经像这样定义了项目:
<Project Sdk="Microsoft.NET.Sdk.WindowsDesktop">
<PropertyGroup>
<UseWindowsForms>true</UseWindowsForms>
<TargetFramework>net48</TargetFramework>
<!-- etc... -->
</PropertyGroup>
</project>
我注意到,在没有分别考虑Compile
和EmbeddedResource
文件的任何明确*.cs
和*.resx
元素的情况下,我的Form.cs
,{{1 }}和Form.Designer.cs
文件在Visual Studio 2019中正确分组。
它们在解决方案资源管理器中的列出方式如下:
Form.resx
但是,奇怪的是资源文件本身(位于+ Form.cs
- Form.Designer.cs
- Form.resx
的资源文件没有适当地分组:
Properties/Resources.resx
它们都显示为同级文件且未嵌套。如果我将此XML放入csproj中:
+ Resources.Designer.cs
+ Resources.resx
然后我在解决方案资源管理器中获得了预期的层次结构:
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
资源文件是否需要+ Resources.resx
- Resources.Designer.cs
元素,或者这是一个错误吗?什么是正确的设置?
请注意,在最新版本的Jetbrains Rider中,它显示了两次更改之间的正确嵌套;只是Visual Studio 2019显示出层次结构上的差异。
我无法在MSDN上找到有关此的任何特定文档。我知道this page,但似乎没有专门解决这个话题。
测试版本:
- 骑士:2020.1.4
- Visual Studio:16.6.5
解决方法
SDK 项目仅生成默认的 use strict;
use warnings;
元素。您的元素通过使用 <Compile Include="*\*.cs />
添加 DesignTime
、AutoGen
和 DependUpon
属性来改变默认行为。
可以在此处找到有关系统生成的 <Compile Update="Properties\Resources.Designer.cs">
元素的更多信息:https://docs.microsoft.com/en-us/dotnet/core/project-sdk/overview#default-includes-and-excludes