gpt4 book ai didi

c# - 在编译时将字符串嵌入到 .NET 程序集中

转载 作者:太空宇宙 更新时间:2023-11-03 18:36:22 24 4
gpt4 key购买 nike

我想在编译时指定一个嵌入到程序集中的值。基本上我想要的是定义一个 C 预处理器定义,然后我可以在我的代码中使用它并在运行时引用它。我知道您不能在 .NET 中完全做到这一点,所以我想找出我的下一个最佳替代方案。

编辑:添加一个示例,希望能使我的目标更加清晰。我想将一些时间戳和作者信息嵌入到已编译的程序集中。因此,当我将我的可执行文件复制到另一台机器时,我可以准确地知道它是何时构建的以及由谁构建的(例如,在关于框中)。

最佳答案

不太清楚你想要什么,但也许你需要根据环境/命令行参数生成一些常量值?

一个选项(这也让您能够用 C 预处理器搬起石头砸自己的脚):在构建时生成 .CS 文件并编译。您可以在“构建前”步骤轻松完成,只需将生成的文件添加到项目中即可。


以下是在构建时生成一些文件的基本步骤。在项目文件夹中有一些 CMD 文件来创建 CS:

:-----   generate.cmd {file.Name}  - generates some CS:
echo class Generated { public const int Value=42;} >%1

添加到构建步骤之前(解决方案->属性->构建事件

$(ProjectDir)generate.cmd $(ProjectDir)Generated.cs

将“Generated.cs”(通过上面的步骤将位于项目根目录中)添加到您的项目中。

根据需要使用 Generated.Value


这种方法的更好实现是在项目文件 (.csproj) 中定义自定义属性,并在运行构建时设置它(参见 MSBuild 的“/property:name=value”参数)。比直接在项目中实现你需要的东西(你可以在 .csproj 中生成文件 WriteLinesToFile task ) 或将属性传递给外部工具。

关于c# - 在编译时将字符串嵌入到 .NET 程序集中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14609278/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com