c# – Winforms designer:可以以编程方式实现项目变量?

我正在使用C# Winforms,.net 4.0,我正在设计一些设计时组件.我的目标是让设计人员查找驻留的特定文件(项目目录或输出目录).

反正我是否从代码中找到以下变量的值?

(outpath中)
(PROJECTDIR)

解决方法

好吧,如果你可以访问代表你的Visual Studio实例的EnvDTE80.DTE2,那就不那么困难了.事实上,如果dte是你的DTE2实例,它就像下面这样简单:

foreach (Project prj in dte.solution.Projects)
                {
                    MessageBox.Show(Path.GetDirectoryName(prj.FullName));
                    MessageBox.Show(prj.ConfigurationManager.ActiveConfiguration.Properties.Item("OutputPath").Value.ToString());
                }

如果您正在编写外接程序,那么获取DTE2对象很容易,因为它是传递给OnConnection的第一个参数(外接程序项目的向导会自动编写将其放在Connect类的_applicationObject变量中的代码).

如果您只有组件,则可以获取Site属性,该属性实现ISite,它来自IServiceProvider,并要求它获取DTE2.如果compo是你的组件:

dte = (DTE2)compo.Site.GetService(typeof(DTE2));

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...