Visual Studio - 如何从 'using' 语句中查找引用?

5
背景:我正在学习一种新的商业3D WPF图形库,有很多已经构建好的代码可以作为示例。现在,我正在尝试使用该库从头编写自己的代码。在生成的(mainwindow.g.cs)文件中的"using"语句中出现了编译错误,类型为"(您是否缺少程序集引用?)"。 我的问题:由于我有很多可供参考的工作示例,所以在Visual Studio 2013中是否有办法检查一个示例中的"using"语句,以查看需要解决它的引用是什么?换句话说,如果'using'语句是这样的:
using Ab3d.DXEngine.Wpf.Samples.Controls;

有没有办法查看工作范例中必须“添加参考”以解决它的内容?

2
你尝试过在命名空间的“控件”部分上右键单击,然后选择“转到定义”吗?这在工作示例中。 - ChrisF
如果您在项目中未引用程序集中的某个命名空间,我怀疑您是否可以神奇地找到此程序集,因为通常程序集名称和命名空间名称彼此无关。当然,像Resharper这样的工具可以帮助您解决这个问题(因为它们知道您在其他项目中使用的一些dll,并且可以扫描它们以查找命名空间)。 - Evk
@ChrisF 那样做不行,因为该命名空间可能会被引用到他当前的工程和其他程序集中,应该归属于哪个定义呢? - Dispersia
1
@Dispersia。没错,这也是我在评论中提出它作为一个问题的原因之一。这不是解决方案,但可能提供更多信息,从而导致解决方案的出现。 - ChrisF
@ChrisF 如果我选择整个字符串或仅选择“controls”部分,“转到定义”将变为灰色,但“查看定义”则不会变为灰色。但它并没有做太多事情 - 也就是说,“peak”弹出的通常窗口并没有出现,但它确实突出了整个字符串,好像“using”语句就是定义。 - user316117
1个回答

4

最简单的方法是在您的代码中添加一个变量,然后右键单击该变量类型-> Peek Definition,在顶部它将显示该命名空间来自哪个程序集。 (由于相同的命名空间可能跨越多个程序集)


该using语句仅出现在一个生成的文件中,即mainwindow**.g**.cs,也就是我不允许编辑的文件。该using语句实际上从未出现在任何示例代码的使用源代码中。编译器显然将其放在那里,因为它在XAML中的xmlns中被引用。这也是为什么我不能只注释掉using语句以查看谁在访问它并尝试您在该行代码上的想法,尽管我怀疑如果我这样做,它会说“定义”是“using”语句本身,基于当我尝试了ChrisF的建议时发生的情况。 - user316117
只需将在XAML中引用的控件添加到代码中,那么任何您可以在XAML中引用的内容也可以在代码中引用(或者查看是否可以在XAML中查看定义,我的意思是您应该能够)。 - Dispersia
这只是一个命名空间(xmlns)- 在XAML中没有任何东西实际上被引用,事实上,我通过从XAML中删除xmlns行来解决了即时问题,并且一切都建立得很好,因为编译器不再感到有必要将该“使用”添加到生成的“.g”文件中。但我只是希望利用这种情况来解决更广泛的“如何确定哪个程序集/ DLL与哪个'using'语句配对?”问题。 - user316117
@user316117 你确定它实际上没有被引用吗?如果将其设置为该页面的默认值,则可能会覆盖,但如果没有,请不要在新应用程序中包含它。 - Dispersia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接