在Resources.Designer中阻止(手动输入)代码删除

时间:2010-05-31 19:53:30

标签: c# .net resources resx

我在Resources.Designer.cs中添加了一个小函数,它工作得很好,问题是当我从Resources.resx中添加或删除一些东西时,这个函数总是被删除,有什么指示我可以放或者无论如何要绕过这个?

谢谢!


这是一个非常简单的方法,用作索引器。

internal static string Keys(string key) 
{ 
   return ResourceManager.GetString(key, resourceCulture); 
} 

我已经这样做了,因为你不能做Properties.Resources然后连接一个值。扩展可以工作,但是我尝试了并且它变得有趣,因为它是所有静态方法而你不想实例化。

想法?

2 个答案:

答案 0 :(得分:4)

resx文件的代码部分由名为PublicResXFileCodeGenerator(或InternalResXFileCodeGenerator的工具)自动生成,具体取决于您设置资源文件可见性的内容。它位于文件顶部:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.1
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

如果你真的需要解决这个问题,you'll need to subclass the PublicResXFileCodeGenerator(VS运行生成resx代码的工具),并实现自己的工具,Visual Studio可以在每次刷新资源文件时运行。

覆盖该工具将允许您生成部分类,然后您可以将自定义代码存储在另一个.cs文件中作为资源文件类的另一个部分类。

老实说,这可能更容易。您正在实施的自定义代码是什么?你能把它变成扩展方法吗?更多细节可能有助于我们指出更好的方向。

答案 1 :(得分:0)

我目前无法验证,但如果自动生成的类是部分类,则在另一个.cs文件中创建匹配的部分类并添加任何修正

修改

确认resx的设计器类不是部分的(似乎它应该是生成的文件?)所以扩展方法可能是最好的。