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

C#创建一个程序集以供将来参考,c#,visual-studio,assemblies,C#,Visual Studio,Assemblies,我正在尝试重建和创建一个程序集,我可以在VisualStudio的未来项目中引用它 但是,在从提供的源代码生成并将生成的zlib.net.dll移动到C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblys之后,虽然我确实可以将zlib.net引用添加到新项目中,但我没有任何对底层对象的访问权限 我相信我在zlib.net.dll项目设置文件中缺少一些重要的配置,因此我可以生成一个程序集,其他项目可以在设计时

我正在尝试重建和创建一个程序集,我可以在VisualStudio的未来项目中引用它

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

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

你能帮忙吗

更新:

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

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

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

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

您不应该向PublicAssemblys文件夹添加任何内容

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


如果你有源代码管理中的解决方案,你会希望将DLL复制到当前的解决方案层次结构中,并从那里引用它-你不想强迫每个人都有一些特定的非源代码管理文件夹来构建一个源代码管理的项目。

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

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

using ZLib.SomeNameSpace;
首先将代码文件。然后您应该能够访问该类,例如:

Archive myArchive = new Archive();

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


这里有几个步骤,是一个简短的教程。这里有一些细微的细节,但我链接到的示例应该会让您振作起来

相关课程确实是公开的,弗雷德里克。除了在项目配置文件中将程序集的目标从2.0更改为.NET3.5之外,我没有对源代码进行任何更改。-1:我假设他所说的程序集已经可以正常使用了。他正在询问将二进制文件放置在何处,以便多个项目可以引用它。感谢您的提示。我会确保从现在开始这样做(就像我刚才做的那样)。但是,正如你可能怀疑的那样,这并没有解决问题。我从来没有想到在这之后它会不起作用,因为从你上面发布的有限信息来看,这是唯一有意义的问题。您收到了什么错误消息(您没有提到它们)?添加新的zlib.net.dll后,我收到“错误1:找不到类型或命名空间名称'ZStream'(您是否缺少using指令或程序集引用?)。如果我使用提供的dll而不是从源代码构建的dll,则不会发生这种情况code@Krugar当前位置我只做了以下操作,效果很好。1) 下载zlib.net源代码。2) 打开项目并生成。3) 将输出zlib.net.dll复制到我的项目中的C:\dev.4),添加引用>浏览>选择zlib.net.dll。5) 在我想要使用ZStream的文件中,使用ComponentAce.Compression.Libs.zlib添加
6)运行良好。实际上,这一次它运行良好。我不明白。也许我做了一些我不知道的改变。但是,从一开始就重复所有的事情,现在就起作用了。谢谢。我已经完成了一个发布版签名的构建,并且确实已经将它添加到了GAC中。但是GAC只关心运行时程序集。这个问题是关于设计时程序集的。我有适当的分配。我知道这一点,因为我实际上不是为它编写代码,而是重用提供的演示项目,当我将当前的zlib.net程序集引用替换为我刚刚构建的程序集引用时,这些项目失败了。(更新我的问题)