2010-01-11 28 views
10

Tôi có thư viện lớp C# chứa một số tệp tài nguyên được sắp xếp trong các thư mục. Vì tôi muốn các lớp được tạo ra là tất cả trong cùng một không gian tên tôi đang thiết lập thuộc tính CustomToolNamespace của mỗi tệp tài nguyên.Visual Studio Resource Generation - Tên công cụ tùy chỉnh Không gian tên

Tuy nhiên tôi phát hiện qua Reflector rằng mặc dù các lớp được tạo ra trong cùng một không gian tên đường dẫn đến tài nguyên được nhúng chứa tên thư mục trong đó tệp tài nguyên được đặt.

Ví dụ: trong dự án có FolderCustomNamespaceRes.resx được đặt bên trong thư mục có tên Thư mục.

loại bỏ chết liên kết ImageShack

Và nơi CustomToolNamespace cho FolderCustomNamespaceRes.resx được thiết lập để PublicResourcesTest, Reflector cho thấy đường dẫn đến lắp ráp nguồn nhúng là PublicResourcesTest. Thư mục .FolderCustomNamespaceRes.resources

loại bỏ liên kết ImageShack chết

Đây có phải là một lỗi hay tôi thiếu cái gì?

Trả lời

7

Sau khi tìm kiếm, tôi phát hiện ra rằng tên tệp kê khai của tài nguyên được nhúng có thể được kiểm soát bằng cách thêm siêu dữ liệu trong tệp .cspproj.

Trước khi bạn sẽ có một cái gì đó như:

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

Và để kiểm soát tên manifest bạn sẽ phải thêm:

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

Điều này được thực hiện tự động bởi IDE vì vậy nó không phải là lỗi, nhưng tiếc là cách duy nhất nó xuất hiện bạn có thể ngăn chặn hành vi này là bằng cách sử dụng ReSharper như nêu here.

+0

Đó lựa chọn ReSharper là không áp dụng đối với trường hợp trong tay. Tạo tài nguyên được kiểm soát bởi một công cụ tùy chỉnh được cung cấp bởi Visual Studio. –

Các vấn đề liên quan