将 csproj 文件转换为新的 SDK 项目时,EnableDefaultItems 为 true,所有资源、cs 文件等都会自动包含在内。所以基本上项目文件几乎是空的,这很好。
现在的问题是,Visual Studio 认为 .resx 文件和 Resources.designer.cs 文件之间没有任何联系,并且不会自动更新它。
为了解决这个问题,我需要添加这个 DependsUpon 语句
<ItemGroup>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
使用 UI 创建资源时也会自动插入。是否有属性或其他方式让我不必为我的所有资源定义它?
你可以试试这个:
<Compile Update="**\*.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>$([System.String]::Copy("%(Filename)").Replace(".Designer", "")).resx</DependentUpon>
</Compile>
这将使项目中的所有
*.Designer.cs
文件显示为同一文件夹中 *.resx
文件下的子项。