如何在Windows应用商店应用中禁用“缺少XML注释”警告自动生成的代码?

时间:2015-11-21 15:02:26

标签: xaml msbuild compiler-warnings auto-generate

我在VS2015的Universal Windows Store App项目中收到了大量的编译器警告CS1591 Missing XML comment for publicly visible type or member ...,用于自动生成的代码文件,例如

  • App.g.cs
  • App.g.i.cs
  • SomePage.g.cs
  • SomePage.g.i.cs

我知道可用于修复这些警告的不同方法,但我无法使Quoc Lam's blog中提到的具体方法起作用。其他可能的解决方案对我不起作用,所以我该怎么办才能让它适用于我的项目?

还有一些我还不明白的事情:

  • 我在哪里放置包含新目标的代码行?我试图将它们放入我的Windows Phone项目文件(.csproj),但XamlGeneratedCodeFiles似乎总是空的(从诊断构建输出判断)
  • 我还尝试将AftetTargets属性从XamlMarkupCompilePass1设置为XamlMarkupCompilePass2,但仍与上述相同
  • XamlGeneratedCodeFiles实际填充数据的位置在哪里?或者我误解了什么?
  • XamlGeneratedCodeFiles是否可以访问正确的变量?

我还查看了几个msbuild .target文件但完全丢失了。如果您需要此帖子中遗漏的更多信息,请与我们联系。

更新

除了接受的答案,我发布了我的项目的工作解决方案,因为它不适合评论:

<Target Name="CodeWarningRemover" AfterTargets="MarkupCompilePass2">
    <ItemGroup>
        <CSFiles Include="**\*.g.cs;**\*.g.i.cs" />
    </ItemGroup>
    <Message Text="CSFiles: '@(CSFiles)'" />
    <Exec Command="for %%f in (@(CSFiles)) do echo #pragma warning disable > %%f.temp" />
    <Exec Command="for %%f in (@(CSFiles)) do type %%f >> %%f.temp" />
    <Exec Command="for %%f in (@(CSFiles)) do move /y %%f.temp %%f" />
</Target>

2 个答案:

答案 0 :(得分:3)

您可以加载要在目标机构ItemGroup中修改的文件列表:

<Target Name="CodeWarningRemover" AfterTargets="FindTheTagertToOverwrite">
    <ItemGroup>
        <Content Include="*.g.cs" />
        <Content Include="*.g.i.cs" />
    </ItemGroup>
    <Exec Command="for %%f in (@(Content)) do echo #pragma warning disable > %%f.temp" />
    <Exec Command="for %%f in (@(Content)) do type %%f >> %%f.temp" />
    <Exec Command="for %%f in (@(Content)) do copy /y %%f.temp %%f" />
</Target>

你需要找到要覆盖的目标:named&#34; FindTheTagertToOverwrite&#34;在样本中。它是Universal Windows Store App项目使用的目标及其构建过程或您的自定义构建过程。对不起,我不喜欢这个项目

您可以尝试使用MarkupCompilePass1

答案 1 :(得分:0)

“CodeWarningRemover”直到最近才开始为我的UWP项目工作,当时我创建了一个名称包含空格的解决方案配置。在深入了解MSBuild后,我能够找到以下内容:

<Target Name="PragmaWarningDisablePrefixer" AfterTargets="MarkupCompilePass2">
    <ItemGroup>
        <GeneratedCSFiles Include="**\*.g.cs;**\*.g.i.cs" />
    </ItemGroup>
    <Message Text="CSFiles: @(GeneratedCSFiles->'&quot;%(Identity)&quot;')" />
    <Exec Command="for %%f in (@(GeneratedCSFiles->'&quot;%(Identity)&quot;')) do echo #pragma warning disable &gt; %%f.temp &amp;&amp; type %%f &gt;&gt; %%f.temp &amp;&amp; move /y %%f.temp %%f" />
</Target>