Создание ресурса Visual Studio - пользовательское пространство имен
У меня есть библиотека классов С#, которая содержит несколько файлов ресурсов, организованных в папках. Поскольку я хочу, чтобы сгенерированные классы были в одном пространстве имен, я устанавливаю свойство CustomToolNamespace для каждого файла ресурсов.
Однако я обнаружил через Reflector, что, хотя классы все сгенерированы в одном пространстве имен, путь к встроенным ресурсам содержит имя каталога, в которое помещается файл ресурса.
Например, в проекте, где FolderCustomNamespaceRes.resx помещается внутри каталога с именем Folder.
удалена мертвая ссылка ImageShack
И где CustomToolNamespace для FolderCustomNamespaceRes.resx установлен в PublicResourcesTest, Reflector показывает, что путь к встроенной сборке ресурсов - PublicResourcesTest. Папка.FolderCustomNamespaceRes.resources
удалена мертвая ссылка ImageShack
Является ли это ошибкой или я что-то не хватает?
Ответы
Ответ 1
После некоторого поиска я узнал, что имя манифеста встроенного ресурса можно контролировать, добавляя метаданные в файл .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>
Ответ 2
Это делается автоматически с помощью IDE, так что это не ошибка, но, к сожалению, единственный способ показать, что вы можете подавить это поведение, - это использовать ReSharper, как описано здесь.