所有
如果这是世界上最愚蠢的问题,我道歉。
我发现了这个:https://stackoverflow.com/a/155363/463196
我想我需要对傻瓜进行视觉演练,除非这已经从VS.NET 2008和VS.NET 2017发生了变化。
修改
我需要这个的原因......我正在做C#,Azure。有一个环境变量,如果设置为Debug,将使存储转到模拟而不是实时Azure存储。我需要这个,以便我可以愉快地从测试到Prod w / out触摸我的App.Config文件。
答案 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)