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

12

各位好,

如果我问的问题很蠢,请原谅。

我发现了这篇文章:https://dev59.com/A3VD5IYBdhLWcg3wE3Ro#155363

在按照回答操作时无法找到菜单项: enter image description here

我猜我需要一个傻瓜式的视觉演示,除非这已经从VS.NET 2008和VS.NET 2017改变了。

编辑:

我需要这个的原因是...我正在使用C#、Azure。有一个环境变量,如果设置为Debug,则会使存储转到模拟而不是真实的Azure存储。我需要这样做,这样我就可以从测试到生产而没有对我的App.Config文件进行更改。


1
很奇怪那个答案为什么会得到这么多票。他实际上描述了一个只适用于C++项目的设置,正如评论中所指出的。当然,您必须告诉我们您想要实现什么才能得到真正有用的答案。 - Hans Passant
@HansPassant 我正在使用C#和Azure。有一个环境变量,如果设置为Debug模式,将使存储转到模拟的Azure存储而不是实时的Azure存储。我需要这个功能,这样我就可以在测试和生产之间轻松切换,而无需对我的App.Config文件进行修改。 - Philip Tenn
1
不要告诉我,把它放在你的问题中。同时解释一下为什么不能简单地使用Environment.SetEnvironmentVariable()或配置设置或Debugger.IsAttached来完成这个任务。 - Hans Passant
3
哪种方法不需要每次在我的源代码中进行修改就可以在开发和生产之间切换?我希望能够构建/运行调试版本并将其配置为调试模式,然后构建发布版本并将其配置为生产模式。此外,请记住我来自Java背景,对这些不同的方法并不完全熟悉。 - Philip Tenn
3个回答

2
你把事情搞混了!编译器有特定于Debug的变量,这些变量在Visual Studio IDE中设置。但这不是你需要的!你需要访问Windows操作系统中的真实环境变量。请参见如何在C#中获取和设置环境变量?以获取详细信息。如果你不知道,可以使用CMD提示符或Windows控制面板的“高级系统设置”来设置这些变量。如果你的应用程序在IIS中运行,可能需要重新启动机器才能在程序中获取最新的环境变量。每个程序都会从其父进程继承环境变量。

1
这看起来对我来说是个答案。不确定为什么你被踩了。 - Aman B

2
回答您实际提出的问题,需要修改您的项目文件,使用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 替换特定发布配置的适当值),再次使用 MSBuild 中的 TransformXml 任务可以在此网站上找到示例。
要进行更少手动干预的过程,您可以安装 Microsoft 自己的 SlowCheetah 扩展程序,它将为您提供一个选项,在 Visual Studio 中直接添加和配置这些转换。该扩展程序实际上只是 TransformXml 的 UI 包装器,因此不需要存在于任何 CI/构建机器上。

0
这可能是一篇旧帖子,但到目前为止给出的答案并没有解决我认为OP正在寻求的问题。我现在正在使用Azure,你所要求的是我项目中已经完成的事情。
因此,基本上我在Azure中设置了我的环境变量,当调试时,我无法访问它们,但有一个解决方案。
只需转到项目属性 => 调试,然后添加特定的环境变量即可。

enter image description here

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接