需要在VS.NET 2017中设置特定于调试的环境变量

时间:2017-05-20 12:17:50

标签: c# visual-studio

所有

如果这是世界上最愚蠢的问题,我道歉。

我发现了这个:https://stackoverflow.com/a/155363/463196

我在找到答案时找不到菜单项:enter image description here

我想我需要对傻瓜进行视觉演练,除非这已经从VS.NET 2008和VS.NET 2017发生了变化。

修改

我需要这个的原因......我正在做C#,Azure。有一个环境变量,如果设置为Debug,将使存储转到模拟而不是实时Azure存储。我需要这个,以便我可以愉快地从测试到Prod w / out触摸我的App.Config文件。

3 个答案:

答案 0 :(得分:0)

您正在这里混合一些东西!有针对编译器的Debug特定变量,这些变量在Visual Studio IDE中设置。但这不是您所需要的! 您将要从Windows操作系统访问实际环境变量。看到 How do I get and set Environment variables in C#? 有关详细信息。而且,如果您不知道这些内容,可以使用CMD提示符使用“ SET”命令或Windows控制面板的“高级系统设置”进行设置。 如果您的应用程序在IIS中运行,则可能需要重新启动计算机以在程序中获取最新的环境变量。 每个程序总是从其父进程继承环境变量。

答案 1 :(得分:0)

要回答您提出的实际问题,请修改项目文件以将MSBuild AfterBuild目标与Exec任务一起使用。例如:

<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Debug' ">
    <Exec Command="set MY_ENVIRONMENT_VARIABLE_NAME=\"DEBUG\"" />
</Target>
<Target Name="AfterBuild" Condition="'$(Configuration)' == 'Release' ">
    <Exec Command="set MY_ENVIRONMENT_VARIABLE_NAME=\"RELEASE\"" />
</Target>

自从您提到app.config以来,一个更优雅的解决方案可能是考虑再次通过MSBuild自动在构建时转换该文件(这需要为特定的发行版配置替换适当的值)。 [在此站点上可以找到使用TransformXml MSBuild任务的示例。]

对于较少的手动过程,您可以安装Microsoft's own SlowCheetah extension,这将为您提供直接在Visual Studio中添加和配置这些转换的选项。此扩展基本上只是TransformXml周围的UI包装,因此不需要可以出现在任何CI /构建计算机上。

答案 2 :(得分:0)

这可能是一个过时的帖子,但是到目前为止给出的答案与我认为OP所要求的不符。我现在正在与Azure合作,您所要的是我在项目中所做的事情。

所以基本上,我在Azure中设置了环境变量,并且在调试时无法访问它们,但是有解决方案。

只需转到Project Properties => Debug,然后在其中添加特定的环境变量。

enter image description here

这样,在本地测试时,您在环境变量方面的输出将与实际连接到Azure时相同。