0
我有幾個C#類庫的解決方案,它們是更大系統中的插件。該系統將其插件註冊到Windows的註冊表中。我想要做的是以可從編譯的DLLS中提取的方式描述註冊表項,然後將其放入文本(.reg)文件中,最好作爲構建過程的一部分。如何將c#屬性轉換爲文本內容?
是否存在此類元數據的預定義屬性?有沒有可以提取它們的命令行工具或MSBuild任務?
我有幾個C#類庫的解決方案,它們是更大系統中的插件。該系統將其插件註冊到Windows的註冊表中。我想要做的是以可從編譯的DLLS中提取的方式描述註冊表項,然後將其放入文本(.reg)文件中,最好作爲構建過程的一部分。如何將c#屬性轉換爲文本內容?
是否存在此類元數據的預定義屬性?有沒有可以提取它們的命令行工具或MSBuild任務?
想象一下這樣的屬性
[System.AttributeUsage(System.AttributeTargets.Class,
AllowMultiple = true) // Multiuse attribute.]
public class RegistryKey : System.Attribute
{
public string Name {get; private set;}
public string Type {get; private set;}
public string Data {get; private set;}
public RegistryKey(string name, string type, string data)
{
Name = name;
Type = type;
Data = data;
}
}
與反思消耗它這樣
var attrs = System.Attribute.GetCustomAttributes(typeof(MahClass));
foreach (var attr in attrs)
{
if (attr is RegistryKey)
{
var name = attr.Name;
...
}
}
那麼你可以輕鬆地創建自己的屬性...並可以很容易地加載程序集,並使用反射提取屬性。我建議你嘗試一下,如果遇到問題,請提出具體問題。 –
感謝您的評論。這看起來像是一個「重新發明輪子」類型的問題,所以我想確保在我推出自己的解決方案之前,我沒有在框架中遺漏任何東西。 –
這聽起來並不像一個特別常見的事情......將數據嵌入到屬性中,當然 - 但不是專門的註冊表鍵,然後想用它們創建一個'.reg'文件。我並不是說沒有其他人想要這樣做,但我不認爲這是一個足夠普遍的要求,你應該期望找到一個開箱即用的解決方案。 –