Skip to content

Commit 0d8dd22

Browse files
committed
Ingest and import Windows Forms analyzer props
Provide a mechanism to ingest Windows Forms specific analyzer props and targets into Microsoft.NET.Sdk.WindowsDesktop from Windows Forms transport package, and copy these files into `targets` folder of the SDK, so that the props files are resolved and imported when a developer builds a Windows Forms app. In the end the new props file will end up in a location similar to this: `C:\Program Files\dotnet\sdk\6.0.<version>\Sdks\Microsoft.NET.Sdk.WindowsDesktop\targets\`. This work relates to dotnet/designs#223, and acts as a workaround until dotnet/designs#181 is approved and implemented.
1 parent 06d97b9 commit 0d8dd22

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

packaging/Microsoft.NET.Sdk.WindowsDesktop/Microsoft.NET.Sdk.WindowsDesktop.ArchNeutral.csproj

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<ProjectGuid>{440d06b8-e3de-4c0d-ad25-cd4f43d836e1}</ProjectGuid>
44
<TargetFramework>net6.0</TargetFramework>
@@ -25,4 +25,30 @@
2525
<PackagingContent Include="targets\*" SubFolder="root\targets" />
2626
<PackagingContent Include="useSharedDesignerContext.txt" SubFolder="root" />
2727
</ItemGroup>
28+
29+
<!-- Windows Forms specific -->
30+
<PropertyGroup>
31+
<_WinFormsNuGetPath>$(PkgMicrosoft_Private_Winforms)</_WinFormsNuGetPath>
32+
<_WinFormsContentPath>$(_WinFormsNuGetPath)\sdk\dotnet-wpf\*</_WinFormsContentPath>
33+
</PropertyGroup>
34+
35+
<ItemGroup>
36+
<PackagingContent Include="$(_WinFormsContentPath)" SubFolder="root\targets" />
37+
</ItemGroup>
38+
39+
<!--
40+
This target *only* validates the content of Microsoft.Private.Winforms NuGet package
41+
to ensure we correctly import and reference props and targets.
42+
-->
43+
<Target Name="_EnsureWindowsFormsPackagingContent" BeforeTargets="IdentifyPackageAssets">
44+
<Error Text="Unable to resolve path to Microsoft.Private.Winforms NuGet package. Is %24(PkgMicrosoft_Private_Winforms) defined?"
45+
Condition="'$(_WinFormsNuGetPath)' == ''"/>
46+
47+
<ItemGroup>
48+
<_WinFormsContent Include="$(_WinFormsContentPath)" />
49+
</ItemGroup>
50+
51+
<Error Text="Microsoft.Private.Winforms NuGet package contains no content. Is this expected?"
52+
Condition="@(_WinFormsContent->Count()) == 0"/>
53+
</Target>
2854
</Project>

packaging/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.props

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,4 +161,7 @@
161161
<SupportedTargetFramework Remove="@(_UnsupportedNETCoreAppTargetFramework);@(_UnsupportedNETStandardTargetFramework);@(_UnsupportedNETFrameworkTargetFramework)" />
162162
</ItemGroup>
163163

164+
<!-- Import Windows Forms specific props -->
165+
<Import Project="System.Windows.Forms.Analyzers.props" />
166+
164167
</Project>

packaging/Microsoft.NET.Sdk.WindowsDesktop/targets/Microsoft.NET.Sdk.WindowsDesktop.targets

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,7 @@
155155
<!-- Import WPF Build logic only when we don't import NETFX's WinFX targets -->
156156
<Import Project="Microsoft.WinFX.targets" Condition="'$(ImportFrameworkWinFXTargets)' != 'true'"/>
157157

158+
<!-- Import Windows Forms specific targets -->
159+
<Import Project="System.Windows.Forms.Analyzers.targets" />
160+
158161
</Project>

0 commit comments

Comments
 (0)