In the comments you stated the Variables you need there are runtime constant. That means they won't change during execution, so you could declare them in a public static class with const Fields:
public static class DebugVariables
{
public const string TEST_URL = "test.com";
public const string HTTPS_PROTOCOL = "https";
}
You can now use this class to in your Attribute like this:
[PageUrl(DebugVariables.TEST_URL, Protocol = DebugVariables.HTTPS_PROTOCOL)]
And now to combine that knowledge to your case:
First of all check your Project Settings (right click on your Project and the Tab Build) if you have set the checkbox to Define DEBUG Constant. if you've set this one (or any other Symbol you wanted) in the Debug build and removed it in your Release Build you can now use this together with the Preprocessor Directive #if, #else and #endif to define the following:
#if DEBUG
[PageUrl(DebugVariables.TEST_URL, Protocol = DebugVariables.HTTPS_PROTOCOL)]
#else
[PageUrl(ProductionVariables.TEST_URL, Protocol = ProductionVariables.HTTPS_PROTOCOL)]
#endif
public class LoginPage : AbstractPage
{
}
If you set the DEBUG Constant correctly you should see that one of the Paths is greyed out and the other is not. If you now switch to your Release Build you should see the Change that the DEBUG is greyed out and the other one is correctly highlighted.
That means you could create as many static classes with const Fields as you need and then use the syntax above to set the Value depending on your Environment.