app.config transformations in Azure Devops for different environments
I've got a .Net Framework 4.6.1 project, which creates a Windows Service. We want to have this built and deployed by an Azure Devops pipeline. We've successfully created pipelines for all of our .Net Core web services (using the ASPNETCORE_ENVIRONMENT variable and a set of appsettings.{ENV}.json files) but the Windows Services don't seem to play as nicely in terms of providing different configuration for different environments.
I've got XDT transformations working for the App.config XML file. I can right click the files in Visual Studio and "Preview Transform" and it works fine.
What's not clear is how I translate this to the pipeline configuration. The Build task seems to be capable of running the transform but then I'm not sure how we have a different transformation for different Deploy stages. What happens instead is that all environments end up with whatever transformation was applied to the Build Configuration selected as part of the Build step.
I've followed numerous blog posts - including this one, which claims you can have multiple build configurations, but for which I don't seem to have the setting.
What am I missing?
c# azure-devops azure-pipelines azure-pipelines-build-task
add a comment |
I've got a .Net Framework 4.6.1 project, which creates a Windows Service. We want to have this built and deployed by an Azure Devops pipeline. We've successfully created pipelines for all of our .Net Core web services (using the ASPNETCORE_ENVIRONMENT variable and a set of appsettings.{ENV}.json files) but the Windows Services don't seem to play as nicely in terms of providing different configuration for different environments.
I've got XDT transformations working for the App.config XML file. I can right click the files in Visual Studio and "Preview Transform" and it works fine.
What's not clear is how I translate this to the pipeline configuration. The Build task seems to be capable of running the transform but then I'm not sure how we have a different transformation for different Deploy stages. What happens instead is that all environments end up with whatever transformation was applied to the Build Configuration selected as part of the Build step.
I've followed numerous blog posts - including this one, which claims you can have multiple build configurations, but for which I don't seem to have the setting.
What am I missing?
c# azure-devops azure-pipelines azure-pipelines-build-task
add a comment |
I've got a .Net Framework 4.6.1 project, which creates a Windows Service. We want to have this built and deployed by an Azure Devops pipeline. We've successfully created pipelines for all of our .Net Core web services (using the ASPNETCORE_ENVIRONMENT variable and a set of appsettings.{ENV}.json files) but the Windows Services don't seem to play as nicely in terms of providing different configuration for different environments.
I've got XDT transformations working for the App.config XML file. I can right click the files in Visual Studio and "Preview Transform" and it works fine.
What's not clear is how I translate this to the pipeline configuration. The Build task seems to be capable of running the transform but then I'm not sure how we have a different transformation for different Deploy stages. What happens instead is that all environments end up with whatever transformation was applied to the Build Configuration selected as part of the Build step.
I've followed numerous blog posts - including this one, which claims you can have multiple build configurations, but for which I don't seem to have the setting.
What am I missing?
c# azure-devops azure-pipelines azure-pipelines-build-task
I've got a .Net Framework 4.6.1 project, which creates a Windows Service. We want to have this built and deployed by an Azure Devops pipeline. We've successfully created pipelines for all of our .Net Core web services (using the ASPNETCORE_ENVIRONMENT variable and a set of appsettings.{ENV}.json files) but the Windows Services don't seem to play as nicely in terms of providing different configuration for different environments.
I've got XDT transformations working for the App.config XML file. I can right click the files in Visual Studio and "Preview Transform" and it works fine.
What's not clear is how I translate this to the pipeline configuration. The Build task seems to be capable of running the transform but then I'm not sure how we have a different transformation for different Deploy stages. What happens instead is that all environments end up with whatever transformation was applied to the Build Configuration selected as part of the Build step.
I've followed numerous blog posts - including this one, which claims you can have multiple build configurations, but for which I don't seem to have the setting.
What am I missing?
c# azure-devops azure-pipelines azure-pipelines-build-task
c# azure-devops azure-pipelines azure-pipelines-build-task
edited Nov 20 '18 at 15:46
Daniel Mann
39k66086
39k66086
asked Nov 20 '18 at 15:37
Jeremy GoochJeremy Gooch
3223819
3223819
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
What we do with VSTS which I assume is similar in the newer Azure Devops. We have the transformation add tokens to the config file IE "DefaultConnection": "Server=DBServer;Database=DB;User ID=DBUser;Password=DBPassword;" Then There is a task on the release enviroment called Tokenization which pulls variables set from the release enviorment to replace the underscored tokens.
We use this plugin to do the tokenization step. https://marketplace.visualstudio.com/items?itemName=TotalALM.totalalm-tokenization
Sorry for delay in replying - we've been trying a number of approaches. Can I ask what happens with regard to your Visual Studio instance? Do you still have XDT transforms / SlowCheetah config so that you're able to debug against different environments from Visual Studio?
– Jeremy Gooch
Dec 18 '18 at 10:25
Yes we use the release transform to insert the tokens into our main config something similar to this <add key="directoryPath" value="DirectoryPath" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
– Ryan Schlueter
Dec 18 '18 at 15:52
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53396466%2fapp-config-transformations-in-azure-devops-for-different-environments%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
What we do with VSTS which I assume is similar in the newer Azure Devops. We have the transformation add tokens to the config file IE "DefaultConnection": "Server=DBServer;Database=DB;User ID=DBUser;Password=DBPassword;" Then There is a task on the release enviroment called Tokenization which pulls variables set from the release enviorment to replace the underscored tokens.
We use this plugin to do the tokenization step. https://marketplace.visualstudio.com/items?itemName=TotalALM.totalalm-tokenization
Sorry for delay in replying - we've been trying a number of approaches. Can I ask what happens with regard to your Visual Studio instance? Do you still have XDT transforms / SlowCheetah config so that you're able to debug against different environments from Visual Studio?
– Jeremy Gooch
Dec 18 '18 at 10:25
Yes we use the release transform to insert the tokens into our main config something similar to this <add key="directoryPath" value="DirectoryPath" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
– Ryan Schlueter
Dec 18 '18 at 15:52
add a comment |
What we do with VSTS which I assume is similar in the newer Azure Devops. We have the transformation add tokens to the config file IE "DefaultConnection": "Server=DBServer;Database=DB;User ID=DBUser;Password=DBPassword;" Then There is a task on the release enviroment called Tokenization which pulls variables set from the release enviorment to replace the underscored tokens.
We use this plugin to do the tokenization step. https://marketplace.visualstudio.com/items?itemName=TotalALM.totalalm-tokenization
Sorry for delay in replying - we've been trying a number of approaches. Can I ask what happens with regard to your Visual Studio instance? Do you still have XDT transforms / SlowCheetah config so that you're able to debug against different environments from Visual Studio?
– Jeremy Gooch
Dec 18 '18 at 10:25
Yes we use the release transform to insert the tokens into our main config something similar to this <add key="directoryPath" value="DirectoryPath" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
– Ryan Schlueter
Dec 18 '18 at 15:52
add a comment |
What we do with VSTS which I assume is similar in the newer Azure Devops. We have the transformation add tokens to the config file IE "DefaultConnection": "Server=DBServer;Database=DB;User ID=DBUser;Password=DBPassword;" Then There is a task on the release enviroment called Tokenization which pulls variables set from the release enviorment to replace the underscored tokens.
We use this plugin to do the tokenization step. https://marketplace.visualstudio.com/items?itemName=TotalALM.totalalm-tokenization
What we do with VSTS which I assume is similar in the newer Azure Devops. We have the transformation add tokens to the config file IE "DefaultConnection": "Server=DBServer;Database=DB;User ID=DBUser;Password=DBPassword;" Then There is a task on the release enviroment called Tokenization which pulls variables set from the release enviorment to replace the underscored tokens.
We use this plugin to do the tokenization step. https://marketplace.visualstudio.com/items?itemName=TotalALM.totalalm-tokenization
answered Nov 20 '18 at 15:51
Ryan SchlueterRyan Schlueter
1,9921918
1,9921918
Sorry for delay in replying - we've been trying a number of approaches. Can I ask what happens with regard to your Visual Studio instance? Do you still have XDT transforms / SlowCheetah config so that you're able to debug against different environments from Visual Studio?
– Jeremy Gooch
Dec 18 '18 at 10:25
Yes we use the release transform to insert the tokens into our main config something similar to this <add key="directoryPath" value="DirectoryPath" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
– Ryan Schlueter
Dec 18 '18 at 15:52
add a comment |
Sorry for delay in replying - we've been trying a number of approaches. Can I ask what happens with regard to your Visual Studio instance? Do you still have XDT transforms / SlowCheetah config so that you're able to debug against different environments from Visual Studio?
– Jeremy Gooch
Dec 18 '18 at 10:25
Yes we use the release transform to insert the tokens into our main config something similar to this <add key="directoryPath" value="DirectoryPath" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
– Ryan Schlueter
Dec 18 '18 at 15:52
Sorry for delay in replying - we've been trying a number of approaches. Can I ask what happens with regard to your Visual Studio instance? Do you still have XDT transforms / SlowCheetah config so that you're able to debug against different environments from Visual Studio?
– Jeremy Gooch
Dec 18 '18 at 10:25
Sorry for delay in replying - we've been trying a number of approaches. Can I ask what happens with regard to your Visual Studio instance? Do you still have XDT transforms / SlowCheetah config so that you're able to debug against different environments from Visual Studio?
– Jeremy Gooch
Dec 18 '18 at 10:25
Yes we use the release transform to insert the tokens into our main config something similar to this <add key="directoryPath" value="DirectoryPath" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
– Ryan Schlueter
Dec 18 '18 at 15:52
Yes we use the release transform to insert the tokens into our main config something similar to this <add key="directoryPath" value="DirectoryPath" xdt:Transform="Replace" xdt:Locator="Match(key)"/>
– Ryan Schlueter
Dec 18 '18 at 15:52
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53396466%2fapp-config-transformations-in-azure-devops-for-different-environments%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown