File size: 9,055 Bytes
090629c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
<Project>

  <ItemDefinitionGroup Condition=" '$(_EnableWindowsDesktopGlobbing)' == 'true' ">
    <ApplicationDefinition>
      <Generator>MSBuild:Compile</Generator>
      <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
      <SubType>Designer</SubType>
    </ApplicationDefinition>

    <Page>
      <Generator>MSBuild:Compile</Generator>
      <XamlRuntime>$(DefaultXamlRuntime)</XamlRuntime>
      <SubType>Designer</SubType>
    </Page>
  </ItemDefinitionGroup>

  <ItemGroup Condition=" '$(_EnableWindowsDesktopGlobbing)' == 'true' ">
    <ApplicationDefinition Include="App.xaml"

                           Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And Exists('$(MSBuildProjectDirectory)/App.xaml') And '$(MSBuildProjectExtension)' == '.csproj'" />
    <ApplicationDefinition Include="Application.xaml"

                           Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And Exists('$(MSBuildProjectDirectory)/Application.xaml') And '$(MSBuildProjectExtension)' == '.vbproj'" />

    <Page Include="**/*.xaml"

          Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder);@(ApplicationDefinition)"

          Condition="'$(EnableDefaultPageItems)' != 'false'" />


    <!--

      See https://github.com/dotnet/wpf/issues/685

      Visual Studio would prefer that we remove **/*.xaml instead of

      being more precise.



      <None Remove="@(Page)"

              Condition="'$(EnableDefaultPageItems)' != 'false'" />

      <None Remove="@(ApplicationDefinition)"

            Condition="'$(EnableDefaultApplicationDefinition)' != 'false'" />

    -->
    <None Remove="**/*.xaml"

          Condition="'$(EnableDefaultApplicationDefinition)' != 'false' And '$(EnableDefaultPageItems)' != 'false'" />
  </ItemGroup>


  <ItemGroup Condition=" '$(_EnableWindowsDesktopNetCoreFrameworkReferences)' == 'true' ">

    <FrameworkReference Include="Microsoft.WindowsDesktop.App" IsImplicitlyDefined="true"

                        Condition="('$(UseWPF)' == 'true') And ('$(UseWindowsForms)' == 'true')"/>

    <FrameworkReference Include="Microsoft.WindowsDesktop.App.WPF" IsImplicitlyDefined="true"

                        Condition="('$(UseWPF)' == 'true') And ('$(UseWindowsForms)' != 'true')"/>

    <FrameworkReference Include="Microsoft.WindowsDesktop.App.WindowsForms" IsImplicitlyDefined="true"

                        Condition="('$(UseWPF)' != 'true') And ('$(UseWindowsForms)' == 'true')"/>
  </ItemGroup>


  <!--

    Traditionally, Visual Studio has supplied these references for .NET Framework based

    WPF Projects:



    .NET 3.x:   PresentationCore, PresentationFramework, WindowsBase

    .NET 4.x:   PresentationCore, PresentationFramework, WindowsBase, System.Xaml





    Microsoft.NET.WindowsDesktop.SDK will supply the following references to .NET Framework based

    WPF Projects:



    .NET 3.x:   PresentationCore, PresentationFramework, WindowsBase



    .NET 4.0:   PresentationCore, PresentationFramework, WindowsBase, System.Xaml,

                UIAutomationClient, UIAutomationClientSideProviders, UIAutomationProvider, UIAutomationTypes



    .NET 4.5+:  PresentationCore, PresentationFramework, WindowsBase, System.Xaml,

                UIAutomationClient, UIAutomationClientSideProviders, UIAutomationProvider, UIAutomationTypes

                System.Windows.Controls.Ribbon

  -->
  <ItemGroup Condition=" '$(_EnableWindowsDesktopNETFrameworkImplicitReference)' == 'true' ">
    <!--

      The following 3 _WpfCommonNetFxReference items normally require Condition="'$(_TargetFrameworkVersionValue)' >= '3.0'", since

      they are supported on .NET Framework 3.0 and above.



      This condition is implicitly satisfied by '$(_TargetFrameworkVersionValue)' >= '$(_WindowsDesktopSdkTargetFrameworkVersionFloor)'

      in the outer ItemGroup

    -->
    <_WpfCommonNetFxReference Include="WindowsBase" />
    <_WpfCommonNetFxReference Include="PresentationCore" />
    <_WpfCommonNetFxReference Include="PresentationFramework" />

    <_WpfCommonNetFxReference Include="System.Xaml" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'">
      <RequiredTargetFramework>4.0</RequiredTargetFramework>
    </_WpfCommonNetFxReference>
    <_WpfCommonNetFxReference Include="UIAutomationClient" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
    <_WpfCommonNetFxReference Include="UIAutomationClientSideProviders" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
    <_WpfCommonNetFxReference Include="UIAutomationProvider" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />
    <_WpfCommonNetFxReference Include="UIAutomationTypes" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.0'" />

    <_WpfCommonNetFxReference Include="System.Windows.Controls.Ribbon" Condition="'$(_TargetFrameworkVersionValue)' != '' And '$(_TargetFrameworkVersionValue)' >= '4.5'" />
  </ItemGroup>

  <ItemGroup Condition=" '$(_EnableWindowsDesktopNETFrameworkImplicitReference)' == 'true' ">

    <_SDKImplicitReference Include="@(_WpfCommonNetFxReference)"

                       Condition="'$(UseWPF)' == 'true'"/>

    <_SDKImplicitReference Include="System.Windows.Forms"

                        Condition="('$(UseWindowsForms)' == 'true') " />

    <_SDKImplicitReference Include="WindowsFormsIntegration"

                       Condition=" ('$(UseWindowsForms)' == 'true') And ('$(UseWPF)' == 'true') "/>
  </ItemGroup>


  <!--

        Supported (and unsupported) TargetFrameworks



        Visual Studio Project System determines the list of valid TargetFrameworks to show

        in the Project properties by querying SupportedTargetFramework values.



        The Project System does not refer to this list at this time for .NET Framework TFM's.

  -->

  <!--

    When WindowsDesktop SDK is used without setting UseWPF or UseWindowsForms, it shows a (suppressible) warning and functions much

    like Microsoft.NET.Sdk



    Likewise, when WindowsDesktop SDK is used with a netcore TFM that is less than 3.0, it will simply act as if it were an

    Microsoft.NET.Sdk project (and show a suppressible build-time warning).



    Detect these situations and skip updates to @(SupportedTargetFramework) etc.

  -->
  <ItemGroup Condition=" '$(_RemoveUnsupportedTargetFrameworksForWindowsDesktop)' == 'true' ">
    <!--

        Windows Forms and WPF are supported only on .NET Core 3.0+

    -->
    <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.0" />
    <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.1" />
    <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.0" />
    <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.1" />
    <_UnsupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.2" />

    <!--

        Windows Forms and WPF are not supported an any .NET Standard targets

    -->
    <_UnsupportedNETStandardTargetFramework Include="@(SupportedNETStandardTargetFramework)" />

    <!--

        Windows Forms was supported since .NET Framework 1.0, and is currently supported on

        .NET Framework 2.0+.



        WPF is supported on .NET Framework and WPF are supported on .NET Framework 3.0+



        In practice, the WindowsDesktop SDK is only supported on .NET Framework 3.0+ - this is controlled

        by $(_WindowsDesktopSdkTargetFrameworkVersionFloor), defined as 3.0, which applies to both .NETFramework

        and .NETCore.



        Here, we will encode .NET Framework 3.0 as the lowest supported version for both Windows Forms and WPF.



        The SDK does not define versions < 2.0 in @(SupportedNETFrameworkTargetFramework) list, so none of those

        need to be excluded here - removing 2.0 would suffice.

    -->
    <_UnsupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v2.0" />

    <SupportedNETCoreAppTargetFramework Remove="@(_UnsupportedNETCoreAppTargetFramework)" />
    <SupportedNETStandardTargetFramework Remove="@(_UnsupportedNETStandardTargetFramework)" />
    <SupportedNETFrameworkTargetFramework Remove="@(_UnsupportedNETFrameworkTargetFramework)" />

    <SupportedTargetFramework Remove="@(_UnsupportedNETCoreAppTargetFramework);@(_UnsupportedNETStandardTargetFramework);@(_UnsupportedNETFrameworkTargetFramework)" />
  </ItemGroup>

  <!--

    Import Windows Forms props.

    These come via the Windows Forms transport package, that can be found under

    https://github.com/dotnet/winforms/tree/main/pkg/Microsoft.Private.Winforms/sdk

  -->
  <Import Project="Microsoft.NET.Sdk.WindowsDesktop.WindowsForms.props" />

  <Import Project="Microsoft.NET.Sdk.WindowsDesktop.WPF.props" />

</Project>