问题标签 [envdte]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
2112 浏览

c# - 如何以编程方式在 vs 2008 中创建新的空白解决方案?

基于设计的方法是:新项目 -> 其他项目类型 -> Visual Studio 解决方案 -> 空白解决方案

我必须在 C# 中以编程方式创建一个空白解决方案,并在此解决方案中添加新的空项目和文件。我在网上找到了很多使用 DTE 的代码,但他们正在现有的解决方案资源管理器中添加我的空项目,所以请给我一些参考代码。

0 投票
2 回答
666 浏览

visual-studio-2005 - how to automate conversion of visual studio project to use Intel C++ Compiler.

We are using Intel C++ compiler for improving the performance of our C++ code. In order to use it, we need to convert our visual studio project into intel project through the IDE. Since Intel compiler isn't installed everywhere, hence we do this step only on those machines where we need to create intel builds.

We wanted to explore a method to automate this conversion process through some script. We were wondering if we could use EnvDTE API to do the same.

So far we have been able to reach up to the following in VBScript:

At this point we can call functions like this:

and they run fine.

Beyond this, we couldn't figure out a way to identify other commands which could be applied on a solution. For example, Intel C++ Compiler integrates itself as a plugin to Visual Studio. We were wondering if we could figure out a way to identify the list of commands available to the solution object and then execute the appropriate command to convert the visual studio project to use Intel Compiler.

Is it possible to automate this conversion?

Thanks in advance.

0 投票
1 回答
965 浏览

visual-studio-addins - Visual Studio 2010 插件 - 未触发事件

我编写了一个将活动文档作为参数的插件。所以每次活动文档发生变化时,我都需要知道。为此,我想使用 DTE2 对象的“Events.DocumentEvents.DocumentOpened”事件。但问题是即使我更改了活动文档,事件也永远不会被触发。

代码片段如下

我也尝试过 DocumentEvents 但没有成功。有任何想法吗?

0 投票
1 回答
1713 浏览

c# - 未返回对通过 AddFromTemplate() 创建的项目项的引用

在成功创建表单的 Visual Studio 加载项中,但没有给我返回 EnvDTE 的 prjItem 实例的引用。

这是将表单添加到项目中的一段代码:

观察:“解决方案”是一个 EnvDTE80.Solution2 对象。

当然,我可以通过其他方式获得参考,例如 proj.ProjectItems.Item([index]) (循环并检查名称),但这不是我想要的方式,我需要这个参考向此表单添加控件。

难道我做错了什么?

0 投票
1 回答
414 浏览

c# - 当我只有对它的 EnvDTE 的引用时,向表单添加控件

我正在为 Visual Studio 2010 编写插件,我希望它在现有解决方案的现有项目中向现有表单添加控件,并且我已经引用了所有这些控件。

由于我有对代表表单文件的项目项的引用,因此我想要对表单本身的引用,然后我将能够对其执行任何操作(更改属性和添加控件)。

我尝试了一些方法,但我必须承认我还没有尝试过。但是由于这是一个非常有趣的主题,所以我决定写这个问题,而不是拐弯抹角,所以它对我来说会更快,并且会被注册以应对其他人未来的类似疑问。

总结:

我有:

我想拥有:

0 投票
1 回答
447 浏览

c# - 使用 EnvDTE 创建表单后不会保存

我创建了一个 Visual Studio 加载项,可将表单添加到打开的解决方案中的现有项目中。

这就是我创建表单的方式:

之后我可以成功获取对添加表单的 ProjectItem 的引用,然后我可以获得对 System.Windows.Forms.Form 的引用,通过这个引用我可以向表单添加一个按钮,如下所示:

然后按钮成功添加到表单中:

在此处输入图像描述

但是,当我尝试保存此表单时,它不会保存。我单击 Visual Studio 的 [save] 按钮,它只是没有变成灰色。即使我点击[全部保存],表格也不会被保存。然后我关闭 Visual Studio,重新打开它,然后打开我使用加载项向其中添加了新表单的项目,但新按钮根本不存在。只是一个空表格。

我什至尝试通过以下代码以编程方式保存项目和解决方案:

我认为这是因为我用来测试我的加载项的 Visual Studio 实例是一个调试实例,在我运行我的加载项后立即打开。但我尝试使用已安装的加载项(运行后自动保留),但问题仍然存在。


更新
我刚刚注意到两件事:

1)按钮只出现在窗体的设计上,其他地方都没有。它甚至不允许我选择它来查看它的属性。

它的名称不会出现在 Intellisense 中、对象列表中,甚至不会出现在表单的设计文档中。

作为测试,我手动添加了一个按钮,我可以选择这个按钮并与之交互:

在此处输入图像描述

我可以从中得到的是我没有正确添加按钮。

Then the new question regarding the button would be: How can I add a new button to a form created through EnvDTE in a way that I can interact with it in design time ?

2) While trying to see the differences from my funky button and my Manually added button, I’ve attempted something I hadn’t before with a programmatically created form: instantiate and run it.

And here's how I've done it:

It flashes on the screen (apparently with none of my two buttons), and the execution ends. Even if I try to do something on it’s Form_load, it’s executed, then the form flashes, and the execution is ended (the form is closed and debugging is over), as if I had called the Close() method.

Then the additional question would be: Did I skip a step while adding the form, or am I not creating it properly at all ?

0 投票
3 回答
1047 浏览

visual-studio - 将项目添加到宏中的错误列表

如果在执行宏期间出现问题,我想通知宏的用户。我想知道是否可以将项目添加到 Visual Studio 错误列表中?

可以在 AddIn 中执行此操作(如此),但我想从宏中执行相同的操作。

编辑


为了进一步阐明我想要实现的目标,这里是来自 Samples 宏库的示例(Alt+F8 -> Samples -> Utilities -> SaveView())

而不是 MsgBox("...") 警报,我想将错误放入 VS 错误列表中。

0 投票
1 回答
905 浏览

visual-studio - 使用 DTE 在 VS 中重建解决方案

最近我在使用 Visual Studio 2003 时遇到了问题,在运行了几次解决方案后,会出现这一次运行,它会告诉我很多对象丢失了……或者很多对象不可用,因为他们的范围。

此问题在重建后得到解决(无论项目是否更改,都会重建整个解决方案)。由于我经常为“重建解决方案”选项分配键盘快捷键,因此在此之后我可以毫无问题地运行该解决方案。

我现在想向前迈出一步,并在重建解决方案完成后自动运行解决方案。我尝试使用宏,但是在查看生成的代码后:

我意识到 ExecuteCommand 在启动Build.RebuildSolution命令后立即返回,因此DTE.Debuger.Go(False)无法执行,因为解决方案已经在构建中。

我需要的是一种让Debugger.Go()等待ExecuteCommand完成的方法,或者一种独特的方法来重建解决方案,其中下一行在重建完成之前不会执行。

0 投票
1 回答
6786 浏览

envdte - 什么是程序集 EnvDTE 8.0.0.0?

我在 VS 2010 中制作了一个小型控制台应用程序,我刚刚发布它并安装在另一台电脑上(Win XP Sp3)。安装程序让我更新了 .Net 框架,我这样做了,然后当我运行实际安装应用程序的第二部分时,我得到以下模式框:

无法安装或运行应用程序。该应用程序要求首先将程序集 EnvDTE 版本 8.0.0.0 安装在全局程序集缓存 (GAC) 中。

请联系您的系统管理员。

EnvDTE v8.0.0.0到底是什么????

这是一个小型应用程序,它对 api 进行小型网络调用并返回结果。我确实使用 Codesmith/Nettiers(包括企业库)生成的一些代码进行了数据库调用以进行选择和更新。这些文件虽然已经在应用程序中被引用。

任何想法如何解决或解决这个问题?

0 投票
1 回答
2575 浏览

visual-studio - 通过 DTE 获取项目 TargetPath 的宏值

我需要通过 DTE 获取项目程序集的绝对输出路径。我尝试使用此方法执行此操作,我将在其中访问 OutputPath 属性,将其与程序集名称结合起来,但这会产生相对路径,例如:

..\..\Output\AnyCPU\Debug\MyAssembly.dll

使用Path.GetFullPath对我不利,因为我的项目可能是从另一个位置执行的。

我注意到 $(TargetPath) 宏(在项目属性的 Build Events 选项卡中)包含程序集的完整路径。如何从 DTE 以编程方式访问此值?

实际问题是——如何获得项目的绝对输出路径?