protected override void CopyProperties(IProject sourceProject, IProject targetProject) { VBNetProject vbProject = (VBNetProject)targetProject; base.CopyProperties(sourceProject, targetProject); FixProperty(vbProject, "DefineConstants", v => v.Replace(';', ',')); FixProperty(vbProject, "ProjectTypeGuids", v => v.Replace(ProjectTypeGuids.CSharp, ProjectTypeGuids.VBNet, StringComparison.OrdinalIgnoreCase)); // determine the StartupObject startupObject = vbProject.GetEvaluatedProperty("StartupObject"); if (string.IsNullOrEmpty(startupObject)) { IList <IClass> startupObjects = ICSharpCode.SharpDevelop.Gui.OptionPanels.ApplicationSettings.GetPossibleStartupObjects(sourceProject); if (startupObjects.Count == 1) { startupObject = startupObjects[0].FullyQualifiedName; if (vbProject.OutputType == OutputType.WinExe) { // we have to set StartupObject to prevent the VB compiler from choosing // the generated Main method. vbProject.SetProperty("StartupObject", startupObject); } } } }
static IClass CreateMyApplication(ICompilationUnit cu, VBNetProject project, string ns) { DefaultClass c = new DefaultClass(cu, ns + ".MyApplication"); c.ClassType = ClassType.Class; c.Modifiers = ModifierEnum.Internal | ModifierEnum.Sealed | ModifierEnum.Partial | ModifierEnum.Synthetic; c.Attributes.Add(new DefaultAttribute(CreateTypeRef(cu, "Microsoft.VisualBasic.HideModuleNameAttribute"))); switch (project.OutputType) { case OutputType.WinExe: c.BaseTypes.Add(CreateTypeRef(cu, "Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase")); if (project.GetEvaluatedProperty("MyType") == "WindowsForms") { c.Methods.Add( new DefaultMethod(c, "Main") { Modifiers = ModifierEnum.Internal | ModifierEnum.Static, ReturnType = c.ProjectContent.SystemTypes.Void, Parameters = new[] { new DefaultParameter( "args", new ArrayReturnType(c.ProjectContent, c.ProjectContent.SystemTypes.String, 1), DomRegion.Empty ) } }); } break; case OutputType.Exe: c.BaseTypes.Add(CreateTypeRef(cu, "Microsoft.VisualBasic.ApplicationServices.ConsoleApplicationBase")); break; default: c.BaseTypes.Add(CreateTypeRef(cu, "Microsoft.VisualBasic.ApplicationServices.ApplicationBase")); break; } return(c); }