如何在 Windows Store 应用程序中禁用自动生成代码的 "Missing XML comment" 警告?
How to disable "Missing XML comment" warning for auto generated code in Windows Store app?
我在 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
文件,但完全迷路了。如果您需要此 post.
中仍然缺少的更多信息,请告诉我
更新
除了已接受的答案之外,我还 post 我的项目的工作解决方案,因为它不适合评论:
<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>
您可以在目标机智中加载要修改的文件列表 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>
您需要找到要覆盖的目标:示例中名为 "FindTheTagertToOverwrite"。它是 Universal Windows Store App 项目使用的目标,它是构建过程或您的自定义构建过程。抱歉,我不熟悉这个项目
你可以试试 MarkupCompilePass1
"CodeWarningRemover" 直到最近才为我的 UWP 项目工作,当时我创建了一个名称包含空格的解决方案配置。在深入研究 MSBuild 之后,我发现了以下内容:
<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>
我在 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
文件,但完全迷路了。如果您需要此 post.
更新
除了已接受的答案之外,我还 post 我的项目的工作解决方案,因为它不适合评论:
<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>
您可以在目标机智中加载要修改的文件列表 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>
您需要找到要覆盖的目标:示例中名为 "FindTheTagertToOverwrite"。它是 Universal Windows Store App 项目使用的目标,它是构建过程或您的自定义构建过程。抱歉,我不熟悉这个项目
你可以试试 MarkupCompilePass1
"CodeWarningRemover" 直到最近才为我的 UWP 项目工作,当时我创建了一个名称包含空格的解决方案配置。在深入研究 MSBuild 之后,我发现了以下内容:
<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>