C# 在Visual Studio中根据生成类型设置变量?

C# 在Visual Studio中根据生成类型设置变量?,c#,asp.net-mvc,visual-studio,visual-studio-2013,C#,Asp.net Mvc,Visual Studio,Visual Studio 2013,我正在构建一个连接两个第三方服务的应用程序。这两个第三方服务都可以利用沙箱环境,该环境使用不同的URL、用户名和密码。我需要想出一些方法来表明我的构建是否应该尽可能有效地利用沙箱或产品 目前,我有一个全局静态类,其中包含一个名为isDebug的布尔值,我在调试和生产之间可能不同的每个值上使用三元运算符。这些值包括:URL、用户名、密码、表单ID、用户ID等。是否有一种有效的方法来设置这些值,如在web.config或其他文件中 全局类的示例: public static class Global

我正在构建一个连接两个第三方服务的应用程序。这两个第三方服务都可以利用沙箱环境,该环境使用不同的URL、用户名和密码。我需要想出一些方法来表明我的构建是否应该尽可能有效地利用沙箱或产品

目前,我有一个全局静态类,其中包含一个名为
isDebug
的布尔值,我在调试和生产之间可能不同的每个值上使用三元运算符。这些值包括:URL、用户名、密码、表单ID、用户ID等。是否有一种有效的方法来设置这些值,如在web.config或其他文件中

全局类的示例:

public static class GlobalVariables
{
    public static bool InDebug = false;

    public static readonly string Service1 = InDebug ? "https://example1.com" : "https://sandbox.example1.com";
}
在我的内心世界里

public struct ZdForms
{
    public static readonly long DefaultForm = GlobalVariables.InDebug ? 91267 : 140508;
    public static readonly long IssueForm = GlobalVariables.InDebug ? 91257 : 34708;
}
您可以使用将这些值存储在
.config
文件中。转换将基于所选的生成配置自动应用

转换包括使用
XPath语法添加、删除或修改配置文件不同部分的功能

例如:

<configuration xmlns:xdt="...">
  <connectionStrings>
    <add name="AWLT" connectionString="newstring"
       providerName="newprovider"
       xdt:Transform="Replace" 
       xdt:Locator="Condition(@name='oldname'
         or @providerName='oldprovider')" />
  </connectionStrings>
</configuration>

转换文件名为
web..config
,并与web.config文件一起放置。最简单的添加方法是右键单击web.config文件并“添加配置转换”。

您可以使用它将这些值存储在
.config
文件中。转换将基于所选的生成配置自动应用

转换包括使用
XPath语法添加、删除或修改配置文件不同部分的功能

例如:

<configuration xmlns:xdt="...">
  <connectionStrings>
    <add name="AWLT" connectionString="newstring"
       providerName="newprovider"
       xdt:Transform="Replace" 
       xdt:Locator="Condition(@name='oldname'
         or @providerName='oldprovider')" />
  </connectionStrings>
</configuration>

转换文件名为
web..config
,并与web.config文件一起放置。添加配置的最简单方法是右键单击web.config文件并“添加配置转换”。

您可以使用

例如,这个

public static readonly string Service1 = InDebug
    ? "https://example1.com"
    : "https://sandbox.example1.com";
会变成

#if DEBUG
    public static readonly string Service1 = "https://example1.com";
#else
    public static readonly string Service1 = "https://sandbox.example1.com";
#endif
当您在Debug下编译时,只会编译顶部的
Service1
。在任何其他版本下编译时,底部的
Service1
。对于调试/发布的情况,这可能是可行的,但是如果您开始需要更多的配置,那么您的源代码就会被这些指令弄得乱七八糟。。。在这种情况下,将配置文件与转换一起使用可能是最好的方法

此外,您将得到两个不同的二进制文件——一个用于调试,另一个用于非调试

您可以在“项目属性”>“生成”>“条件编译符号”(以空格分隔)下为每个配置定义其他指令常量。

您可以使用

例如,这个

public static readonly string Service1 = InDebug
    ? "https://example1.com"
    : "https://sandbox.example1.com";
会变成

#if DEBUG
    public static readonly string Service1 = "https://example1.com";
#else
    public static readonly string Service1 = "https://sandbox.example1.com";
#endif
当您在Debug下编译时,只会编译顶部的
Service1
。在任何其他版本下编译时,底部的
Service1
。对于调试/发布的情况,这可能是可行的,但是如果您开始需要更多的配置,那么您的源代码就会被这些指令弄得乱七八糟。。。在这种情况下,将配置文件与转换一起使用可能是最好的方法

此外,您将得到两个不同的二进制文件——一个用于调试,另一个用于非调试



您可以在“项目属性”>“构建”>“条件编译符号”(用空格分隔)下为每个配置定义附加的指令常量。

那么,在我给定的上下文中,这是否可行?它允许我定义一系列的值来填充到变量中吗?或者我必须像获取设置一样获取它们吗?您需要像读取任何其他配置条目一样从配置文件中读取它们。这只允许您在生成时根据选定的生成配置自动“修改”配置文件。是否有任何方法可以在调试期间从visual studio中执行此操作?是的,它基于生成配置。只需为所需的每一组配置变量创建备用调试/发布构建配置。然后只需使用工具栏上的下拉菜单选择要生成的配置。它们似乎只影响部署,而不影响visual studio生成。那么,在我给定的上下文中,这是否有效?它允许我定义一系列的值来填充到变量中吗?或者我必须像获取设置一样获取它们吗?您需要像读取任何其他配置条目一样从配置文件中读取它们。这只允许您在生成时根据选定的生成配置自动“修改”配置文件。是否有任何方法可以在调试期间从visual studio中执行此操作?是的,它基于生成配置。只需为所需的每一组配置变量创建备用调试/发布构建配置。然后只需使用工具栏上的下拉菜单选择要生成的配置。它们似乎只影响部署,而不影响visual studio生成。是的,我的应用程序在服务器上有两个单独的部署位置。一个是与服务的沙盒接口的沙盒测试平台。因此,当我发布到这些位置时,我希望传播正确的值。这正是配置文件的目的。在最简单的情况下,我会将
GlobalVariables
重命名为类似
Config
,并使用类似于
public string Service1{get{return ConfigurationManager.AppSettings[“Service1Url”];}}}
@JasonP的东西,我确信情况就是这样。当我第一次设计应用程序时,它会需要一些严重的返工。当你尝试这一点时,如果你的应用程序有意义的话,也可以考虑缓存设置,或者创建一个<>代码> ICONFIGUTION/COD>接口,将设置设置为属性。您可以按照自己的意愿实现它,并在以后轻松地进行更改。您可以使用web.config、SQL表、Azure表等。是的,我的应用程序在服务器上有两个单独的部署位置。一个是沙箱试验台