我的C#和DLL数据问题

时间:2010-04-15 16:03:08

标签: c# asp.net visual-studio-2010 dll

我正在尝试查看是否可以从DLL中提取数据。我做了一些研究,发现你可以在DLL中存储应用程序资源。我找不到的是告诉我如何做到这一点的信息。有一篇MS文章解释了如何访问卫星DLL中的资源,但老实说我不知道​​这是否是我正在寻找的。 http://msdn.microsoft.com/en-us/library/ms165653.aspx我确实尝试了一些涉及的代码,但有一些“FileNotFoundExceptions”正在进行。

其余的DLL信息显示:类,对象等。我刚刚在我的Visual Studio项目中添加了DLL作为资源,并添加了“using”。如果有可能的话,我只是不知道如何理解它。

4 个答案:

答案 0 :(得分:1)

如果dll是.net,则可以使用反射。

Using System.Reflection;

....
Assembly A= Assembly.LoadFrom(YouDllFileName);

string[] STA;

STA= A.GetManifestResourceNames();

// STA contains all the resource names in the dll
...
// to extract them
Stream str= A.GetManifestResourceStream(STA[I]);

// then, you can make that stream became a file if you wish

您还可以使用ildasm

提取.net程序集资源

答案 1 :(得分:0)

根据你的描述,我不完全确定你可能会遇到什么,但是有几个一般的指示......

如果您要查找的是您已添加到项目中的文件,请执行以下操作:

右键单击解决方案资源管理器中的资源,点击属性并将“构建操作”设置为“嵌入式资源”。

对于字符串和图标,将.resx文件添加到项目中并将其插入其中。如果这就是您正在做的并且仍然遇到问题,请检查构建操作。

答案 2 :(得分:0)

由于您说您可以在using指令中添加DLL,因此您可以使用DLL公开的方法。如果您没有DLL的文档,那么您可能只需尝试使用对象浏览器来查看它提供的内容。

假设:

using MyDll;

你应该能够调用这样的方法:

string x = MyDll.SomeType.GetValue();

是你问的那个?

答案 3 :(得分:0)

有两种类型的dll。

  • 管理dll - 用任何.net语言编写的dll(如csharp)
    您提供的链接正在使用托管dll。
  • unmanaged dll - classic c / cpp dll。
    在这种情况下,您需要在托管(您的代码)和非托管之间进行链接。

要查找您的dll类型,您需要添加此dll作为参考。
在visual studio open项目中,右键单击引用(在解决方案资源管理器中) 然后“添加参考” - >浏览 - >添加你的DLL。
然后在参考文献中,你可以看到你的dll 右键单击他,然后在对象浏览中添加视图 如果在命名空间“b”中看到类似“c”的内容,则使用托管dll 在对象浏览器中,您可以了解很多关于您的dll(可能这比仅提取资源更重要)

此时你可以按照“Daniel Dolz”的方式回答你。