Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用所需变量生成可执行文件_C# - Fatal编程技术网

C# 使用所需变量生成可执行文件

C# 使用所需变量生成可执行文件,c#,C#,我有一个程序,它有一个唯一的用户id,只属于该用户。该id是硬编码的,并在web界面中使用,在该界面中,用户可以看到他的计算机,而不是其他人的计算机,因此,每当我需要将程序交给另一个用户时,我都需要用新的硬编码可执行文件重新编译可执行文件。所以我想制作一个简单的表单,它有一个用于客户端id的文本框和一个编译按钮,所以它编译一个可执行文件,其中客户端id在文本框中,硬编码在该可执行文件中。我该怎么做呢? 我对此进行了研究并发现,但我认为它不能用于我的情况 我的程序是用来控制你的电脑与网络接口,所以

我有一个程序,它有一个唯一的用户id,只属于该用户。该id是硬编码的,并在web界面中使用,在该界面中,用户可以看到他的计算机,而不是其他人的计算机,因此,每当我需要将程序交给另一个用户时,我都需要用新的硬编码可执行文件重新编译可执行文件。所以我想制作一个简单的表单,它有一个用于客户端id的文本框和一个编译按钮,所以它编译一个可执行文件,其中客户端id在文本框中,硬编码在该可执行文件中。我该怎么做呢? 我对此进行了研究并发现,但我认为它不能用于我的情况

我的程序是用来控制你的电脑与网络接口,所以让我们假设我有一个用户在我的网站上有两台电脑。他将需要一个可执行文件为他与他的用户id是在我的网站数据库。但是,如果我有了另一个用户和更多用户,我需要制作数千个版本的程序


另外,作为一个附带问题,这可以在网站上完成吗?比如说,我的网站上有用户,每个用户都有自己的唯一id,我希望在他们下载时,该id被硬编码到我的程序中。请不要过多地关注这个问题,因为这只是一个次要问题。

我认为你的想法不太好,但你提出了一个具体的要求,所以我会给你一个具体的答复。

如果您的程序是
msbuild
可执行的,则只需执行

msbuild yoursolution.sln /p:Configuration=Release /p:Platform="Any CPU"
(我在这里使用的是Release/AnyCPU,但您必须根据您通常编译解决方案的方式使用正确的参数)

通过
System.Diagnostics.Process.Start方法将朝着正确的方向迈出一大步

显然,在执行此操作之前,您需要修改程序中包含的
.cs
文件或资源

现在。。。唯一的问题是,对于较新的Visual Studio/.NET,
msbuild.exe
位置可能会更改。解决此问题的最简单方法是手动查找,例如打开Visual Studio命令提示符并执行以下操作:

where msbuild.exe

如果从该命令提示符下使用
msbuild.exe
,或者使用给定的指令,将执行第一个路径。为什么不使用命令行参数、mac地址、web服务登录名或其他任何东西。为什么不将其包含在配置文件中,并且用户同时拥有exe和config?唯一的客户端id,该id只属于该计算机。仅供参考,如果您将其用作某种安全机制,那么circumvent@HanyHabib-我怀疑答案将与问题中的不成文要求类似-OP没有提到的是希望它能够防篡改。然后我们继续讨论当代码在用户机器上运行时,这几乎是无法解决的。确切地说,不要制作1000个版本,这是x/yok。这可以工作,但它可以在html网站后端完成,以便自动完成吗?@DavidAnastasov您必须在后端安装平台SDK才能编译。。。无需特殊权限即可使用msbuild@DavidAnastasov最简单的方法是,首先尝试从命令提示符下使用msbuild编译程序,查看所需的参数是什么,当一切正常时,尝试使用
进程。Start
@xanatox我看到你实现了p:Configuration和p:Platform,我知道每个解决方案都有这些功能,但我可以为我的项目添加p:UserID=这样的功能吗?还是不可能?@DavidAnastasov修改源文件/资源文件更容易。。。您可以修改csproj,以便将用户ID写入某个地方,但直接修改文件要容易得多。如果你想了解这个黑魔法,这可能是一个很好的起点: