在编译器时和永远生成随机值

Generate random value at compiler time and forever

所以,我不知道我的问题是否完全清楚,但我想做的是一个简单的概念:我想在编译 c# windows 表单应用程序时将变量 X假设一个我不知道的值。但是每次我执行应用程序而不重新编译它时,这个值都是相同的(但你不知道)。所以我要问的是,是否有可能编译一些你不知道哪个值的东西。应用程序每次都会使用具有相同值的相同变量,但每次再次编译应用程序时,此变量都会改变。

我正在尝试实施一种安全算法,该算法对于我的应用程序的每个发行版都不同,但我想以自动方式执行此操作,而无需为我的应用程序的每个版本更改手动参数。

我的意思的一个简单例子:

您可以在构建时生成源或资源,并将该值作为此类源的一部分包含在内。

链接:Displaying the build date shows how to create resource at build time, you can also check out MSBuild task reference 构建更集成的解决方案。

请注意,此类保护很容易绕过...

C# 编译器在每个构建中发出唯一(随机)ModuleVersionId (Guid)。即使从完全相同的来源构建时,这也会有所不同。

您可以将其用作构建令牌。

正如 Enigmativity 友情提到的那样,您可以使用以下方法获得该值:

this.GetType().Assembly.ManifestModule.ModuleVersionId