我在VS2015的Universal Windows Store App项目中收到了大量的编译器警告CS1591 Missing XML comment for publicly visible type or member ...
,用于自动生成的代码文件,例如
我知道可用于修复这些警告的不同方法,但我无法使Quoc Lam's blog中提到的具体方法起作用。其他可能的解决方案对我不起作用,所以我该怎么办才能让它适用于我的项目?
还有一些我还不明白的事情:
.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>
答案 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->'"%(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>