2014-12-04 74 views
5

Chcę umieścić metadane we wszystkich plikach Resx w rozwiązaniu. Czy wydaje się to może być realizowane za pomocą elementu metadata zawarte w osadzonym XSD dla plików RESX:Jak dodać metadane do plików Resx?

<xsd:element name="metadata"> 
    <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="value" type="xsd:string" minOccurs="0" /> 
     </xsd:sequence> 
     <xsd:attribute name="name" use="required" type="xsd:string" /> 
     <xsd:attribute name="type" type="xsd:string" /> 
     <xsd:attribute name="mimetype" type="xsd:string" /> 
     <xsd:attribute ref="xml:space" /> 
     </xsd:complexType> 
</xsd:element> 

nie jestem w 100% pewien, że element metadata powinien być używany do przechowywania dowolnego metadane, bo nie był w stanie znaleźć dokumentację na temat jej zamierzonego celu. Ale działa tak dobrze, jak długo pliki resx są edytowane za pomocą edytora tekstu.

Problem powstaje podczas edytowania pliku resx w programie Visual Studio 2013. Domyślnym sposobem otwarcia zasobu jest "Edytor zasobów zarządzanych". Niestety, Managed Resource Editor nie rozróżnia danych i metadanych. Powoduje to dyskretną zmianę metadanych na dane dotyczące składowania. Ten błąd (a może zamierzony projekt) istnieje od at least 2010.

Próbowaliśmy również dodawać elementy, których Edytor zasobów zarządzanych nie rozpoznał, ale te elementy zostały usunięte podczas składowania. To samo stało się z komentarzami XML. To zachowanie jest bardziej zrozumiałe, ale nie pozostawia nam wiele dobrych opcji.

Oto możliwe rozwiązania Jestem świadomy:

  1. Mandatu, że nikt nie może korzystać z zarządzanych zasobów Editor. To może być w porządku, jeśli to tylko ja, ale nie mogę wymagać tego od całego zespołu. Edytor zasobów zarządzanych jest zbyt przydatnym narzędziem.
  2. Wymagaj, aby wszyscy ręcznie naprawiali metadane po użyciu Edytora zarządzanych zasobów. Jest to zbyt podatne na błędy i uciążliwe.
  3. Wyślij problem do zespołu Visual Studio. Będziemy to robić, ale potrzebujemy rozwiązania, podczas gdy czekamy i nie ma żadnych gwarancji, że poprawka kiedykolwiek nadejdzie.
  4. Edytor zasobów zarządzanych wideł, który zachowuje się tak, jak chcemy. Nie mogłem znaleźć źródła i prawdopodobnie ma problemy z licencjonowaniem. Nie jesteśmy też zainteresowani utrzymaniem rozwidlenia.
  5. Napisz własną wersję edytora zarządzanych zasobów. To jest jak powyższa opcja, ale o wiele więcej pracy, niż jest to warte dla naszego przypadku użycia.
  6. Wystarczy zapisać metadane w tagu data. To oczywisty hack.

Wygląda na to, że błąd tutaj nie występuje w samych plikach Resx, lecz w narzędziach Visual Studio wokół plików Resx. Jednak w najbliższym czasie nie odstępujemy od Visual Studio. Czy są jakieś rozwiązania, których mi brakuje?

Odpowiedz

0

Nie udało mi się znaleźć dobrego rozwiązania do dodawania metadanych do plików. Skończyło się na tym, że zaproponowałem rozwiązanie nr 6: zapisz metadane w tagu data.

Dokładniej, zasadniczo stworzyliśmy zastrzeżoną nazwę klucza, nakazując, aby żadne pliki zasobów nie mogły używać klucza ResxFileMetadata. Następnie w plikach Resx, które wymagały metadanych, dodaliśmy zasób o nazwie ResxFileMetadata i bez wartości. Rzeczywiste metadane zostały zapisane w komentarzu jako JSON.

Ponadto nakazaliśmy, aby kod nigdy nie był dozwolony, aby dokładnie odczytać zasoby ResxFileMetadata. Funkcje tworzące słowniki z plików resx jawnie pomijały ResxFileMetadata. Te mandaty są po prostu wewnętrzną dokumentacją, nie są egzekwowane przez kod.