public virtual void SetConfigProperty(String name, String value) { CCITracing.TraceCall(); if (value == null) { value = String.Empty; } if (this.ProjectMgr != null) { foreach (ProjectConfig config in this.ProjectConfigs) { config.SetConfigurationProperty(name, value); } this.ProjectMgr.SetProjectFileDirty(true); } }
public void SetConfigProperty(string property, string value) { CCITracing.TraceCall(); if (value == null) { value = String.Empty; } if (this.project != null) { for (int i = 0, n = this.projectConfigs.Length; i < n; i++) { ProjectConfig config = projectConfigs[i]; config.SetConfigurationProperty(property, value); } this.project.SetProjectFileDirty(true); } }
public void SetConfigProperty(string name, string value) { CCITracing.TraceCall(); if (value == null) { value = String.Empty; } if (this.ProjectMgr != null) { for (int i = 0, n = this.ProjectConfigs.Count; i < n; i++) { ProjectConfig config = ProjectConfigs[i]; config.SetConfigurationProperty(name, value); } this.ProjectMgr.SetProjectFileDirty(true); } }
// ========================================================================================= // Methods // ========================================================================================= /// <summary> /// Sets the node property. /// </summary> /// <param name="propid">Property id.</param> /// <param name="value">Property value.</param> /// <returns>Returns success or failure code.</returns> public override int SetProperty(int propid, object value) { int result; __VSHPROPID id = (__VSHPROPID)propid; switch (id) { case __VSHPROPID.VSHPROPID_IsNonMemberItem: if (value == null) { throw new ArgumentNullException("value"); } bool boolValue; CCITracing.TraceCall(this.ID + "," + id.ToString()); if (Boolean.TryParse(value.ToString(), out boolValue)) { this.isNonMemberItem = boolValue; // Reset exclude from scc this.ExcludeNodeFromScc = this.IsNonMemberItem; } else { XHelperMethods.TraceFail("Could not parse the IsNonMemberItem property value."); } result = VSConstants.S_OK; break; default: result = base.SetProperty(propid, value); break; } return(result); }
protected virtual IVsTextLines GetTextLines() { CCITracing.TraceCall(); FileDocumentManager manager = this.GetDocumentManager() as FileDocumentManager; Debug.Assert(manager != null, "Could not get the FileDocumentManager"); Guid logicalView = Guid.Empty; IVsWindowFrame windowFrame = null; object docData; VsTextBuffer lBuffer; IVsTextLines lLines; manager.Open(false, false, logicalView, out windowFrame, WindowFrameShowAction.DontShow); Debug.Assert(windowFrame != null, "Could not get the IVsWindowFrame"); windowFrame.GetProperty((int)__VSFPROPID.VSFPROPID_DocData, out docData); // Get the VsTextBuffer lBuffer = docData as VsTextBuffer; if (lBuffer == null) { IVsTextBufferProvider lBufferProvider = docData as IVsTextBufferProvider; if (lBufferProvider != null) { NativeMethods.ThrowOnFailure(lBufferProvider.GetTextBuffer(out lLines)); } else { throw new Exception("Could get TextLines object."); } } else { lLines = lBuffer as IVsTextLines; } return(lLines); }
public override int DebugLaunch(uint grfLaunch) { CCITracing.TraceCall(); try { VsDebugTargetInfo info = new VsDebugTargetInfo(); info.cbSize = (uint)Marshal.SizeOf(info); info.dlo = Microsoft.VisualStudio.Shell.Interop.DEBUG_LAUNCH_OPERATION.DLO_CreateProcess; // On first call, reset the cache, following calls will use the cached values string property = GetConfigurationProperty("DebuggerCommand", true); if (string.IsNullOrEmpty(property)) { property = this._project.GetOutputAssembly(this.ConfigCanonicalName); } info.bstrExe = property; property = GetConfigurationProperty("DebuggerWorkingDirectory", false); if (string.IsNullOrEmpty(property)) { property = Path.GetDirectoryName(info.bstrExe); } info.bstrCurDir = property; property = GetConfigurationProperty("DebuggerCommandArguments", false); if (!string.IsNullOrEmpty(property)) { info.bstrArg = property; } property = GetConfigurationProperty("RemoteDebugMachine", false); if (property != null && property.Length > 0) { info.bstrRemoteMachine = property; } property = GetConfigurationProperty("RedirectToOutputWindow", false); if (property != null && string.Compare(property, "true", StringComparison.OrdinalIgnoreCase) == 0) { info.fSendStdoutToOutputWindow = 1; } else { info.fSendStdoutToOutputWindow = 0; } property = GetConfigurationProperty("EnableUnmanagedDebugging", false); if (property != null && string.Compare(property, "true", StringComparison.OrdinalIgnoreCase) == 0) { info.clsidCustom = VSConstants.DebugEnginesGuids.ManagedAndNative_guid; // {92EF0900-2251-11D2-B72E-0000F87572EF} } else { info.clsidCustom = VSConstants.DebugEnginesGuids.ManagedOnly_guid; // {449EC4CC-30D2-4032-9256-EE18EB41B62B} } info.grfLaunch = grfLaunch; VsShellUtilities.LaunchDebugger(this._project.Site, info); } catch (Exception e) { XSharpProjectPackage.Instance.DisplayException(e); return(Marshal.GetHRForException(e)); } return(VSConstants.S_OK); }
public virtual void SetSite(Microsoft.VisualStudio.OLE.Interop.IServiceProvider site) { CCITracing.TraceCall(); this.site = new ServiceProvider(site); }
public virtual void Close() { CCITracing.TraceCall(); this.site.Dispose(); this.site = null; }
public virtual void CanCreateProject(string filename, uint flags, out int canCreate) { CCITracing.TraceCall(); canCreate = 1; }
/// <summary> /// Get's called to tell the env that a file was renamed /// </summary> /// public void AfterRenameFile(string strOldName, string strNewName) { CCITracing.TraceCall(); this.getTPD().OnAfterRenameFile(this.theProject, strOldName, strNewName, VSRENAMEFILEFLAGS.VSRENAMEFILEFLAGS_NoFlags); }
public override int DebugLaunch(uint grfLaunch) { CCITracing.TraceCall(); try { if (grfLaunch == 0) { grfLaunch = (uint)__VSDBGLAUNCHFLAGS.DBGLAUNCH_Silent; } VsDebugTargetInfo info = new VsDebugTargetInfo(); info.cbSize = (uint)Marshal.SizeOf(info); info.dlo = DEBUG_LAUNCH_OPERATION.DLO_CreateProcess; // On first call, reset the cache, following calls will use the cached values string property = GetConfigurationProperty(XSharpProjectFileConstants.DebuggerCommand, true); if (string.IsNullOrEmpty(property)) { property = this._project.GetOutputAssembly(this.ConfigCanonicalName); } info.bstrExe = property; property = GetConfigurationProperty(XSharpProjectFileConstants.DebuggerWorkingDirectory, false); if (string.IsNullOrEmpty(property)) { property = Path.GetDirectoryName(info.bstrExe); } if (!Path.IsPathRooted(property)) { property = Path.Combine(this.ProjectMgr.ProjectFolder, property); } info.bstrCurDir = property; property = GetConfigurationProperty(XSharpProjectFileConstants.DebuggerCommandArguments, false); if (!string.IsNullOrEmpty(property)) { info.bstrArg = property; } property = GetConfigurationProperty("RemoteDebugMachine", false); if (property != null && property.Length > 0) { info.bstrRemoteMachine = property; } property = GetConfigurationProperty("RedirectToOutputWindow", false); if (property != null && string.Compare(property, "true", StringComparison.OrdinalIgnoreCase) == 0) { info.fSendStdoutToOutputWindow = 1; } else { info.fSendStdoutToOutputWindow = 0; } property = GetConfigurationProperty(XSharpProjectFileConstants.EnableUnmanagedDebugging, false); if (property != null && string.Compare(property, "true", StringComparison.OrdinalIgnoreCase) == 0) { info.clsidCustom = VSConstants.DebugEnginesGuids.ManagedAndNative_guid; // {92EF0900-2251-11D2-B72E-0000F87572EF} } else { info.clsidCustom = VSConstants.DebugEnginesGuids.ManagedOnly_guid; // {449EC4CC-30D2-4032-9256-EE18EB41B62B} } if (!string.IsNullOrEmpty(this.ProjectMgr.BuildProject.Xml.Sdk)) { // Sdk style project info.clsidCustom = VSConstants.DebugEnginesGuids.CoreSystemClr_guid; } info.grfLaunch = grfLaunch; VsShellUtilities.LaunchDebugger(this._project.Site, info); } catch (Exception e) { XSettings.LogException(e, "DebugLaunch"); return(Marshal.GetHRForException(e)); } return(VSConstants.S_OK); }
/// <summary> /// Called by the vs shell to start debugging (managed or unmanaged). /// Override this method to support other debug engines. /// </summary> /// <param name="grfLaunch">A flag that determines the conditions under which to start the debugger. For valid grfLaunch values, see __VSDBGLAUNCHFLAGS</param> /// <returns>If the method succeeds, it returns S_OK. If it fails, it returns an error code</returns> public override int DebugLaunch(uint grfLaunch) { CCITracing.TraceCall(); try { VsDebugTargetInfo info = new VsDebugTargetInfo(); info.cbSize = (uint)Marshal.SizeOf(info); info.dlo = Microsoft.VisualStudio.Shell.Interop.DEBUG_LAUNCH_OPERATION.DLO_CreateProcess; // On first call, reset the cache, following calls will use the cached values string property = GetConfigurationProperty("StartProgram", true); if (string.IsNullOrEmpty(property)) { info.bstrExe = ProjectMgr.GetOutputAssembly(this.ConfigName); } else { info.bstrExe = property; } property = GetConfigurationProperty("WorkingDirectory", false); if (string.IsNullOrEmpty(property)) { info.bstrCurDir = Path.GetDirectoryName(info.bstrExe); } else { if (Path.IsPathRooted(property)) { info.bstrCurDir = property; } else { var path = Path.Combine(ProjectMgr.BaseURI.AbsoluteUrl, property); if (Directory.Exists(path)) { info.bstrCurDir = path; } else { info.bstrCurDir = property; } } } property = GetConfigurationProperty("CmdArgs", false); if (!string.IsNullOrEmpty(property)) { info.bstrArg = property; } property = GetConfigurationProperty("RemoteDebugMachine", false); if (property != null && property.Length > 0) { info.bstrRemoteMachine = property; } info.fSendStdoutToOutputWindow = 0; property = GetConfigurationProperty("EnableUnmanagedDebugging", false); if (property != null && string.Compare(property, "true", StringComparison.OrdinalIgnoreCase) == 0) { //Set the unmanged debugger //TODO change to vsconstant when it is available in VsConstants (guidNativeOnlyEng was the old name, maybe it has got a new name) info.clsidCustom = new Guid("{3B476D35-A401-11D2-AAD4-00C04F990171}"); } else { //Set the managed debugger info.clsidCustom = VSConstants.CLSID_ComPlusOnlyDebugEngine; } info.grfLaunch = grfLaunch; LaunchDebugger(this.ProjectMgr.Site, info); } catch (Exception e) { var proj = ((NemerleProjectNode)ProjectMgr).ProjectInfo; proj.ShowMessage(e.Message, Nemerle.Completion2.MessageType.Error); return(Marshal.GetHRForException(e)); } return(VSConstants.S_OK); }
public virtual void Terminate() { CCITracing.Trace(this.GetType().FullName + ": terminated."); }
// ========================================================================================= // Methods // ========================================================================================= /// <summary> /// Hides all of the tabs in the Add Reference dialog except for the browse tab, which will search for wixlibs. /// </summary> /// <returns></returns> public override int AddProjectReference() { CCITracing.TraceCall(); Guid emptyGuid = Guid.Empty; Guid showOnlyThisTabGuid = Guid.Empty; Guid startOnThisTabGuid = VSConstants.GUID_BrowseFilePage; string helpTopic = "VS.AddReference"; string machineName = String.Empty; string browseFilters = this.AddReferenceDialogFilter; string browseLocation = this.AddReferenceDialogInitialDirectory; // initialize the structure that we have to pass into the dialog call VSCOMPONENTSELECTORTABINIT[] tabInitializers = new VSCOMPONENTSELECTORTABINIT[2]; // tab 1 is the Project References tab: passing VSHPROPID_ShowProjInSolutionPage will tell the Add Reference // dialog to call into our GetProperty to determine if we should show ourself in the dialog tabInitializers[0].dwSize = (uint)Marshal.SizeOf(typeof(VSCOMPONENTSELECTORTABINIT)); tabInitializers[0].guidTab = VSConstants.GUID_SolutionPage; tabInitializers[0].varTabInitInfo = (int)__VSHPROPID.VSHPROPID_ShowProjInSolutionPage; // tab 2 is the Browse tab tabInitializers[1].dwSize = (uint)Marshal.SizeOf(typeof(VSCOMPONENTSELECTORTABINIT)); tabInitializers[1].guidTab = VSConstants.GUID_BrowseFilePage; tabInitializers[1].varTabInitInfo = 0; // initialize the flags to control the dialog __VSCOMPSELFLAGS flags = __VSCOMPSELFLAGS.VSCOMSEL_HideCOMClassicTab | __VSCOMPSELFLAGS.VSCOMSEL_HideCOMPlusTab | __VSCOMPSELFLAGS.VSCOMSEL_IgnoreMachineName | __VSCOMPSELFLAGS.VSCOMSEL_MultiSelectMode; // get the dialog service from the environment IVsComponentSelectorDlg dialog = WixHelperMethods.GetService <IVsComponentSelectorDlg, SVsComponentSelectorDlg>(this.Site); try { // tell ourself not to show our project in the Add Reference dialog this.ShowProjectInSolutionPage = false; // show the dialog ErrorHandler.ThrowOnFailure(dialog.ComponentSelectorDlg( (uint)flags, (IVsComponentUser)this, this.AddReferenceDialogTitle, helpTopic, ref showOnlyThisTabGuid, ref startOnThisTabGuid, machineName, (uint)tabInitializers.Length, tabInitializers, browseFilters, ref browseLocation)); } catch (COMException e) { CCITracing.Trace(e); return(e.ErrorCode); } finally { // we can show ourself in the Add Reference dialog if somebody else invokes it this.ShowProjectInSolutionPage = true; } return(VSConstants.S_OK); }
public Package() { CCITracing.AddTraceLog("c:\\ccitrace.log"); }
/// <summary> /// Deploys the M-Files Application to a client and launches it. /// </summary> /// <param name="grfLaunch">Launch flags</param> /// <returns>Success code</returns> public override int DebugLaunch(uint grfLaunch) { // TODO: For debugging, check the grfLaunch flags. // The flags differ for "Launch" and "Launch with debugging". CCITracing.TraceCall(); // Resolve the test vault. var clientApp = new MFilesAPI.MFilesClientApplication(); var vaultName = GetConfigurationProperty("TestVault", true); MFilesAPI.VaultConnection vaultConnection; try { // Try to get the connection. vaultConnection = clientApp.GetVaultConnection(vaultName); } catch { // Vault wasn't found, ask the user for a new one. var selectVaultDialog = new SelectVaultDialog(); selectVaultDialog.ShowDialog(); if (selectVaultDialog.Result == System.Windows.Forms.DialogResult.Cancel) { return(VSConstants.S_FALSE); } // Get the user answer. vaultName = selectVaultDialog.VaultName; vaultConnection = clientApp.GetVaultConnection(selectVaultDialog.VaultName); // If the user defined this as the default vault, save it in the project file. if (selectVaultDialog.SetDefault) { this.SetConfigurationProperty("TestVault", selectVaultDialog.VaultName); } } // Get the M-Files install directory from the registry. var apiVersion = clientApp.GetAPIVersion().Display; var hklm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64); var mfKey = hklm64.OpenSubKey(@"Software\Motive\M-Files\" + apiVersion); var installDir = (string)mfKey.GetValue("InstallDir"); mfKey.Close(); hklm64.Close(); // Log out to free the current application. MFilesAPI.Vault vault = null; try { vault = clientApp.BindToVault(vaultName, IntPtr.Zero, false, true); if (vault != null) { vault.LogOutWithDialogs(IntPtr.Zero); } } catch { // We most likely weren't logged in so everything is okay. } // Deploy the application. string vaultGuid = vaultConnection.GetGUID(); var relativePath = string.Format(@"Client\Apps\{0}\sysapps\{1}", vaultGuid, this.project.GetProjectProperty("Name") ?? "unnamed"); var targetDir = Path.Combine(installDir, relativePath); // If the directory exists, remove it so there's no residue files left. if (Directory.Exists(targetDir)) { Directory.Delete(targetDir, true); } Directory.CreateDirectory(targetDir); // Extract the Zip contents to the target directory. DeployPackage(targetDir); // Log back into the application. vault = clientApp.BindToVault(vaultName, IntPtr.Zero, true, true); // If vault is null, the user cancelled the login -> Exit if (vault == null) { return(VSConstants.S_FALSE); } // Figure out the launch mode. var launchMode = (GetConfigurationProperty("LaunchMode", false) ?? "").ToLowerInvariant(); if (launchMode == "powershell") { // Create a powershell window to launch the application. // Create the initial state with the app and vault references. var builtInState = InitialSessionState.CreateDefault(); builtInState.Variables.Add(new SessionStateVariableEntry( "app", clientApp, "M-Files Application")); builtInState.Variables.Add(new SessionStateVariableEntry( "vault", vault, "M-Files Vault")); Runspace runspace = RunspaceFactory.CreateRunspace(builtInState); // Run the script. runspace.Open(); Pipeline pipeline = runspace.CreatePipeline(); pipeline.Commands.AddScript(GetConfigurationProperty("LaunchPSScript", false) ?? ""); pipeline.Invoke(); runspace.Close(); } else { // Launch the application by navigating to a path in the vault. var mfilesPath = clientApp.GetDriveLetter() + ":\\" + vaultName + "\\" + GetConfigurationProperty("LaunchMFilesPath", false); Process.Start("explorer.exe", string.Format("\"{0}\"", mfilesPath)); } return(VSConstants.S_OK); }
/// <summary> /// Override AddProjectReference to hide the .NET and COM tabs. /// /// This is copied from the base project - just removed some of /// the elements in the tabInitList to remove the .NET and COM /// tabs from the dialog. /// </summary> /// <returns>Success message</returns> public override int AddProjectReference() { CCITracing.TraceCall(); IVsComponentSelectorDlg4 componentDialog; string strBrowseLocations = Path.GetDirectoryName(this.BaseURI.Uri.LocalPath); var tabInitList = new List <VSCOMPONENTSELECTORTABINIT>() { new VSCOMPONENTSELECTORTABINIT { // Tell the Add Reference dialog to call hierarchies GetProperty with the following // propID to enablefiltering out ourself from the Project to Project reference varTabInitInfo = (int)__VSHPROPID.VSHPROPID_ShowProjInSolutionPage, guidTab = VSConstants.GUID_SolutionPage, }, // Add the Browse for file page new VSCOMPONENTSELECTORTABINIT { varTabInitInfo = 0, guidTab = VSConstants.GUID_BrowseFilePage, }, }; tabInitList.ForEach(tab => tab.dwSize = (uint)Marshal.SizeOf(typeof(VSCOMPONENTSELECTORTABINIT))); componentDialog = this.GetService(typeof(IVsComponentSelectorDlg)) as IVsComponentSelectorDlg4; try { // call the container to open the add reference dialog. if (componentDialog != null) { // Let the project know not to show itself in the Add Project Reference Dialog page this.ShowProjectInSolutionPage = false; // call the container to open the add reference dialog. string browseFilters = "M-Files Application Packages (*.zip)\0*.zip\0"; ErrorHandler.ThrowOnFailure(componentDialog.ComponentSelectorDlg5( (System.UInt32)(__VSCOMPSELFLAGS.VSCOMSEL_MultiSelectMode | __VSCOMPSELFLAGS.VSCOMSEL_IgnoreMachineName), (IVsComponentUser)this, 0, null, SR.GetString(SR.AddReferenceDialogTitle, CultureInfo.CurrentUICulture), // Title "VS.AddReference", // Help topic 0, 0, (uint)tabInitList.Count, tabInitList.ToArray(), ref addComponentLastActiveTab, browseFilters, ref strBrowseLocations, this.TargetFrameworkMoniker.FullName)); } } catch (COMException e) { Trace.WriteLine("Exception : " + e.Message); return(e.ErrorCode); } finally { // Let the project know it can show itself in the Add Project Reference Dialog page this.ShowProjectInSolutionPage = true; } return(VSConstants.S_OK); }