如何在 SDK 样式项目中为项目资源更新设计器文件?

How do I make the designer file update for project resources in an SDK-style project?

我把我的VB项目转换成一个SDK风格的项目,一切都很顺利,直到我更新了我的My Project\Resources.resx文件,发现设计器文件不会更新。我需要进行哪些更改才能使设计器文件随 resx 文件的更改而更新?

我在此处向 Microsoft 提出的一个问题中的一个代码片段中收集了部分答案:https://developercommunity.visualstudio.com/t/vs-should-not-bloat-sdk-project-files-with-resx-de/574773

部分来自检查 non-SDK VB 项目的内容,其中包含嵌入式资源。

添加到项目文件的以下片段将指示 Visual Studio 自动更新 Resources.resx 的设计器文件:

  <ItemGroup>
    <Compile Update="My Project\Resources.Designer.vb">
      <AutoGen>true</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Update="My Project\Resources.resx">
      <Generator>VbMyResourcesResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.vb</LastGenOutput>
      <CustomToolNamespace>My.Resources</CustomToolNamespace>
      <SubType>Designer</SubType>
    </EmbeddedResource>
  </ItemGroup>

我最初写了一个更通用的块(基于link中的material):

<Compile Update="**\*. Designer.vb">
<DependentUpon>$([System.String]::Copy('%(FileName)'). Replace('. Designer', '.resx'))</DependentUpon>
<LastGenOutput>$([System.String]::Copy('%(FileName)')). Designer.vb</LastGenOutput>

(每行替换上面的等价行)

但我发现 Visual Studio 将特定资源文件的块写入项目文件(正如 link 抱怨的那样),因此只将特定资源文件的块放入项目文件似乎更经济resx/designer 一对,尤其是只有一对的时候。