Skip to content

Commit e84006b

Browse files
add projects capacities
1 parent f94f359 commit e84006b

14 files changed

+76
-46
lines changed

src/Microsoft.ML.CodeGenerator/CodeGenerator/CSharp/AzureCodeGenerator/AzureAttachModelCodeGenerator.cs

+1
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ public AzureAttachModelCodeGenerator(Pipeline pipeline, ColumnInferenceResults c
9090
IncludeRecommenderPackage = false,
9191
StablePackageVersion = _settings.StablePackageVersion,
9292
UnstablePackageVersion = _settings.UnstablePackageVersion,
93+
Target = _settings.Target,
9394
}.TransformText(),
9495
Name = $"{ _settings.OutputName }.Model.csproj",
9596
};

src/Microsoft.ML.CodeGenerator/CodeGenerator/CSharp/CodeGenerator.cs

+9-39
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Linq;
1010
using System.Text;
1111
using Microsoft.CodeAnalysis;
12+
using Microsoft.CodeAnalysis.CSharp.Syntax;
1213
using Microsoft.ML.AutoML;
1314
using Microsoft.ML.CodeGenerator.CodeGenerator;
1415
using Microsoft.ML.CodeGenerator.Templates.Azure.Model;
@@ -144,7 +145,7 @@ private void SetRequiredNugetPackages(IEnumerable<PipelineNode> trainerNodes, re
144145
var predictProjectFileContent = GeneratPredictProjectFileContent(_settings.OutputName,
145146
includeLightGbmPackage, includeMklComponentsPackage, includeFastTreePackage,
146147
includeImageTransformerPackage, includeImageClassificationPackage, includeRecommenderPackage, includeOnnxPackage, includeResNet18Package,
147-
_settings.StablePackageVersion, _settings.UnstablePackageVersion);
148+
_settings.StablePackageVersion, _settings.UnstablePackageVersion, _settings.Target);
148149

149150
var transformsAndTrainers = GenerateTransformsAndTrainers();
150151
var modelBuilderCSFileContent = GenerateModelBuilderCSFileContent(transformsAndTrainers.Usings, transformsAndTrainers.TrainerMethod, transformsAndTrainers.PreTrainerTransforms, transformsAndTrainers.PostTrainerTransforms, namespaceValue, _pipeline.CacheBeforeTrainer, labelTypeCsharp.Name, includeOnnxPackage);
@@ -175,40 +176,7 @@ private void SetRequiredNugetPackages(IEnumerable<PipelineNode> trainerNodes, re
175176
var modelProjectFileContent = GenerateModelProjectFileContent(includeLightGbmPackage,
176177
includeMklComponentsPackage, includeFastTreePackage, includeImageTransformerPackage,
177178
includeImageClassificationPackage, includeRecommenderPackage, includeOnnxModel,
178-
_settings.StablePackageVersion, _settings.UnstablePackageVersion);
179-
180-
return (modelInputCSFileContent, modelOutputCSFileContent, consumeModelCSFileContent, modelProjectFileContent);
181-
}
182-
183-
internal (string ModelInputCSFileContent, string ModelOutputCSFileContent, string ConsumeModelCSFileContent,
184-
string ModelProjectFileContent) GenerateAzureAttachImageModelProjectContents(string namespaceValue)
185-
{
186-
var classLabels = GenerateClassLabels();
187-
188-
// generate ModelInput.cs
189-
var modelInputCSFileContent = GenerateModelInputCSFileContent(namespaceValue, classLabels);
190-
modelInputCSFileContent = Utils.FormatCode(modelInputCSFileContent);
191-
192-
// generate ModelOutput.cs
193-
var modelOutputCSFileContent = new OnnxModelOutputClass()
194-
{
195-
Namespace = namespaceValue,
196-
Target = _settings.Target,
197-
}.TransformText();
198-
modelOutputCSFileContent = Utils.FormatCode(modelOutputCSFileContent);
199-
200-
// generate ConsumeModel.cs
201-
var consumeModelCSFileContent = new AzureAttachImageConsumeModel()
202-
{
203-
Namespace = namespaceValue,
204-
Target = _settings.Target,
205-
}.TransformText();
206-
consumeModelCSFileContent = Utils.FormatCode(consumeModelCSFileContent);
207-
208-
// generate Model.csproj
209-
var modelProjectFileContent = GenerateModelProjectFileContent(false,
210-
false, false, true,
211-
false, false,true, _settings.StablePackageVersion, _settings.UnstablePackageVersion);
179+
_settings.StablePackageVersion, _settings.UnstablePackageVersion, _settings.Target);
212180

213181
return (modelInputCSFileContent, modelOutputCSFileContent, consumeModelCSFileContent, modelProjectFileContent);
214182
}
@@ -366,7 +334,7 @@ internal IList<string> GenerateClassLabels(IDictionary<string, CodeGeneratorSett
366334
private static string GenerateModelProjectFileContent(bool includeLightGbmPackage,
367335
bool includeMklComponentsPackage, bool includeFastTreePackage, bool includeImageTransformerPackage,
368336
bool includeImageClassificationPackage, bool includeRecommenderPackage, bool includeOnnxModel,
369-
string stablePackageVersion, string unstablePackageVersion)
337+
string stablePackageVersion, string unstablePackageVersion, GenerateTarget target)
370338
{
371339
ModelProject modelProject = new ModelProject()
372340
{
@@ -378,7 +346,8 @@ private static string GenerateModelProjectFileContent(bool includeLightGbmPackag
378346
IncludeOnnxModel = includeOnnxModel,
379347
IncludeRecommenderPackage = includeRecommenderPackage,
380348
StablePackageVersion = stablePackageVersion,
381-
UnstablePackageVersion = unstablePackageVersion
349+
UnstablePackageVersion = unstablePackageVersion,
350+
Target = target,
382351
};
383352

384353
return modelProject.TransformText();
@@ -411,7 +380,7 @@ private static string GeneratPredictProjectFileContent(string namespaceValue, bo
411380
bool includeMklComponentsPackage, bool includeFastTreePackage, bool includeImageTransformerPackage,
412381
bool includeImageClassificationPackage, bool includeRecommenderPackage,
413382
bool includeOnnxPackage, bool includeResNet18Package,
414-
string stablePackageVersion, string unstablePackageVersion)
383+
string stablePackageVersion, string unstablePackageVersion, GenerateTarget target)
415384
{
416385
var predictProjectFileContent = new PredictProject()
417386
{
@@ -425,7 +394,8 @@ private static string GeneratPredictProjectFileContent(string namespaceValue, bo
425394
IncludeResNet18Package = includeResNet18Package,
426395
IncludeRecommenderPackage = includeRecommenderPackage,
427396
StablePackageVersion = stablePackageVersion,
428-
UnstablePackageVersion = unstablePackageVersion
397+
UnstablePackageVersion = unstablePackageVersion,
398+
Target = target,
429399
};
430400
return predictProjectFileContent.TransformText();
431401
}

src/Microsoft.ML.CodeGenerator/Templates/Console/ModelProject.cs

+8-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,13 @@ public virtual string TransformText()
7272
this.Write(" <None Update=\"bestModel.onnx\">\r\n <CopyToOutputDirectory>PreserveNewest</" +
7373
"CopyToOutputDirectory>\r\n </None>\r\n");
7474
}
75-
this.Write(" </ItemGroup>\r\n \r\n</Project>\r\n");
75+
this.Write(" </ItemGroup>\r\n\r\n <ItemGroup>\r\n");
76+
if (Target==CSharp.GenerateTarget.Cli) {
77+
this.Write(" <ProjectCapability Include=\"MLNETCLIGenerated\" />\r\n");
78+
}else{
79+
this.Write(" <ProjectCapability Include=\"ModelBuilderGenerated\" />\r\n");
80+
}
81+
this.Write(" </ItemGroup>\r\n</Project>\r\n");
7682
return this.GenerationEnvironment.ToString();
7783
}
7884

@@ -85,6 +91,7 @@ public virtual string TransformText()
8591
public bool IncludeRecommenderPackage {get;set;}
8692
public string StablePackageVersion {get;set;}
8793
public string UnstablePackageVersion {get;set;}
94+
internal CSharp.GenerateTarget Target {get;set;}
8895

8996
}
9097
#region Base class

src/Microsoft.ML.CodeGenerator/Templates/Console/ModelProject.tt

+9-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,14 @@
4444
</None>
4545
<#}#>
4646
</ItemGroup>
47-
47+
48+
<ItemGroup>
49+
<# if (Target==CSharp.GenerateTarget.Cli) {#>
50+
<ProjectCapability Include="MLNETCLIGenerated" />
51+
<#}else{#>
52+
<ProjectCapability Include="ModelBuilderGenerated" />
53+
<#}#>
54+
</ItemGroup>
4855
</Project>
4956
<#+
5057
public bool IncludeLightGBMPackage {get;set;}
@@ -56,4 +63,5 @@ public bool IncludeOnnxModel {get; set;}
5663
public bool IncludeRecommenderPackage {get;set;}
5764
public string StablePackageVersion {get;set;}
5865
public string UnstablePackageVersion {get;set;}
66+
internal CSharp.GenerateTarget Target {get;set;}
5967
#>

src/Microsoft.ML.CodeGenerator/Templates/Console/PredictProject.cs

+8-1
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,13 @@ public virtual string TransformText()
7575
this.Write(this.ToStringHelper.ToStringWithCulture(Namespace));
7676
this.Write(".Model\\");
7777
this.Write(this.ToStringHelper.ToStringWithCulture(Namespace));
78-
this.Write(".Model.csproj\" />\r\n </ItemGroup>\r\n</Project>\r\n");
78+
this.Write(".Model.csproj\" />\r\n </ItemGroup>\r\n\r\n <ItemGroup>\r\n");
79+
if (Target==CSharp.GenerateTarget.Cli) {
80+
this.Write(" <ProjectCapability Include=\"MLNETCLIGenerated\" />\r\n");
81+
}else{
82+
this.Write(" <ProjectCapability Include=\"ModelBuilderGenerated\" />\r\n");
83+
}
84+
this.Write(" </ItemGroup>\r\n</Project>\r\n");
7985
return this.GenerationEnvironment.ToString();
8086
}
8187

@@ -90,6 +96,7 @@ public virtual string TransformText()
9096
public bool IncludeRecommenderPackage {get;set;}
9197
public string StablePackageVersion {get;set;}
9298
public string UnstablePackageVersion {get;set;}
99+
internal CSharp.GenerateTarget Target {get;set;}
93100

94101
}
95102
#region Base class

src/Microsoft.ML.CodeGenerator/Templates/Console/PredictProject.tt

+9
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,14 @@
4141
<ItemGroup>
4242
<ProjectReference Include="..\\<#= Namespace #>.Model\\<#= Namespace #>.Model.csproj" />
4343
</ItemGroup>
44+
45+
<ItemGroup>
46+
<# if (Target==CSharp.GenerateTarget.Cli) {#>
47+
<ProjectCapability Include="MLNETCLIGenerated" />
48+
<#}else{#>
49+
<ProjectCapability Include="ModelBuilderGenerated" />
50+
<#}#>
51+
</ItemGroup>
4452
</Project>
4553
<#+
4654
public string Namespace {get;set;}
@@ -54,4 +62,5 @@ public bool IncludeResNet18Package {get; set;}
5462
public bool IncludeRecommenderPackage {get;set;}
5563
public string StablePackageVersion {get;set;}
5664
public string UnstablePackageVersion {get;set;}
65+
internal CSharp.GenerateTarget Target {get;set;}
5766
#>

test/Microsoft.ML.CodeGenerator.Tests/ApprovalTests/ConsoleCodeGeneratorTests.AzureCodeGeneratorTest.test.ConsoleApp.csproj.approved.txt

+4
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@
1111
<ItemGroup>
1212
<ProjectReference Include="..\Test.Model\Test.Model.csproj" />
1313
</ItemGroup>
14+
15+
<ItemGroup>
16+
<ProjectCapability Include="ModelBuilderGenerated" />
17+
</ItemGroup>
1418
</Project>

test/Microsoft.ML.CodeGenerator.Tests/ApprovalTests/ConsoleCodeGeneratorTests.AzureCodeGeneratorTest.test.Model.csproj.approved.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,8 @@
1616
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1717
</None>
1818
</ItemGroup>
19-
19+
20+
<ItemGroup>
21+
<ProjectCapability Include="ModelBuilderGenerated" />
22+
</ItemGroup>
2023
</Project>

test/Microsoft.ML.CodeGenerator.Tests/ApprovalTests/ConsoleCodeGeneratorTests.AzureImageCodeGeneratorTest.CodeGenTest.ConsoleApp.csproj.approved.txt

+4
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,8 @@
1212
<ItemGroup>
1313
<ProjectReference Include="..\CodeGenTest.Model\CodeGenTest.Model.csproj" />
1414
</ItemGroup>
15+
16+
<ItemGroup>
17+
<ProjectCapability Include="ModelBuilderGenerated" />
18+
</ItemGroup>
1519
</Project>

test/Microsoft.ML.CodeGenerator.Tests/ApprovalTests/ConsoleCodeGeneratorTests.AzureImageCodeGeneratorTest.CodeGenTest.Model.csproj.approved.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,8 @@
1717
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1818
</None>
1919
</ItemGroup>
20-
20+
21+
<ItemGroup>
22+
<ProjectCapability Include="ModelBuilderGenerated" />
23+
</ItemGroup>
2124
</Project>

test/Microsoft.ML.CodeGenerator.Tests/ApprovalTests/ConsoleCodeGeneratorTests.ConsoleAppProjectFileContentTest.approved.txt

+4
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,8 @@
1212
<ItemGroup>
1313
<ProjectReference Include="..\MyNamespace.Model\MyNamespace.Model.csproj" />
1414
</ItemGroup>
15+
16+
<ItemGroup>
17+
<ProjectCapability Include="MLNETCLIGenerated" />
18+
</ItemGroup>
1519
</Project>

test/Microsoft.ML.CodeGenerator.Tests/ApprovalTests/ConsoleCodeGeneratorTests.ModelProjectFileContentTestOnlyStableProjects.approved.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,8 @@
1515
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1616
</None>
1717
</ItemGroup>
18-
18+
19+
<ItemGroup>
20+
<ProjectCapability Include="MLNETCLIGenerated" />
21+
</ItemGroup>
1922
</Project>

test/Microsoft.ML.CodeGenerator.Tests/ApprovalTests/ConsoleCodeGeneratorTests.Recommendation_GenerateConsoleAppProjectContents_VerifyPredictProject.approved.txt

+4
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@
1111
<ItemGroup>
1212
<ProjectReference Include="..\MyNamespace.Model\MyNamespace.Model.csproj" />
1313
</ItemGroup>
14+
15+
<ItemGroup>
16+
<ProjectCapability Include="MLNETCLIGenerated" />
17+
</ItemGroup>
1418
</Project>

test/Microsoft.ML.CodeGenerator.Tests/ApprovalTests/ConsoleCodeGeneratorTests.Recommendation_GenerateModelProjectContents_VerifyModelProject.approved.txt

+4-1
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,8 @@
1313
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
1414
</None>
1515
</ItemGroup>
16-
16+
17+
<ItemGroup>
18+
<ProjectCapability Include="MLNETCLIGenerated" />
19+
</ItemGroup>
1720
</Project>

0 commit comments

Comments
 (0)