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

C# 如何在构建时C将计算值放入RESX中#,c#,C#,我有一种情况,在我有一个字符串,应该包含今天的日期。。 问题是我需要将包含今天日期的字符串放入.resx文件中。 有办法吗? 例如 让我们谈谈版权字符串 它应该是版权所有的-2012-abc是今天的日期是2012年 &它应该是版权所有的-2013-abc是今天的日期是2013年 编辑: 我只打算将资源文件用于这个版权问题。 对于所有其他事情,它都是静态的,只是该年的值会随着时间的推移而变化,就像在示例中一样。resx用于存储静态资源。尽管在运行时或者在开发过程中通过某种脚本来更改resx可能会有

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

编辑: 我只打算将资源文件用于这个版权问题。
对于所有其他事情,它都是静态的,只是该年的值会随着时间的推移而变化,就像在示例中一样。

resx用于存储静态资源。尽管在运行时或者在开发过程中通过某种脚本来更改resx可能会有黑客攻击,但是,这两种方法都会给小功能带来太多的复杂性


如果您能够澄清此类版权字符串的用例,读者可能会提供更具体的建议。比方说,您是否仅将字符串用于显示在“关于”框中?还是程序集属性?

resx用于存储静态资源。尽管在运行时或者在开发过程中通过某种脚本来更改resx可能会有黑客攻击,但是,这两种方法都会给小功能带来太多的复杂性


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

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

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

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

将在生成时创建的文件包含到RESX中的步骤:

  • 将TextFile1.txt添加到项目中
  • 将该文件放到{resourceFileName}.RESX上(在设计模式下)
  • 检查是否使用新属性更新了{resourceFileName}.Designer.cs以访问新资源的内容
  • 在解决方案资源管理器中,选择项目的属性并打开“生成事件”选项卡
  • 将“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>

textfile1.txt;System.String,mscorlib,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089;utf-8

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

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

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

将在生成时创建的文件包含到RESX中的步骤:

  • 将TextFile1.txt添加到项目中
  • 将该文件放到{resourceFileName}.RESX上(在设计模式下)
  • 检查是否使用新属性更新了{resourceFileName}.Designer.cs以访问新资源的内容
  • 在解决方案资源管理器中,选择项目的属性并打开“生成事件”选项卡
  • 将“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>

textfile1.txt;System.String,mscorlib,版本=4.0.0.0,区域性=neutral,PublicKeyToken=b77a5c561934e089;utf-8

为什么不只用一个占位符呢?在resx文件中可以有类似“实际年份{year}”的内容,在c#代码中,可以访问resx文件,在那里可以解析{..}问题的标题是“从resx获取今天的日期”(不可能),但正文是“如何在构建时将计算值放入resx”-请尝试使标题和正文符合您的需要。为什么不只使用占位符呢?在resx文件中,您可以有类似“实际年份{year}”的内容,在您的c#-代码中,您可以访问resx文件,您可以解析问题的{..}标题是“从resx获取今天的日期”(不可能),但正文是“如何在构建时将计算值放入RESX”-请尝试使标题和正文符合您的需要。