Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit a4c601d

Browse files
authored
Sgen parameter conversion change: replace colon with space in arguments (#28439)
* replace colon with space in argument * ErrInvalidArgument * fixes according to pr comments * update usage message * usage message * Fix reference arg method * Update Microsoft.XmlSerializer.Generator.targets
1 parent 2d7b6dc commit a4c601d

File tree

3 files changed

+36
-28
lines changed

3 files changed

+36
-28
lines changed

src/Microsoft.XmlSerializer.Generator/pkg/build/Microsoft.XmlSerializer.Generator.targets

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<Delete Condition="Exists('$(_SerializerPdbIntermediateFolder)') == 'true'" Files="$(_SerializerPdbIntermediateFolder)" ContinueOnError="true"/>
1313
<Delete Condition="Exists('$(_SerializerCsIntermediateFolder)') == 'true'" Files="$(_SerializerCsIntermediateFolder)" ContinueOnError="true"/>
1414
<Message Text="Running Serialization Tool" Importance="normal" />
15-
<Exec Command="dotnet Microsoft.XmlSerializer.Generator $(IntermediateOutputPath)$(AssemblyName)$(TargetExt) --force --quiet --reference:@(Reference)" ContinueOnError="true"/>
15+
<Exec Command="dotnet Microsoft.XmlSerializer.Generator $(IntermediateOutputPath)$(AssemblyName)$(TargetExt) --force --quiet --reference @(Reference)" ContinueOnError="true"/>
1616
<Warning Condition="Exists('$(_SerializerCsIntermediateFolder)') != 'true'" Text="$(_SGenWarningText)" />
1717
<Csc Condition="Exists('$(_SerializerCsIntermediateFolder)') == 'true'" ContinueOnError="true" OutputAssembly="$(_SerializerDllIntermediateFolder)" References="@(ReferencePath);@(IntermediateAssembly)" EmitDebugInformation="$(DebugSymbols)" Sources="$(_SerializerCsIntermediateFolder)" TargetType="Library" ToolExe="$(CscToolExe)" ToolPath="$(CscToolPath)" DisabledWarnings="$(_SerializationAssemblyDisabledWarnings)"/>
1818
<Warning Condition="Exists('$(_SerializerDllIntermediateFolder)') != 'true' And Exists('$(_SerializerCsIntermediateFolder)') == 'true'" Text="$(_SGenWarningText)"/>
@@ -43,7 +43,7 @@
4343
<Delete Files="%(_ReferenceSerializerIntermediateFolder.Identity).cs" ContinueOnError="true"/>
4444
<Delete Files="%(_ReferenceSerializerIntermediateFolder.Identity).pdb" ContinueOnError="true"/>
4545
<Message Text="Running Serialization Tool for Reference Assembly" Importance="normal" />
46-
<Exec Command="dotnet Microsoft.XmlSerializer.Generator --force --quiet --reference:@(Reference) --assembly:%(_TargetSerializationAssembly.Identity) --type:%(_TargetSerializationAssembly.SerializationTypes) --out:$(IntermediateOutputPath)" ContinueOnError="true" />
46+
<Exec Command="dotnet Microsoft.XmlSerializer.Generator --force --quiet --reference @(Reference) --assembly %(_TargetSerializationAssembly.Identity) --type %(_TargetSerializationAssembly.SerializationTypes) --out $(IntermediateOutputPath)" ContinueOnError="true" />
4747
<Warning Condition="Exists('$(IntermediateOutputPath)%(_ReferenceSerializationAssemblyName.Identity).cs') != 'true'" Text="SGEN: Fail to generate %(_ReferenceSerializationAssemblyName.Identity)'. Please follow the instructions at https://go.microsoft.com/fwlink/?linkid=858594 and try again." />
4848
<Csc Condition="Exists('$(IntermediateOutputPath)%(_ReferenceSerializationAssemblyName.Identity).cs') == 'true'" ContinueOnError="true" OutputAssembly="$(IntermediateOutputPath)%(_ReferenceSerializationAssemblyName.Identity).dll" References="@(ReferencePath);@(IntermediateAssembly)" EmitDebugInformation="$(DebugSymbols)" Sources="$(IntermediateOutputPath)%(_ReferenceSerializationAssemblyName.Identity).cs" TargetType="Library" ToolExe="$(CscToolExe)" ToolPath="$(CscToolPath)" DisabledWarnings="$(_SerializationAssemblyDisabledWarnings)"/>
4949
<Warning Condition="Exists('$(IntermediateOutputPath)%(_ReferenceSerializationAssemblyName.Identity).dll') != 'true' And Exists('$(IntermediateOutputPath)%(_ReferenceSerializationAssemblyName.Identity).cs') == 'true'" Text="SGEN: Fail to compile %(_ReferenceSerializationAssemblyName.Identity).cs. Please follow the instructions at https://go.microsoft.com/fwlink/?linkid=858594 and try again." />

src/Microsoft.XmlSerializer.Generator/src/Sgen.cs

Lines changed: 33 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,6 @@ private int Run(string[] args)
4545
for (int i = 0; i < args.Length; i++)
4646
{
4747
string arg = args[i];
48-
string value = string.Empty;
49-
50-
if (arg.StartsWith("-"))
51-
{
52-
int colonPos = arg.IndexOf(":");
53-
if (colonPos != -1)
54-
{
55-
value = arg.Substring(colonPos + 1).Trim();
56-
arg = arg.Substring(0, colonPos).Trim();
57-
}
58-
}
5948

6049
if (ArgumentMatch(arg, "help") || ShortNameArgumentMatch(arg, "h"))
6150
{
@@ -73,18 +62,26 @@ private int Run(string[] args)
7362
}
7463
else if (ArgumentMatch(arg, "out") || ShortNameArgumentMatch(arg, "o"))
7564
{
76-
if (codePath != null)
65+
i++;
66+
if(i >= args.Length || codePath != null )
67+
{
68+
errs.Add(SR.Format(SR.ErrInvalidArgument, arg));
69+
}
70+
else
7771
{
78-
errs.Add(SR.Format(SR.ErrInvalidArgument, "--out", arg));
72+
codePath = args[i];
7973
}
80-
81-
codePath = value;
8274
}
8375
else if (ArgumentMatch(arg, "type"))
8476
{
85-
if (value != string.Empty)
77+
i++;
78+
if (i >= args.Length)
79+
{
80+
errs.Add(SR.Format(SR.ErrInvalidArgument, arg));
81+
}
82+
else
8683
{
87-
string[] typelist = value.Split(';');
84+
string[] typelist = args[i].Split(';');
8885
foreach (var type in typelist)
8986
{
9087
types.Add(type);
@@ -93,12 +90,15 @@ private int Run(string[] args)
9390
}
9491
else if (ArgumentMatch(arg, "assembly") || ShortNameArgumentMatch(arg, "a"))
9592
{
96-
if (assembly != null)
93+
i++;
94+
if (i >= args.Length || assembly != null)
9795
{
98-
errs.Add(SR.Format(SR.ErrInvalidArgument, "--assembly", arg));
96+
errs.Add(SR.Format(SR.ErrInvalidArgument, arg));
97+
}
98+
else
99+
{
100+
assembly = args[i];
99101
}
100-
101-
assembly = value;
102102
}
103103
else if (ArgumentMatch(arg, "quiet"))
104104
{
@@ -122,19 +122,27 @@ private int Run(string[] args)
122122
}
123123
else if (ArgumentMatch(arg, "reference"))
124124
{
125-
s_references = value;
126-
if (!string.IsNullOrEmpty(s_references))
125+
i++;
126+
if (i >= args.Length)
127127
{
128-
ParseReferences();
128+
errs.Add(SR.Format(SR.ErrInvalidArgument, arg));
129129
}
130+
else
131+
{
132+
s_references = args[i];
133+
if (!string.IsNullOrEmpty(s_references))
134+
{
135+
ParseReferences();
136+
}
137+
}
130138
}
131139
else
132140
{
133141
if (arg.EndsWith(".dll", StringComparison.InvariantCultureIgnoreCase) || arg.EndsWith(".exe", StringComparison.InvariantCultureIgnoreCase))
134142
{
135143
if (assembly != null)
136144
{
137-
errs.Add(SR.Format(SR.ErrInvalidArgument, "--assembly", arg));
145+
errs.Add(SR.Format(SR.ErrInvalidArgument, arg));
138146
}
139147

140148
assembly = arg;

src/System.Private.Xml/src/Resources/Strings.resx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3413,7 +3413,7 @@ building and deploying the assemblies with the application.
34133413
</data>
34143414
<data name="HelpUsage" xml:space="preserve">
34153415
<value>
3416-
Usage: dotnet {0} [[--assembly &lt;assembly name&gt;] | [&lt;assembly file location&gt;]] [--type] [--debug]</value>
3416+
Usage: dotnet {0} [--assembly &lt;assembly file path&gt;] [--type &lt;type name&gt;]</value>
34173417
</data>
34183418
<data name="HelpDevOptions" xml:space="preserve">
34193419
<value>

0 commit comments

Comments
 (0)