The first time I moved my UWP development beyond writing “throwaway code for learning purposes”, I did what I always do when starting a new “real” project: On the “Build” tab of the project properties, I switched the setting “Treat warnings as errors” to “All” and set the checkmark at “XML documentation file”.
Nasty surprise: When compiling the UWP app, the compiler stumbled over missing XML doc comments in code that was generated in the background.
Fortunately, I quickly found a solution on StackOverflow that automatically added a
#pragma warning disabled to the generated files using MSBuild. That worked well for me until recently, when I created a new solution configuration that had a name containing spaces. Digging a bit into MSBuild, and with the help of another StackOverflow answer, I was able to figure out the following build target (which I’ll add as an answer to the original StackOverflow question):
<Target Name="PragmaWarningDisablePrefixer" AfterTargets="MarkupCompilePass2"> <ItemGroup> <GeneratedCSFiles Include="**\*.g.cs;**\*.g.i.cs" /> </ItemGroup> <Message Text="CSFiles: @(GeneratedCSFiles->'"%(Identity)"')" /> <Exec Command="for %%f in (@(GeneratedCSFiles->'"%(Identity)"')) do echo #pragma warning disable > %%f.temp && type %%f >> %%f.temp && move /y %%f.temp %%f" /> </Target>
How to use this:
- Unload and edit your “.csproj” file in Visual Studio (or open it in Notepad if Visual Studio is closed)
- Copy-and-paste the task just before the closing
- Save and (re)open in Visual Studio