Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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#_Variables_Path_Console_Config - Fatal编程技术网

C# 是否可以在配置中定义变量?

C# 是否可以在配置中定义变量?,c#,variables,path,console,config,C#,Variables,Path,Console,Config,嘿,C/编程新手提出的所有快速问题。我有一个控制台应用程序,其中作业中的一个字符串变量是指向目录的路径。但是,我总是在两个不同的路径(1个prod和1个dev)之间更改它。因此,当我想要更改硬编码路径时,我经常需要重新编译/重建解决方案 是否有一种方法可以在配置中定义它,然后作业中的变量可以以某种方式指向它?我不想在解决方案中硬编码路径 如有任何建议,将不胜感激。谢谢大家! 这就是设置的目的。添加它们的最简单方法是通过项目属性: 添加它们后,您将获得一个网格以输入默认值。 可通过以下方式在代码

嘿,C/编程新手提出的所有快速问题。我有一个控制台应用程序,其中作业中的一个字符串变量是指向目录的路径。但是,我总是在两个不同的路径(1个prod和1个dev)之间更改它。因此,当我想要更改硬编码路径时,我经常需要重新编译/重建解决方案

是否有一种方法可以在配置中定义它,然后作业中的变量可以以某种方式指向它?我不想在解决方案中硬编码路径


如有任何建议,将不胜感激。谢谢大家!

这就是设置的目的。添加它们的最简单方法是通过项目属性:


添加它们后,您将获得一个网格以输入默认值。
可通过以下方式在代码中访问此值:

var path = MyApp.Properties.Settings.Default.PATH;
默认值存储在
app.config
文件中,该文件紧挨着
MyApp.exe
as
MyApp.exe.config
。如果选择“用户可更改”设置,则更改的值(在调用
MyApp.Properties.Settings.Default.Save();
后)存储在
%AppData%


请参阅关于如何根据构建类型转换
app.config
的问题。

chrfin回答的替代方法是将变量定义为

#if Debug
   string myPath = "something";
#else
   string myPath = "something else";
然后,当您选择构建类型时,它将更改编译的代码行

  • 在解决方案资源管理器中右键单击
    app.config
    文件,将其添加到项目中。app.config是XML文件
  • 在app.config的第节下,按如下方式添加路径:

  • 在如下代码中访问路径:

    字符串路径=ConfigurationManager.AppSettings[“路径”]

  • 然后,当您想要指向其他路径时,只需更改app.config中的值,而无需重新编译代码


  • 您正在查找应用程序设置。请看:我同意@chrfin,但是在app.config中包含一个开发变量似乎很奇怪。这仍然需要重新编译。作者显然不想这么做。@Edin-OP将创建一个调试和发布版本,我相信这样就不需要在codeYes中不断更改,但您无法在编译版本中切换路径,无论是调试版本还是其他版本。您至少需要两次编译。另一方面,如果我想用Dev服务器测试发布版本呢?出于各种原因,性能测试、行为测试等等,我可能会这么做。。。您正在将构建配置捆绑到环境中,这在我看来不是一个好主意。我认为任何文件夹路径都不应该硬编码,但这不是问题所在@爱丁-我明确声明这是chrfin回答的另一种选择,因为OP可能不知道这一点!我现在在我的配置中看到以下内容。所以我可以随时在配置中更改字符串值@“\\PathtothedirectoryIwant******\”是的,您可以完全这样做。这与我的建议“隐藏”大致相同,但不易使用和出错(例如,如果密钥存在,则无编译时检查)=>对于初学者来说,这不是最好的推荐,就像OP所说的,他是IMHO…有优点也有缺点。这是您的好解决方案的替代方案。这是一个自包含的,并向新的C#开发者介绍了设置的实际工作方式:)You's right with
    向新的C#开发者介绍了设置的实际工作方式
    ,正因为如此,这也是一个很好的答案,但我认为在这种情况下没有“优点”,只有缺点(没有编译时检查,硬编码的“键”-字符串…)-什么“优点”我没看见吗?