问题标签 [extensibility]

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 投票
6 回答
3075 浏览

添加插件功能的建议?

是否有将可扩展性功能编程到代码中的通用过程?

我想知道为您正在编写的系统添加扩展类型功能的一般过程是什么,以便可以通过某种插件 API 扩展功能,而不必修改系统的核心代码。

这些事情是否往往取决于系统编写的语言,或者是否有允许这样做的通用方法?

0 投票
2 回答
2458 浏览

如何扩展项目属性页面?

是否可以在 Visual Studio 2008 的项目属性页面中添加自定义选项卡?我想要做的是能够为从默认项目模板(WPF 应用程序、WPF 自定义控件库等)创建的项目添加一个自定义选项卡到属性页面。

0 投票
4 回答
1462 浏览

如何在 Visual Studio 中分别在不同文件夹/项目中运行(单元)测试?

Visual Studio 文件夹结构

我需要一些关于如何在 Visual Studio 中轻松分离单元测试和集成测试的测试运行的建议。通常,或总是,我按照上图所示构建解决方案:单元测试和集成测试的单独项目。单元测试运行非常频繁,而集成测试自然会在上下文正确对齐时运行。

我的目标是在我使用键盘快捷键时能够以某种方式配置要运行的测试(或测试文件夹)。测试最好由图形测试运行程序 (ReSharpers) 运行。所以例如

  • Alt+1 在项目 BLL.Test 中运行测试,
  • Alt+2 在项目 DAL.Tests 中运行测试,
  • Alt+3 同时运行它们(即 [Tests] 文件夹中的所有测试,以及
  • Alt+4 运行文件夹 [Tests.Integration] 中的测试。

TestDriven.net 可以选择只运行所选文件夹或项目中的测试,方法是右键单击它并选择 Run Test(s)。能够做到这一点,但通过键盘命令和图形测试运行器会很棒。

TestDriven.net 测试运行输出

目前我使用 VS2008、ReSharper 4 和 nUnit。但是,一般设置的建议当然也值得赞赏。

0 投票
8 回答
14545 浏览

如何在 .NET 中加载插件?

我想提供一些在我的软件中创建动态可加载插件的方法。执行此操作的典型方法是使用LoadLibrary WinAPI 函数加载 dll 并调用GetProcAddress以获取指向该 dll 内函数的指针。

我的问题是如何在 C#/.Net 应用程序中动态加载插件?

0 投票
4 回答
4322 浏览

Visual Studio 2008 中用于帮助本地化的工具

有没有人有任何工具建议可以帮助将文字值移动到资源文件中以进行本地化?

我使用了一个名为 RGreatX 的 resharper 插件,但想知道是否还有其他东西。

这是一个漫长的手动移动字符串的过程,并且认为必须有更好的方法!RGreatX 还可以,但我觉得可能有点滑。

0 投票
2 回答
2073 浏览

Visual Studio 隔离外壳中的源代码管理

我正在开发一个独立的 Shell,以迎合使用 Shell 执行特定任务的“设计师/特殊内容创建者”。当他们对文件进行操作时,他们需要能够使用 TFS 进行源代码控制。这主要是因为开发人员还将使用 Visual Studio 2008 对 TFS 中的相同文件进行操作。

在查找和搜索之后,我仍然找不到可供 Shell 使用的 Team Explorer。在 MSDN 论坛上询问,让我得到“隔离外壳中尚不支持此功能”的答案。好吧,如果你想为你的文件使用源代码控制系统,那么放弃 shell 的全部意义是不合理的。这个想法不是使用 TFS 提供程序 API 重新创建所有内容并开发工具窗口等。

Keyven Nayyeri的Visual Studio 可扩展性一书有一个示例,仅涉及添加 sc 提供程序的问题。

有没有人致力于开发Visual Studio 2008 隔离 Shell应用程序/环境?请提供评论、问题 - 除了我已经参与的以下主题之外,您必须分享的任何内容。

来自 MSDN 论坛的主题:


感谢您的回答。是的,您是对的,我们将为用户获取 CAL,而无需购买 Visual Studio,这就是我们将要采取的方向。

但是我还没有弄清楚如何在 Shell 内使 Team Explorer 可供此类用户使用。因此,我正在寻找如何做到这一点的技术细节。

我的意思是,我有一个用户,他安装了我的 VS Shell 应用程序,他的机器上没有 VStudio Team 系统。现在如果我获得 CAL for TFS 并安装 Team Explorer,你认为它会自动在 VS Shell 应用程序中可用吗?

有任何想法吗?你有没有努力做到这一点?

谢谢

0 投票
5 回答
4392 浏览

Visual Studio 可扩展性:将现有文件夹添加到项目

我正在尝试使用 Visual Studio 2008 的可扩展性来编写一个插件,该插件将在解析界面后创建一个包含各种消息的项目文件夹。但是,我在创建/添加文件夹的步骤中遇到了麻烦。我试过使用

(项目是我的目标文件,我正在旁边创建一个同名但附加了“消息”的文件夹)但是当文件夹已经存在时它会阻塞(不足为奇)。

如果它已经存在,我尝试将其删除,例如:

我可以看到该文件夹​​在调试时被删除,但它似乎仍然认为该文件夹仍然存在并且死在一个文件夹已经存在异常。

有任何想法吗???

谢谢。

AK

....也许答案在于删除后以编程方式刷新项目?如何做到这一点?

0 投票
2 回答
324 浏览

实施“产品开发工作流程(过程)”的最佳模式/解决方案是什么?

展示:

目前,产品开发是在 Visual Studio 中使用 .Net 技术完成的,因此使用同一组工具很重要。除了开发人员之外,其他角色正在使用电子表格、文档和图表工具、photoshop 来完成他们的工作。

未来:

我们希望为产品开发构建工作流(具有角色的顺序流程、操作项队列、将信息从一个角色传递到另一个角色、批准等)。软件产品将永远处于增强阶段,更有理由建立这个流程。

典型的用户是设计人员、业务分析师、内容创建者、开发人员、代码审查人员、测试人员。

假设需要开发一个新网页。这将是,

  1. 由分析人员在工具中考虑,将以某种格式输入信息
  2. 设计师将使用拖放来构建页面外观,将其传递给
  3. 内容创建者,将内容(帮助文本、超链接、纯文本等)添加到页面
  4. 开发人员将检查他的队列以开始围绕此页面构建逻辑并使其正常运行。

我正在考虑将 Visual Studio 隔离 shell 用作工具框架,主要是因为它的 IDE 功能等来构建它。有没有人处理过类似的要求?关于如何在 VS Shell 范式中解决这个问题的任何模式/解决方案/想法?

更新:开发人员和测试人员已经在使用 Visual Studio Team System,但 TFS 中没有为他们(以及分析师、设计师等)定制的工作流程。此外,Visual Studio 不适合想要做以下事情的非开发用户 - 定义导航流程、设计页面元素等。

0 投票
6 回答
1283 浏览

存储数据的最佳(免费)方式?更新文件系统怎么样?

我对如何解决这个问题有一个想法,但我想知道是否有更容易和更可扩展的东西来解决我的问题。

我正在开发的程序有两种基本形式的数据:图像,以及与这些图像相关的信息。与图像相关的信息以前存储在一个极其简单的 JET 数据库(四个表)中,结果证明存储的字段既慢又不完整。我们正在转向数据存储的新实施。考虑到所涉及的数据结构的简单性,我认为数据库是多余的。

每张图像都有自己的信息(捕获参数),将是一组相互关联的图像的一部分(例如,在相同的 30 分钟内拍摄),然后是整个更大组的一部分(拍摄同一个人) )。现在,我将人员存储在具有唯一标识符的字典中。然后每个人都有一个不同图片组的列表,每个图片组都有一个图片列表。所有这些类都是可序列化的,我只是对字典进行序列化和反序列化。相当简单的东西。图像是分开存储的,因此字典的大小不会变成天文数字。

问题是:当我需要添加新的信息字段时会发生什么?有没有一种简单的方法来设置这些数据结构以考虑未来的潜在修订?过去,我在 C 中处理此问题的方式是创建一个具有大量空字节(至少为 ak)的可序列化结构,以供将来扩展,结构中的一个字节指示版本。然后,当程序读取结构时,它会根据大量的 switch 语句知道要使用哪种反序列化(旧版本可以读取新数据,因为无关数据只会进入被忽略的字段)。

C# 中是否存在这样的方案?就像,如果我有一个类是一组 String 和 Int 对象,然后我将另一个 String 对象添加到结构中,我如何从磁盘反序列化一个对象,然后将字符串添加到它?我是否需要让自己拥有多个版本的数据类,以及一个采用反序列化流并根据存储在基类中的一些版本信息处理反序列化的工厂?还是像 Dictionary 这样的类非常适合存储此类信息,因为它会自动反序列化磁盘上的所有字段,并且如果添加了新字段,我可以捕获异常并用空白字符串和整数替换这些值?

如果我使用字典方法,是否存在与文件读/写以及参数检索时间相关的速度影响?我认为如果一个类中只有字段,那么字段检索是即时的,但在字典中,与该类相关的一些小开销。

谢谢!

0 投票
6 回答
447 浏览

易于扩展 C 的 IDE

我想要一个用于Linux中 C的简单 IDE/编辑器,我可以轻松地向其中添加功能。例如:我想为编辑器添加一个右键菜单项和相关操作。它应该易于扩展和添加任何所需的功能。我尝试了 eclipse CDT,但它需要学习很多东西(我的意思是知道 eclipse 插件架构和 CDT 扩展点和东西)来做我想做的小修改。

谢谢,萨钦