1<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2018 and later: Unicode, Inc. and others. License & terms of use: http://www.unicode.org/copyright.html -->
3<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
4  <!-- This file is used to set compiler Warning configurations that are common to *all* ICU library code (common, i18n, and io). -->
5  <!-- Note: These options are for *all* configurations for *all* library projects.  -->
6  <ItemDefinitionGroup>
7    <ClCompile>
8      <WarningLevel>Level3</WarningLevel>
9      <!--
10        We treat the following Warnings as Errors in the ICU library code, in order to catch/prevent
11        issues like ICU-20209, ICU-20157, ICU-13816 and others.
12
13          C4251 Need to DLL-Export template instantiations.
14          C4661 No suitable definition provided for explicit template instantiation request.
15          C4715 Not all control paths return a value.
16          C4706 Assignment within conditional expression.
17          C4005 Macro redifintion.
18          C4068 Unknown pragma.
19          C4267 Conversion from size_t to type, possible loss of data.
20          C4910 __declspec(dllexport) and extern are incompatible on an explicit instantiation.
21          C4003 Not enough parameters for macro.
22      -->
23      <TreatSpecificWarningsAsErrors>4251;4661;4715;4706;4005;4068;4267;4910;4003;%(TreatSpecificWarningsAsErrors)</TreatSpecificWarningsAsErrors>
24    </ClCompile>
25  </ItemDefinitionGroup>
26</Project>
27