Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
883c9f0
Refactor existing Analyzers in prep. to add VB Project.
KlausLoeffelmann May 9, 2024
0ef828f
Introduce first c# security analyzer and refactor projects accordingly.
KlausLoeffelmann Jun 5, 2024
8fd4dc6
Bump up Roslyn/Analyzer NuGet package versions.
KlausLoeffelmann Jun 6, 2024
ac2be21
Fix formatting in resource files and inconsistencies in unshipped files.
KlausLoeffelmann Jun 7, 2024
ed8e099
Setup remaining analyzer projects.
KlausLoeffelmann Jun 8, 2024
770ec0d
Finalize analyzer configuration.
KlausLoeffelmann Jun 9, 2024
18451a6
Add VB CodeFixes project, correct namespaces.
KlausLoeffelmann Jun 10, 2024
75a3109
Bump up XUnit NuGets to latest version (fixes unit tests).
KlausLoeffelmann Jun 11, 2024
6a82b6d
Correct analyzer IDs and clean up resource files.
KlausLoeffelmann Jun 11, 2024
fc30fa1
Patch build props to correctly include new Analyzer projects.
KlausLoeffelmann Jun 11, 2024
60a7cfb
Include new Analyzers in build definition.
KlausLoeffelmann Jun 12, 2024
f1ade38
Change language folders in package content targets.
KlausLoeffelmann Jun 13, 2024
1c2ae40
Add basic test infra for CSharp Analyzers and CodeFixes.
KlausLoeffelmann Jun 16, 2024
9a41f12
Add tests for ControlPropertySerialization analyzer.
KlausLoeffelmann Jun 16, 2024
528fc62
Bump up XUnit Verifier version and fix breaking changes.
KlausLoeffelmann Jun 16, 2024
d66db02
Update CSharp Verifier.
KlausLoeffelmann Jun 16, 2024
6ae7dee
Streamline DiagnosticDescriptor factories.
KlausLoeffelmann Jun 17, 2024
9425279
Refactor identifier names, namespaces, analyzer tests.
KlausLoeffelmann Jun 18, 2024
1d830cc
Fix Analyzer tests.
KlausLoeffelmann Jun 18, 2024
f1e3ae6
Fix issue with iteration numbers in CodeFix with multiple similar dia…
KlausLoeffelmann Jun 19, 2024
992c367
Eliminate legacy verifiers.
KlausLoeffelmann Jun 19, 2024
9f11482
Add Visual Basic Analyzer and Code Fix tests; fix up folder structure.
KlausLoeffelmann Jun 20, 2024
5610964
Fix VB CodeFix result file.
KlausLoeffelmann Jun 20, 2024
a94b865
Fix merge issues.
KlausLoeffelmann Jun 22, 2024
3cf1630
Address review feedback.
KlausLoeffelmann Jul 25, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,11 @@

<IsAnalyzerProject>false</IsAnalyzerProject>
<IsAnalyzerProject Condition="!$(IsTestProject) and
($(MSBuildProjectName.EndsWith('.Analyzers')) or $(MSBuildProjectName.EndsWith('.Analyzers.CSharp')))"
($(MSBuildProjectName.EndsWith('.Analyzers'))
or $(MSBuildProjectName.EndsWith('.CodeFixes.VisualBasic'))
or $(MSBuildProjectName.EndsWith('.CodeFixes.CSharp'))
or $(MSBuildProjectName.EndsWith('.Analyzers.VisualBasic'))
or $(MSBuildProjectName.EndsWith('.Analyzers.CSharp')))"
>true</IsAnalyzerProject>
</PropertyGroup>

Expand Down
76 changes: 76 additions & 0 deletions Winforms.sln
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TrimTestBinaryDeserializati
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BinaryFormatTests", "src\System.Private.Windows.Core\tests\BinaryFormatTests\BinaryFormatTests.csproj", "{57EC5288-9513-46CF-8FB7-626199690D90}"
EndProject
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "System.Windows.Forms.Analyzers.VisualBasic", "src\System.Windows.Forms.Analyzers.VisualBasic\src\System.Windows.Forms.Analyzers.VisualBasic.vbproj", "{FF211812-FCCC-4B6B-B536-C4D754195750}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Windows.Forms.Analyzers.CodeFixes.CSharp", "src\System.Windows.Forms.Analyzers.CodeFixes.CSharp\System.Windows.Forms.Analyzers.CodeFixes.CSharp.csproj", "{1F836B14-D13D-42E0-BEAF-A821DD75DE49}"
EndProject
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "System.Windows.Forms.Analyzers.CodeFixes.VisualBasic", "src\System.Windows.Forms.Analyzers.CodeFixes.VisualBasic\System.Windows.Forms.Analyzers.CodeFixes.VisualBasic.vbproj", "{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}"
EndProject
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "System.Windows.Forms.Analyzers.VisualBasic.Tests", "src\System.Windows.Forms.Analyzers.VisualBasic\tests\UnitTests\System.Windows.Forms.Analyzers.VisualBasic.Tests\System.Windows.Forms.Analyzers.VisualBasic.Tests.vbproj", "{0FD53580-3175-4F8F-8372-BE46C9122EE0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand Down Expand Up @@ -981,6 +989,70 @@ Global
{57EC5288-9513-46CF-8FB7-626199690D90}.Release|x64.Build.0 = Release|Any CPU
{57EC5288-9513-46CF-8FB7-626199690D90}.Release|x86.ActiveCfg = Release|Any CPU
{57EC5288-9513-46CF-8FB7-626199690D90}.Release|x86.Build.0 = Release|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Debug|arm64.ActiveCfg = Debug|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Debug|arm64.Build.0 = Debug|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Debug|x64.ActiveCfg = Debug|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Debug|x64.Build.0 = Debug|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Debug|x86.ActiveCfg = Debug|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Debug|x86.Build.0 = Debug|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Release|Any CPU.Build.0 = Release|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Release|arm64.ActiveCfg = Release|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Release|arm64.Build.0 = Release|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Release|x64.ActiveCfg = Release|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Release|x64.Build.0 = Release|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Release|x86.ActiveCfg = Release|Any CPU
{FF211812-FCCC-4B6B-B536-C4D754195750}.Release|x86.Build.0 = Release|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Debug|arm64.ActiveCfg = Debug|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Debug|arm64.Build.0 = Debug|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Debug|x64.ActiveCfg = Debug|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Debug|x64.Build.0 = Debug|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Debug|x86.ActiveCfg = Debug|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Debug|x86.Build.0 = Debug|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Release|Any CPU.Build.0 = Release|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Release|arm64.ActiveCfg = Release|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Release|arm64.Build.0 = Release|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Release|x64.ActiveCfg = Release|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Release|x64.Build.0 = Release|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Release|x86.ActiveCfg = Release|Any CPU
{1F836B14-D13D-42E0-BEAF-A821DD75DE49}.Release|x86.Build.0 = Release|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Debug|arm64.ActiveCfg = Debug|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Debug|arm64.Build.0 = Debug|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Debug|x64.ActiveCfg = Debug|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Debug|x64.Build.0 = Debug|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Debug|x86.ActiveCfg = Debug|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Debug|x86.Build.0 = Debug|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Release|Any CPU.Build.0 = Release|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Release|arm64.ActiveCfg = Release|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Release|arm64.Build.0 = Release|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Release|x64.ActiveCfg = Release|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Release|x64.Build.0 = Release|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Release|x86.ActiveCfg = Release|Any CPU
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1}.Release|x86.Build.0 = Release|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Debug|arm64.ActiveCfg = Debug|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Debug|arm64.Build.0 = Debug|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Debug|x64.ActiveCfg = Debug|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Debug|x64.Build.0 = Debug|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Debug|x86.ActiveCfg = Debug|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Debug|x86.Build.0 = Debug|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Release|Any CPU.Build.0 = Release|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Release|arm64.ActiveCfg = Release|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Release|arm64.Build.0 = Release|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Release|x64.ActiveCfg = Release|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Release|x64.Build.0 = Release|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Release|x86.ActiveCfg = Release|Any CPU
{0FD53580-3175-4F8F-8372-BE46C9122EE0}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down Expand Up @@ -1044,6 +1116,10 @@ Global
{55F3174F-C1FE-4C8F-AF71-2512630088F8} = {583F1292-AE8D-4511-B8D8-A81FE4642DDC}
{CFBCC732-C988-4FE7-A21B-98A142365374} = {680FB14C-7B0C-4D63-9F1A-18ACCDB0F52A}
{57EC5288-9513-46CF-8FB7-626199690D90} = {583F1292-AE8D-4511-B8D8-A81FE4642DDC}
{FF211812-FCCC-4B6B-B536-C4D754195750} = {E4C6C5F5-46E9-4C63-9628-26752B4D9C11}
{1F836B14-D13D-42E0-BEAF-A821DD75DE49} = {E4C6C5F5-46E9-4C63-9628-26752B4D9C11}
{C4C031D5-F79A-44B6-811E-0797E7D5C1C1} = {E4C6C5F5-46E9-4C63-9628-26752B4D9C11}
{0FD53580-3175-4F8F-8372-BE46C9122EE0} = {D3AD0BF9-F5E2-4913-9AE3-9C4998F95EA1}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {7B1B0433-F612-4E5A-BE7E-FCF5B9F6E136}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@
-->
<ProjectReference Include="..\..\src\System.Windows.Forms.Analyzers\src\System.Windows.Forms.Analyzers.csproj" />
<ProjectReference Include="..\..\src\System.Windows.Forms.Analyzers.CSharp\src\System.Windows.Forms.Analyzers.CSharp.csproj" />
<ProjectReference Include="..\..\src\System.Windows.Forms.Analyzers.VisualBasic\src\System.Windows.Forms.Analyzers.VisualBasic.vbproj" />
<ProjectReference Include="..\..\src\System.Windows.Forms.Analyzers.CodeFixes.CSharp\System.Windows.Forms.Analyzers.CodeFixes.CSharp.csproj" />
<ProjectReference Include="..\..\src\System.Windows.Forms.Analyzers.CodeFixes.VisualBasic\System.Windows.Forms.Analyzers.CodeFixes.VisualBasic.vbproj" />

</ItemGroup>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@
<FrameworkListFileClass Include="System.Drawing.Common.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Drawing.Design.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Drawing.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Private.Windows.Core.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.Analyzers.CodeFixes.CSharp.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.Analyzers.CodeFixes.VisualBasic.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.Analyzers.CSharp.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.Analyzers.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.Analyzers.VisualBasic.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.Design.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.Design.Editors.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Windows.Forms.Primitives.dll" Profile="WindowsForms" />
<FrameworkListFileClass Include="System.Private.Windows.Core.dll" Profile="WindowsForms" />
</ItemGroup>
</Project>
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
; Shipped analyzer releases
; https://github.com/dotnet/roslyn-analyzers/blob/master/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md

## Release .NET 6.0 RC2
## Release 6.0.0

### New Rules

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,17 @@
; https://github.com/dotnet/roslyn-analyzers/blob/master/src/Microsoft.CodeAnalysis.Analyzers/ReleaseTrackingAnalyzers.Help.md

### New Rules

Rule ID | Category | Severity | Notes
--------|----------|----------|-------
WFO0001 | Application Configuration | Error | CSharpDiagnosticDescriptors
WFO0002 | Application Configuration | Error | CSharpDiagnosticDescriptors
WFO1000 | WinForms Security | Error | CSharpDiagnosticDescriptors

### Removed Rules

Rule ID | Category | Severity | Notes
--------|----------|----------|--------------------
WFAC001 | Application Configuration | Error | ApplicationConfigurationGenerator, [Documentation](https://github.com/dotnet/winforms/blob/main/src/System.Windows.Forms.Analyzers.CSharp/ApplicationConfigurationGenerator.Help.md)
WFAC002 | Application Configuration | Error | ApplicationConfigurationGenerator, [Documentation](https://github.com/dotnet/winforms/blob/main/src/System.Windows.Forms.Analyzers.CSharp/ApplicationConfigurationGenerator.Help.md)

This file was deleted.

85 changes: 78 additions & 7 deletions src/System.Windows.Forms.Analyzers.CSharp/src/Resources/SR.resx
Original file line number Diff line number Diff line change
@@ -1,5 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema

Version 2.0

The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.

Example:

... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>

There are any number of "resheader" rows that contain simple
name/value pairs.

Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.

The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:

Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.

mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.

mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
Expand Down Expand Up @@ -58,20 +117,20 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="WFAC001Title" xml:space="preserve">
<data name="WFO0001Title" xml:space="preserve">
<value>Unsupported project type</value>
</data>
<data name="WFAC001Message" xml:space="preserve">
<data name="WFO0001Message" xml:space="preserve">
<value>Only projects with 'OutputType={0}' supported</value>
</data>
<data name="WFAC002Title" xml:space="preserve">
<data name="WFO0002Title" xml:space="preserve">
<value>Unsupported property value</value>
</data>
<data name="WFAC002Message" xml:space="preserve">
<data name="WFO0002Message" xml:space="preserve">
<value>ArgumentException: Project property '{0}' cannot be set to '{1}'</value>
</data>
<data name="WFAC002MessageWithReason" xml:space="preserve">
<value>ArgumentException: Project property '{0}' cannot be set to '{1}'. Reason: {2}</value>
<data name="WFO0002MessageWithReason" xml:space="preserve">
<value>ArgumentException: Project property '{0}' cannot be set to '{1}'. Reason: {2}.</value>
</data>
<data name="TextParseFailedFormat" xml:space="preserve">
<value>Text "{0}" cannot be parsed. The expected text format is "{1}".</value>
Expand All @@ -85,4 +144,16 @@
<data name="GdiplusNotTrueTypeFont" xml:space="preserve">
<value>Only TrueType fonts are supported. '{0}' is not a TrueType font.</value>
</data>
</root>
<data name="WFO1000AnalyzerDescription" xml:space="preserve">
<value>A property should determine its property content serialization with the DesignerSerializationVisibilityAttribute, DefaultValueAttribute or the ShouldSerializeProperty method.</value>
</data>
<data name="WFO1000AnalyzerTitle" xml:space="preserve">
<value>Missing code serialization configuration for property content</value>
</data>
<data name="WFO1000AnalyzerMessageFormat" xml:space="preserve">
<value>Property '{0}' does not configure the code serialization for its property content</value>
</data>
<data name="AddDesignerSerializationVisibilityCodeFixTitle" xml:space="preserve">
<value>Add DesignerSerializationVisibilityAttribute to property</value>
</data>
</root>
Loading