如何在构建时C#中将计算值放入RESX

时间:2013-02-28 05:36:07

标签: c#

我有一种情况,我有一个字符串应该包含今天的日期.. 问题是我需要将包含今天日期的字符串放在.resx文件中。 有没有办法做到这一点? 例如 让我们说一下版权字符串 它应该是版权所有 - 2012-abc是今天的2012年 &它应该是版权所有 - 2013-abc是今天的日期是2013年

编辑: 我将仅使用资源文件来获取此版权内容。 对于所有其他事情,它将是静态的,就像那个年份的价值会随着每一年的变化而变化,就像在示例中一样。

2 个答案:

答案 0 :(得分:1)

没有内置方法可以将“当前环境”值添加到RESX(或任何其他C#相关文件)。

但您可以相对轻松地创建预构建规则,该规则将调用您的自定义脚本/工具,根据您的喜好修改您的RESX文件。

创建工具的一个选项是生成稍后包含在RESX文件中的文件。这样就可以避免修改RESX文件本身(如果RESX受源代码控制,这可能会有问题)。根据您的需要,在RESX中包含out.txt的简单date /t > ..\..\out.txt可能就足够了。

将构建时创建的文件包含在RESX中的步骤:

  • 将TextFile1.txt添加到您的项目
  • 将该文件放在{resourceFileName} .RESX(设计模式)
  • 检查{resourceFileName} .Designer.cs是否使用新属性更新以访问新资源的内容
  • 在Solution explorer中选择项目的属性并打开“Build Events”选项卡
  • 将“date / t> .... \ TextFile1.txt”添加到预构建步骤(将当前日期转储到“TextFile1.txt”
  • 构建并使用新的资源变量,即Console.WriteLine(Resource1.TextFile1)

RESX样本内容:

  <data name="TextFile1" type="System.Resources.ResXFileRef, System.Windows.Forms">
    <value>textfile1.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8</value>
  </data>

答案 1 :(得分:0)

resx用于存储静态资源。虽然可能会在运行时或在开发期间通过某种脚本来修改resx,但是,这两种方法都会引入太多的复杂性。

如果您可以澄清此类版权字符串的使用案例,读者可能会提供更具体的建议。比如说,您是否仅将该字符串用于显示在“关于”框中?或汇编属性?