Debug msbuild custom task with msbuild v15.0
up vote
0
down vote
favorite
Microsoft's instructions for enabling debugging of MSBuild tasks no longer seem to work. I cannot get msbuild /?
to show the /debug
switch, and when I try dotnet publish /debug
it complains that /debug
is not a valid switch.
Is there any way to debug MSBuild tasks any more?
msbuild .net-core
add a comment |
up vote
0
down vote
favorite
Microsoft's instructions for enabling debugging of MSBuild tasks no longer seem to work. I cannot get msbuild /?
to show the /debug
switch, and when I try dotnet publish /debug
it complains that /debug
is not a valid switch.
Is there any way to debug MSBuild tasks any more?
msbuild .net-core
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
Microsoft's instructions for enabling debugging of MSBuild tasks no longer seem to work. I cannot get msbuild /?
to show the /debug
switch, and when I try dotnet publish /debug
it complains that /debug
is not a valid switch.
Is there any way to debug MSBuild tasks any more?
msbuild .net-core
Microsoft's instructions for enabling debugging of MSBuild tasks no longer seem to work. I cannot get msbuild /?
to show the /debug
switch, and when I try dotnet publish /debug
it complains that /debug
is not a valid switch.
Is there any way to debug MSBuild tasks any more?
msbuild .net-core
msbuild .net-core
asked Nov 21 at 19:26
tacos_tacos_tacos
5,841755107
5,841755107
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
The /debug
feature for msbuild was removed from public builds of MSBuild 15 and the code for it has later been removed entirely.
To "debug" logic in your build targets / msbuild files, your best option is to create binary logs using the -bl
argument and inspecting them using the MSBuild Structured Log Viewer. It shows you all the inputs/outputs to task invocation and all the steps that happen during Msbuild runs.
Debugging custom tasks (e.g. C# code) is very hard to do. It would involve looping+sleeping until Debugger.IsAttached
is true for debug builds (and then attaching to the process in Visual Studio) or calling Debugger.Launch()
(only on .NET Framework, not .NET Core MSBuild).
I suggest separating the actual task class from your logic implementation to allow you to unit test your logic. This should remove the need to debug it during runs.
You can see a sample of both the debugger logic and the separation in NuGet's PackTask and its PackTaskLogic class.
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
The /debug
feature for msbuild was removed from public builds of MSBuild 15 and the code for it has later been removed entirely.
To "debug" logic in your build targets / msbuild files, your best option is to create binary logs using the -bl
argument and inspecting them using the MSBuild Structured Log Viewer. It shows you all the inputs/outputs to task invocation and all the steps that happen during Msbuild runs.
Debugging custom tasks (e.g. C# code) is very hard to do. It would involve looping+sleeping until Debugger.IsAttached
is true for debug builds (and then attaching to the process in Visual Studio) or calling Debugger.Launch()
(only on .NET Framework, not .NET Core MSBuild).
I suggest separating the actual task class from your logic implementation to allow you to unit test your logic. This should remove the need to debug it during runs.
You can see a sample of both the debugger logic and the separation in NuGet's PackTask and its PackTaskLogic class.
add a comment |
up vote
1
down vote
accepted
The /debug
feature for msbuild was removed from public builds of MSBuild 15 and the code for it has later been removed entirely.
To "debug" logic in your build targets / msbuild files, your best option is to create binary logs using the -bl
argument and inspecting them using the MSBuild Structured Log Viewer. It shows you all the inputs/outputs to task invocation and all the steps that happen during Msbuild runs.
Debugging custom tasks (e.g. C# code) is very hard to do. It would involve looping+sleeping until Debugger.IsAttached
is true for debug builds (and then attaching to the process in Visual Studio) or calling Debugger.Launch()
(only on .NET Framework, not .NET Core MSBuild).
I suggest separating the actual task class from your logic implementation to allow you to unit test your logic. This should remove the need to debug it during runs.
You can see a sample of both the debugger logic and the separation in NuGet's PackTask and its PackTaskLogic class.
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
The /debug
feature for msbuild was removed from public builds of MSBuild 15 and the code for it has later been removed entirely.
To "debug" logic in your build targets / msbuild files, your best option is to create binary logs using the -bl
argument and inspecting them using the MSBuild Structured Log Viewer. It shows you all the inputs/outputs to task invocation and all the steps that happen during Msbuild runs.
Debugging custom tasks (e.g. C# code) is very hard to do. It would involve looping+sleeping until Debugger.IsAttached
is true for debug builds (and then attaching to the process in Visual Studio) or calling Debugger.Launch()
(only on .NET Framework, not .NET Core MSBuild).
I suggest separating the actual task class from your logic implementation to allow you to unit test your logic. This should remove the need to debug it during runs.
You can see a sample of both the debugger logic and the separation in NuGet's PackTask and its PackTaskLogic class.
The /debug
feature for msbuild was removed from public builds of MSBuild 15 and the code for it has later been removed entirely.
To "debug" logic in your build targets / msbuild files, your best option is to create binary logs using the -bl
argument and inspecting them using the MSBuild Structured Log Viewer. It shows you all the inputs/outputs to task invocation and all the steps that happen during Msbuild runs.
Debugging custom tasks (e.g. C# code) is very hard to do. It would involve looping+sleeping until Debugger.IsAttached
is true for debug builds (and then attaching to the process in Visual Studio) or calling Debugger.Launch()
(only on .NET Framework, not .NET Core MSBuild).
I suggest separating the actual task class from your logic implementation to allow you to unit test your logic. This should remove the need to debug it during runs.
You can see a sample of both the debugger logic and the separation in NuGet's PackTask and its PackTaskLogic class.
answered Nov 21 at 23:27
Martin Ullrich
41.7k7105118
41.7k7105118
add a comment |
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2f53419244%2fdebug-msbuild-custom-task-with-msbuild-v15-0%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