.NET项目引用:如何通过引用的项目引用dll?

4
希望我理解得没错:
我有一个项目
Projects.Client

我有自己的类库(基础设施工具,我经常使用它们)

Library

假设这两个项目都存在,我该如何从“Projects.Client”类中完成这一操作?
using Library;

public class xxx
{
    public void DoSomething()
    {
        Library.SomeDll.DoSomething();
    }
}

“Library”项目中引用了SomeDll.dll。 “Library”是最终客户端项目“Projects.Client”的引用。

我知道我可以简单地将SomeDll添加到“Projects.Client”项目中,但是有许多项目我一直在使用。 我想能够包含“Library”,并以某种方式引用其中的所有内容(包括原始代码和dll)。 这可能吗?

请注意:我不想为所有方法编写明确的包装器,而且dll是静态的,因此我似乎无法在“Library”项目中做到这一点:

public static class WrapSomeDll
{
    public static extern SomeDll Dll();
}

欢迎提供任何有创意的答案,也许我甚至不需要双重引用、包装等。


1
库是托管程序集还是非托管的 DLL? - Cat Zimmermann
抱歉,我应该提到它是受管理的。 - 5x1llz
所以Library引用了许多DLL,您希望Projects.Client自动引用它们。由Library引用的任何公开暴露的类型都需要将其父程序集添加到Projects.Client项目中。这是无法避免的。您需要隐藏这些类型。 - Cat Zimmermann
2个回答

2

对不起,那样行不通。您需要在Project.Client中引用SomeDll才能使用其元数据。就是这么简单。

请记住,引用不仅仅是解析符号到地址的问题。这涉及到将元数据(类型)复制过来以便使用。


谢谢,但我希望有一种方法可以做到这一点,这样我就不必在每个项目中都重新导入相同的引用了。 - 5x1llz
尝试在进行“添加引用”操作时录制宏。如果这不起作用,获取Visual Studio SDK并学习足够的知识以了解如何向项目添加引用。否则,创建自己的项目模板,其中已经包含了所需的引用。 - John Saunders

0

你只需要引用项目并添加 using 子句来使用你想要的命名空间。无需指定 DLL 的名称。


不幸的是,它不起作用,这就是我自己的假设。当我使用时,它不会自动连接引用项目中的所有命名空间。因此,DLL 在另一个项目中。如果我只引用该项目,如何使用 using 语句访问“子”DLL? - 5x1llz
我不明白你的意思... "using" 不用于引用 DLL,只用于在代码文件中导入命名空间。 - Thomas Levesque

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