我想在解決方案中的所有resx文件中放入一些元數據。是好像這可以使用metadata
元素來完成列入RESX文件嵌入的XSD:如何將元數據添加到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>
我不是100%肯定的metadata
元素應該被用於存儲任意元數據,因爲我無法找到任何有關其預期目的的文件。但只要使用文本編輯器編輯resx文件,它就可以正常工作。
編輯Visual Studio 2013中的resx文件時出現問題。打開資源的默認方法是「託管資源編輯器」。不幸的是,託管資源編輯器沒有區分數據和元數據。這會導致元數據在保存時無提示地變爲數據。自從at least 2010以來,這個錯誤(或者可能是有意的設計)一直存在。
我們還嘗試添加元素託管資源編輯器無法識別,但保存時刪除這些元素。 XML評論也發生了同樣的情況。這種行爲更容易理解,但不會給我們帶來很多好的選擇。
以下是可能的解決辦法,我意識到:
- 授權,沒有人能夠使用託管資源編輯器。這可能是好的,如果它只是我,但我不能要求整個團隊的這一點。託管資源編輯器是一個非常有用的工具。
- 要求每個人在使用託管資源編輯器後手動修復元數據。這太容易出錯和繁瑣。
- 將問題提交給Visual Studio團隊。我們將這樣做,但我們需要一個解決方案,而我們等待,並且不能保證一定會有解決辦法。
- 分叉管理資源編輯器,使其行爲如何我們想要的。我無法找到來源,這可能有許可問題。我們對維護叉也不感興趣。
- 編寫自己的Managed Resource Editor版本。這就像上面的選項,但方式更多的工作比我們的用例值得。
- 只需將元數據存儲在
data
標記中即可。這是一個明顯的黑客。
看起來這裏的失敗並不是與resx文件本身,它是與Visual Studio工具圍繞resx文件。但是,我們不會很快離開Visual Studio。我有什麼解決方案嗎?