microsoft / TemplateStudio

Template Studio accelerates the creation of new WinUI 3, WPF, and UWP apps using a wizard-based experience.
Other
2.7k stars 461 forks source link

Port existing C# templates to VB #863

Closed mrlacey closed 7 years ago

mrlacey commented 7 years ago

As a continuation of #371 and X-Ref https://github.com/Microsoft/WindowsTemplateStudio/wiki/Visual-Basic

Port existing C# templates to VB.

Pages

Features

Need strategy and automation for the handling of future changes to C# templates and localization.

Needed (PowerShell?) scripts

Needed automated tests

Some of these may need to be purely manual so that C# code can evolve ahead of VB...TBD

Need to update documentation for VB support.

Update

mvegaca commented 7 years ago

Hi @mrlacey @ralarcon @crutkas Reviewing VB templates I've seen that we can use the same XAML code instead of duplicate those files. These files are the same file. .\templates\Pages\Blank\Views\BlankViewPage.xaml .\templates\Pages\BlankVB\Views\BlankViewPage.xaml

It makes sense to add the same XAML code on a different composition template? Will this code be always different on most of the pages? Have we planned how are going to grow on CSharp, VB, XAML y Xamarin?

mrlacey commented 7 years ago

I chose this approach for several reasons:

So, in conclusion, Yes, we could split out all the XAML files into another set of templates that get composed but it would be a lot of work to write and test this change for the sake of getting rid of one PowerShell script when there are a lot of other more important things we could be focusing that time and effort on.

For all of this, the VB work is coming as a "community contribution" so there's a disclaimer that comes with it ever being behind the C# version. VB support isn't official and blessed by Microsoft and not something I'm expecting them to work on. If this were to change it would require a lot more investment from them as it would slow the pace of the project. If others from the community come forward to help support the VB work, or we get contributions of VB versions of templates first, or Microsoft's priorities change; then we can revisit this.

For further reference, there were also comments on this subject here

mvegaca commented 7 years ago

Hi, Matt. I agree with you, composition templates for XAML code would be a nightmare, I just was trying to open the conversation... I was thinking in the following:

The same template includes CS and VB Code, both languages share XAML code included in the same folder... to enable this we will need to include some metadata in the template.json file to enable select the appropriated files once generated... sure this will deserve a PoC and considering it is not a priority, we can leave this open for the near future...

mrlacey commented 7 years ago

Another problem with having a XAML file only appear once in the template folder structure is it adds more complexity to the process for filtering templates. At the moment it works by copying whole folders. If we start sharing files the copying logic gets more complicated. It's not just a case of copying a directory if it is for the required language, it would then be a case of also copying other files which go with that template. Yes, all unnecessary complexity we don't need for now. Part of my reason for doing the work to support VB now was to find issues that make things more complicated or required code changes to make possible. It would have been better if we could have caught these issues earlier but hopefully doing it now will avoid other issues down the line.

mrlacey commented 7 years ago

Moving milestone back as won't happen for 1.4 - just trying to set expectations.

mrlacey commented 7 years ago

What are "installer icons with language adorners"? Glad you asked

image

crutkas commented 7 years ago

Where do said icons live?

mrlacey commented 7 years ago

@crutkas copies of adorners at https://github.com/Microsoft/WindowsTemplateStudio/tree/Issue863-VBTemplates/design/Assets/Logo/icon-adorners Original icon file at https://github.com/Microsoft/WindowsTemplateStudio/blob/Issue863-VBTemplates/design/Assets/Logo/windowsTemplateStudio_Logo_256x256.ico Language specific icons are: https://github.com/Microsoft/WindowsTemplateStudio/blob/Issue863-VBTemplates/code/src/ProjectTemplates/CSharp.UWP.2017.Solution/windowsTemplateStudio_Logo_256x256.ico and https://github.com/Microsoft/WindowsTemplateStudio/blob/Issue863-VBTemplates/code/src/ProjectTemplates/VBNet.UWP.VS2017.Solution/windowsTemplateStudio_Logo_256x256.ico

Nukepayload2 commented 7 years ago

I want to port the URI Scheme feature. Please leave it to me.

mrlacey commented 7 years ago

I want to port the URI Scheme feature. Please leave it to me.

@Nukepayload2 As probably the most complicated feature (in terms of the number of composition templates) and requiring the most manual testing I wasn't looking forward to that. Go ahead.

Nukepayload2 commented 7 years ago

Why ".csproj" is hard coded in BaseGenAndBuildFixture.BuildAppxBundle(String, String) ? It causes RunWackOnProjectWithAllPagesAndFeaturesAsync(String, String, String) always fail when testing VB templates.

mrlacey commented 7 years ago

Why ".csproj" is hard coded ?

Because everything only initially supported C# and so this wasn't an issue. Part of the work to support VB templates is adapting all the testing and generation logic to also support more than just C#.

mrlacey commented 7 years ago

The current plan is to close this and merge all the VB templates that have been created so far so that we can start gathering feedback on them from the dev nightly builds.

Creating new issues to follow on from the above items that weren't completed.

There is a known issue with the MasterDetail visual output where symbols are not displayed properly. This was not fixed so it can be used as a reference when adding tests to confirm identical visual output of identical projects created with the different languages.

If any other problems are discovered these should be raised as issues.

mrlacey commented 7 years ago

Closing this as these templates are now available in the dev-nightly build. Separate issues have been created for each of the above-noted items that were not completed as part of the PR for this issue. (These only relate to docs or were otherwise blocked.)

Any feedback on these templates will be greatly appreciated. Try them out yourself by installing the dev-nightly version of the templates.