microsoft / templatestudio Goto Github PK
View Code? Open in Web Editor NEWTemplate Studio accelerates the creation of new WinUI 3, WPF, and UWP apps using a wizard-based experience.
License: Other
Template Studio accelerates the creation of new WinUI 3, WPF, and UWP apps using a wizard-based experience.
License: Other
The system currently is localized. However, the wizard needs an improved experience for adding new languages. Due to the v0.1 experience, we're moving this out to focus on polishing the experience.
We handle the concept of pages (in the wizard, in the templates and so on). For a certain page, the view part (xaml file) need to be called "xxxxView.xaml", for example, the "Blank Page" selected from the wizard will generate the following files:
Model/
• Blank1Model.cs
ViewModel/
• Blank1ViewModel.cs
View/
• Blank1View.xaml
That is, the "Blank Page" template will generate the Blank1View.xml
We want to double check that it is fine to have the templates called "Page" generating "Views".
Then, for the Code Behind framework, the xaml file will be named "xxxView.xaml" in order to be able to "reuse" as much xaml code as possible. Is that fine as well?
C:\programdata\UWPTemplates
We understand that, in general, the properties for the controls will be established / modified within event handlers. This means that, by default the basic framework will not use "Bindings" and will not have implementation of INotifyPropertyChange. Is that assumtion correct?
If they are using the SplitView template and select the Settings page, then it should be added to the bottom of the pane. You can see this in the News UWP app.
private static IEnumerable<BackgroundTaskBase> CreateInstances()
{
var backgroundTasks = new List<BackgroundTaskBase>();
backgroundTasks.Add(new BackgroundTask());
return backgroundTasks;
}
can be
private static IEnumerable<BackgroundTaskBase> CreateInstances()
{
var backgroundTasks = new List<BackgroundTaskBase>
{
new BackgroundTask()
};
return backgroundTasks;
}
Wizard: v1.0.313.1
Template: v0.0.0313.9
System.ArgumentException: Illegal characters in path.
at System.IO.Path.CheckInvalidPathChars(String path, Boolean checkAdditional)
at System.IO.Path.Combine(String[] paths)
at Microsoft.Templates.Core.TemplatesRepository.GetFrameworkTypeInfo(String fxType)
at Microsoft.Templates.Wizard.Steps.Framework.ViewModel.d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Templates.Wizard.Steps.StepViewModel.<b__9_0>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<>c.b__6_0(Object state)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Window.ShowHelper(Object booleanBox)
at System.Windows.Window.Show()
at System.Windows.Window.ShowDialog()
at Microsoft.Internal.VisualStudio.PlatformUI.WindowHelper.ShowModal(Window window, IntPtr parent)
at Microsoft.Templates.Wizard.VisualStudio.VsGenShell.ShowModal(Window dialog)
at Microsoft.Templates.Wizard.GenController.GetUserSelection(WizardSteps selectionSteps)
I'm working on the Template Engine which is being used in dotnet new
and Visual Studio for Mac, and also soon Visual Studio. I think we have some overlap here I'd like to discuss to see if it makes sense for us to converge. For more info on dotnet new see https://blogs.msdn.microsoft.com/dotnet/2017/02/07/announcing-net-core-tools-updates-in-vs-2017-rc/.
cc @mlorbetske
Item1 and Item2 should have some placeholder text to show the developer that they clicked on it and it triggered new content.
We have started implementing binding with {x:Bind} instead of {Binding} and we have found an issue. MVVMLight is based on establishing the page DataContext in xaml thru a ViewModel property in a static ViewModelLocator type. The thing is, x:bind doesn't work with the concept of DataContext, but with concept of properties in page code behind. The solution proposed here is to cast back the DataContext to the ViewModel and use it in xaml, using the DataContext as a bridge. We found that very strange, and we don't see the need to use the ViewModelLocator strategy (see post comments).
In my opinion we have different options:
Why isn't it SettingsStorageExtensions or SettingsStorage.Extensions
New empty page.
Enable the creation of projects based on MVVMLight
There seems to be some inconstancies around updating the VSIX. We have seen it automatically update and in other instances it requires you to shut down Visual Studio. I think we should also investigate whether we need to shut down PerfWatson2.exe before modifications.
Enable creation of projects without third party framework dependencies.
#Verified that the content is downloaded properly from the CND to %ProgramData%\UWPTemplates.
The templates discovery is not working properly. The mounting point in C:\users<user>.templateengine\settings.json is ok:
{
"MountPoints": [
{
"ParentMountPointId": "00000000-0000-0000-0000-000000000000",
"MountPointFactoryId": "94e92610-cf4c-4f6d-aeb6-9e42dde1899d",
"MountPointId": "02486ad3-79e9-40c2-9332-6df301943e25",
"Place": "C:\\ProgramData\\UWPTemplates\\Packages\\packages.nupkg"
},
{
"ParentMountPointId": "00000000-0000-0000-0000-000000000000",
"MountPointFactoryId": "8c19221b-dea3-4250-86fe-2d4e189a11d2",
"MountPointId": "1027b9dc-f2c2-401d-ae6c-fcfa24638c85",
**"Place": "C:\\ProgramData\\UWPTemplates\\Templates"**
}
],
"ComponentGuidToAssemblyQualifiedName": {},
"ProbingPaths": [
"C:\\Users\\<user>\\.templateengine\\UWPTemplates\\1.0.0\\content"
],
"ComponentTypeToGuidList": {}
}
But there is nothing loaded in the cache files (templatecache.json):
{
"TemplateInfo": []
}
The code running locally make the discovery properly and, after having the cache loaded the firts time, the extension running within Visua Studio shows the available templates fine.
doing Mdd.BuildNumber is breakable once we hit CY18. Should be yyyyMMdd aka 20170317 or something.
Should be WebView when creating the page
Project without navigation structure defined
I thought we were going to remove this from the wizard and just leave us-en in the project.
Store push notifications are planned to be added but we need to resolve a positive experience for the end user. Right now the install experience leaves a bit to be desired.
Enable the project creation for Apps using the SplitView / Hamburguer style.
Contextual action over an active project in the solution explorer to launch the wizard and add a page to the project.
rename basic to MVVM (Basic)
Looking at the Suspend and Resume service, it directly references AppData. I thought we had discussed for SettingStorage to abstract the ApplicationData.Current folders.
What was the thinking behind the two separate folders?
We should have the following structure for an MVVM project :
This is the “structure” that we’ve been using:
Model/
• CarModel.cs
• DriverModel.cs
ViewModel/
• CarViewModel.cs
• DriverViewModel.cs
View/
• CarView.xaml
• DriverView.xaml
Better reflect dev point of view
What about binary data? Serializing should be an overload or a separate method.
This will include a link to where to get the API key from
https://blogs.windows.com/buildingapps/2016/03/23/getting-started-with-map-apis-and-controls/
https://www.bingmapsportal.com/
namespace App17.Activation
{
class ActivationService
I feel like this should be
namespace App17.Activation
{
private class ActivationService
MVVM Light still have the lack of some methods to be able to implement the navigation for UWP Apps. We have implemented our own NavigationService for the MVVM Basic Framework. We want to double check that it fine to use the Basic NavigationService with the MVVM Light framework.
By the way, it can be used wiht the CodeBehind framework, do you think it is worthy.
Finally, we can create a Mandatory dev feature for all the frameworks which use the NavigationService. Is it fine?
Add in a Action Center notification.
We need a TODO if .RESW file is miss
catch (COMException)
{
//IF .RESW FILE IS MISSING WE GET THIS EXCEPTION
}
return resourceKey;ing
This page will have a section for About, licenses, and a privacy statement.
Change 1976 to current year
[assembly:
AssemblyCopyright("Copyright © 1976")]`
Currently you can only add one. Projects can have multiple tasks
Request Application Type
Request Framework
Show Summary
Such as Microsoft.com
I created a nav pane & MVVM Light with just a settings page.
I nav to the setting page
Switch to dark theme
nav to main page
nav back to setting page
switch to light theme
Expected result: Go to light theme
Actual result: no theme change happens
ToastNotificationService.cs and probably others
//TODO UWPTemplates: Handle activation from toast notification,
//for more info handling activation see
//https://blogs.msdn.microsoft.com/tiles_and_toasts/2015/07/08/quickstart-sending-a-local-toast-notification-and-handling-activations-from-it-windows-10/
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.