Visual Studio资源生成 - 自定义工具命名空间

12

我有一个C#类库,其中包含多个按文件夹组织的资源文件。由于我希望生成的类都在同一个命名空间中,因此我设置了每个资源文件的CustomToolNamespace属性。

然而,通过Reflector,我发现尽管所有的类都被生成在同一个命名空间中,但嵌入资源的路径包含了资源文件所在目录的名称。

例如,在一个名为“Folder”的目录中放置FolderCustomNamespaceRes.resx的项目中。

已删除失效的ImageShack链接

对于FolderCustomNamespaceRes.resx的CustomToolNamespace设置为PublicResourcesTest,在Reflector中显示嵌入资源程序集的路径为PublicResourcesTest.Folder.FolderCustomNamespaceRes.resources。

已删除失效的ImageShack链接

这是一个错误还是我漏掉了什么?

2个回答

8

经过一番搜索,我发现嵌入式资源的清单名称可以通过在.cspproj文件中添加元数据来进行控制。

以前你可能会像这样:

<EmbeddedResource Include="Folder\FolderCustomNamespaceRes.resx">
   <Generator>PublicResXFileCodeGenerator</Generator>
   <LastGenOutput>FolderCustomNamespaceRes.Designer.cs</LastGenOutput>
   <CustomToolNamespace>PublicResourcesTest</CustomToolNamespace>
</EmbeddedResource>

如果你想控制清单名称,你需要添加以下内容:

<EmbeddedResource Include="Folder\FolderCustomNamespaceRes.resx">
   ....
   <LogicalName>$(RootNamespace).FolderCustomNamespaceRes.resources</LogicalName>
</EmbeddedResource>

0

这是IDE自动完成的,因此这不是一个错误,但不幸的是,似乎唯一可以抑制此行为的方法是使用ReSharper,如此处所述。


那个ReSharper选项不适用于手头的情况。资源生成由Visual Studio提供的自定义工具控制。 - João Angelo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接