C#创建程序集以供将来参考

时间:2009-12-11 18:45:21

标签: c# visual-studio assemblies

我正在尝试重建zlib.net并创建一个我可以在Visual Studio中的未来项目中引用的程序集。

但是,在使用提供的源代码构建并将生成的zlib.net.dll移动到C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies之后,虽然我确实可以将zlib.net引用添加到新项目,但我没有任何访问权限基础对象。

我相信我在zlib.net.dll项目设置文件中缺少一些重要的配置,所以我可以生成一个可以在设计时由其他项目引用的程序集。我只是不确定哪一个。

你能帮忙吗?

更新
请注意,我正在使用zlib.net(上面的链接)自己提供的演示来测试生成的程序集。当我使用提供的zlib.net.dll时,一切正常。当我使用我从源代码构建的那个时,它失败了。

4 个答案:

答案 0 :(得分:2)

您不应该需要向PublicAssemblies文件夹添加内容。

将程序集放在开发文件夹层次结构中的某个位置(可能是C:\dev\Reference\zlib.net\zlib.net.dll)。如果要添加引用,请单击“浏览”并在dev文件夹中找到该程序集。然后单击解决方案资源管理器中的引用,并打开“属性”窗格。确保将Copy Local设置为true。

如果您的源代码控制中有解决方案,则需要将DLL复制到当前的解决方案层次结构并从那里引用它 - 您不希望强制每个人都拥有某个特定的非源代码控制文件夹建立一个源控制项目。

答案 1 :(得分:0)

你是什么意思,你无法访问底层对象? 你的意思是你不能从你在该程序集中定义的类中实例化对象吗?

如果是这样,您确定这些类是“公共”(具有公共访问修饰符)吗? 当您添加新类时,VS.NET可能不会向您的类定义添加访问说明符,因此将使用默认访问说明符。 在这种情况下,这意味着使用“内部”访问说明符。 (默认情况下,类是内部的)。 然后,这可以解释为什么你不能从这些类中实例化对象,因为“内部”类(或方法,或其他)只能在它们被声明的程序集中可见。

解决方案:在您希望在该程序集之外“可见”的类上指定“公共”访问修饰符。

答案 2 :(得分:0)

弗雷德里克的建议是我要检查的第一件事。您无法访问外部程序集中非公共的类或类成员。

如果它们已设置为public,请确保为要访问的类的名称空间使用正确的using语句。因此,如果您想访问ZLib.SomeNameSpace.Archive类,请确保您使用全名引用它,或者添加

using ZLib.SomeNameSpace;

首先到代码文件。然后您应该能够访问该类,例如:

Archive myArchive = new Archive();

答案 3 :(得分:0)

假设您的所有课程都是公开的,您是否已签署并将其添加到GAC?

要完成几个步骤,here是一个简短的教程。有一些琐碎的细节,但我链接到的例子应该让你起来。