如何在VS2010C#控制台应用程序中将我的App.config编译到我的exe文件中?我正在使用c#在VisualStudio2010中创建控制台应用程序。我希望这个应用程序是独立的,因为您只需要exe就可以从任何地方运行它。我还想使用app.config来存储连接字符串等。我的问题是我似乎无法弄清楚如何将app.config数据包含到已编译的exe中。我确实看到它创建了appname.exe.config,但我不希望人们在获取应用程序时不得不担心抓取两个单独的文件。我所做的谷歌搜索都没有得出任何结果。这可能吗?你不能。此类配置文件的一半要点是允许在应用程序本身之外更改应用程序的配置。您只需要修改程序,使其不依赖于应用程序配置文件——最简单的方法是将配置中的值粘贴到只读全局变量中。我知道你要去哪里,但答案可能比你想要的要复杂一些。使app.config成为嵌入式资源。为默认应用程序设置/连接字符串/等手动解析app.config仍然会查找app.config并用app.config值覆盖您之前阅读的默认值这样您就有了一些合理的默认值并且您不必将您的app.config作为常量保持独立,您可以将您的应用程序作为exe运行,并且您仍然可以在运行时通过添加回app.config来修改它。.要记住的一件事是,从资源中读取app.config不会给您带来与普通app.config相同的行为。您基本上是在阅读它并手动使用它。你的意思是你需要将它作为资源添加到exe中?好吧,首先你不能,app.config是基于文件而不是基于资源的。另一方面,配置文件的唯一意义在于您可以更改它。否则只是硬编码或使用常量。通常您不想这样做,因为您的app.config提供了一种可以在运行时完成配置的机制。至于你的具体目标(在代码之外维护配置,但让它遵循二进制),你有几个选择:我相信还有其他更有创意的选择。我的建议是第二种选择。首次启动应用程序时,创建必要的键并从可执行文件中设置它们的默认值。这样,如果您以后需要进行任何调试,您只需运行regedit并进行任何必要的更改而无需重新编译。正如其他人指出的那样,配置文件背后的想法是避免硬编码值。另一种方法是编写自定义配置部分,每个元素都是可选的并具有默认值。这样,任何可以使用默认值的人都不需要配置文件。但如果他们需要覆盖默认值,他们可以提供一个。(抱歉,只是一点头脑风暴。我没有可用的示例。)就像人们在这里所说的那样,配置文件的全部意义在于修改应用程序之外的一些设置。您可以硬编码或使用常量,但如果需要,也可以使用Windows中的注册表。这样你就可以对应用程序进行更改,并且仍然只有一个exe。代码项目有一些关于从注册表读取、写入和删除的有用信息。http://www.codeproject.com/KB/system/modifyregistry.aspx但编辑注册表时要小心。许多应用程序都依赖于它,所以如果你做错了什么,你可能会破坏一些设置。我建议阅读它然后去做。publicstringRead(stringKeyName){RegistryKeyrk=baseRegistryKey;//以只读方式打开子键RegistryKeysk1=rk.OpenSubKey(subKey);//如果RegistrySubKey不存在->(null)if(sk1==null){returnnull;}else{try{//如果RegistryKey存在,我得到它的值//或返回null。返回(字符串)sk1.GetValue(KeyName.ToUpper());}catch(Exceptione){//AAAAAAAAAAARGH,错误!ShowErrorMessage(e,"读取注册表"+KeyName.ToUpper());返回空值;}}}publicboolWrite(stringKeyName,objectValue){try{//设置RegistryKeyrk=baseRegistryKey;//我必须使用CreateSubKey//(创建或打开它,如果已经存在),//'因为OpenSubKey打开一个subKey作为只读RegistryKeysk1=rk.CreateSubKey(subKey);//保存值sk1.SetValue(KeyName.ToUpper(),Value);返回真;}catch(Exceptione){//AAAAAAAAAAARGH,错误!ShowErrorMessage(e,"写??注册表"+KeyName.ToUpper());返回假;}}publicboolDeleteKey(stringKeyName){try{//设置注册表键rk=baseRegistryKey;RegistryKeysk1=rk.CreateSubKey(subKey);//如果RegistrySubKey不存在->(true)if(sk1==null)returntrue;否则sk1.DeleteValue(KeyName);返回真;}catch(Exceptione){//AAAAAAAAAAAARGH,错误!ShowErrorMessage(e,"删除子键"+子键);返回假;}}当然这只适用于Windows我假设你正在使用VisualStudio,所以你可能正在使用Windows。快乐编码,祝你好运!最好的解决方法似乎是在应用程序启动时自己创建它。添加App.Config作为资源,重命名为“App_Config”检查配置文件是否存在如果不存在,请编写默认的.config文件示例代码:[STAThread]staticvoidMain(){CreateConfigIfNotExists();}privatestaticvoidCreateConfigIfNotExists(){stringconfigFile=string.Format("{0}.config",Application.ExecutablePath);如果(!File.Exists(configFile)){File.WriteAllText(configFile,Resources.App_Config);请记住,它只会在构建时写入当前配置。部署新版本时不会自动更新。它将包括构建时的配置。但这可能就足够了:)请首先回答上一篇文章-配置文件作为嵌入式资源IL与wpf可执行文件合并有很多问题,而且速度也很慢。我最终使用Cosura.Fodyhttps://github.com/Fody/Costura并使用命令行参数传递我的应用程序配置值。同样使用iexpresshttp://en.wikipedia.org/wiki/IExpress创建最终的可执行文件,命令行参数和exe合并在一起以winform应用程序为例,在编译时,文件'xxx.EXE.config将生成'并输出EXE文件。它将包含“app.config”设置。也分发这个。以上是C#学习教程:HowtocompilemyApp.configintomyexeinaVS2010C#consoleapplication?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
