【问题标题】:Problem accessing namespace in Visual Studio 2010 add-in在 Visual Studio 2010 加载项中访问命名空间时出现问题
【发布时间】:2011-10-23 11:13:52
【问题描述】:

我的任务是把一个预先存在的项目变成一个插件。当前项目是一个类库。在加载项中,我添加了 CL 项目作为参考。在加载项的 Connect 类的 Exec 方法中,我尝试添加以下代码以打开 CL 的入口点:

var form = new CLNameSpace.MainForm();
form.Show();

CLNameSpace(本文重命名)是从 CL 项目中引用的命名空间。它也在代码顶部的using 块中。我尝试了this answer 的方法来获取完全限定名,它是正确的。我没有收到任何构建或运行时错误,但出了点问题。使用即时窗口手动实例化上面的两行,我收到以下错误消息:

类型或命名空间名称“CLNameSpace”在此范围内无效

如何解决这个命名空间可见性问题?我想知道这是否是 CLNameSpace 中的某种配置(如果可能的话。)

【问题讨论】:

  • 你是如何导入命名空间的?
  • @0xA3 在解决方案管理器中右键单击项目,单击添加引用,然后使用 CLNameSpace 选择项目。由于这产生了问题,我尝试添加对该项目的输出 DLL 的引用。 Intellisense 现在会拾取该命名空间内的所有内容,但我仍然收到无效命名空间错误。
  • 抱歉,我指的是实际的 using 声明。你能展示你的代码吗?
  • @0xA3 我想知道 CLNameSpace 是否会更准确地表示为 A.B.CLNameSpace - 它位于底层。 using System; using Extensibility; using EnvDTE; using EnvDTE80; using Microsoft.VisualStudio.CommandBars; using System.Resources; using System.Reflection; using System.Globalization; using System.Windows.Forms; using System.Collections.Generic; using A.B.CLNameSpace;
  • 那么在创建表单实例时只需删除CLNameSpace 部分:var form = new MainForm();

标签: c# visual-studio-2010 namespaces add-in


【解决方案1】:

你可能不得不这样做:

var form = new CLNameSpace.MainForm();
form.Show();

请注意,Application.Run 将启动标准应用程序消息循环 - 但您的主应用程序已经有一个消息循环,因此尝试启动另一个消息循环不会产生任何有意义的结果。

【讨论】:

  • 首先,你是对的。我在另一个解决方案中尝试了一个测试并且有效。我放置了一个断点并使用即时窗口手动声明它 - 它告诉我“类型或命名空间名称 'CLNameSpace' 在此范围内无效。”我已经正确引用了它,并且在该代码块中有一个using CLNameSpace; 语句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多